~目次~

コード一覧 (操作系)

アプリケーションの表示/非表示

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Application.Visible = True / Application.Visible = False
Application.Visible = True / Application.Visible = False
Application.Visible = True / Application.Visible = False

ブックの保存(上書き・新規)

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
ActiveWorkbook.save Activeworkbook.saveAs Filename:=XX,_ FileFormat:=xlopenXMLWorkbook,Password:="XXX",_ ReadOnlyRecommended:=False,CreateBackup:=False
ActiveWorkbook.save Activeworkbook.saveAs Filename:=XX,_ FileFormat:=xlopenXMLWorkbook,Password:="XXX",_ ReadOnlyRecommended:=False,CreateBackup:=False
ActiveWorkbook.save Activeworkbook.saveAs Filename:=XX,_ FileFormat:=xlopenXMLWorkbook,Password:="XXX",_ ReadOnlyRecommended:=False,CreateBackup:=False

ブックを閉じる

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
ActiveWorkbook.Close /Windows(ファイル名).Close
ActiveWorkbook.Close /Windows(ファイル名).Close
ActiveWorkbook.Close /Windows(ファイル名).Close

ブックの保護・解除

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
ActiveWorkbook.Protect Structure:=True,Windows:=False,Password:="XXX" ActiveWorkbook.Unprotect Password:="XXX"
ActiveWorkbook.Protect Structure:=True,Windows:=False,Password:="XXX" ActiveWorkbook.Unprotect Password:="XXX"
ActiveWorkbook.Protect Structure:=True,Windows:=False,Password:="XXX" ActiveWorkbook.Unprotect Password:="XXX"

ワークシートの表示・非表示

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Worksheets("XXX").Visible=True / False
Worksheets("XXX").Visible=True / False
Worksheets("XXX").Visible=True / False

警告の表示・非表示

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Application.DisplayAlerts=False / True
Application.DisplayAlerts=False / True
Application.DisplayAlerts=False / True

画面更新のオン・オフ

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Application.ScreenUpdating=False / True
Application.ScreenUpdating=False / True
Application.ScreenUpdating=False / True

印刷ダイアログ

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Application.Dialogs(xlDialogPrinterSetup).Show
Application.Dialogs(xlDialogPrinterSetup).Show
Application.Dialogs(xlDialogPrinterSetup).Show

印刷(アクティブシートの印刷)

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
ActiveSheet.PrintOut
ActiveSheet.PrintOut
ActiveSheet.PrintOut

印刷(選択シートの印刷:previewあり)

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Sheets("XXX").PrintPreView
Sheets("XXX").PrintPreView
Sheets("XXX").PrintPreView

ファイルダイアログの表示

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
With Application.FileDialog(msoFileDialogFilePicker)
if.show = True Then
XXX=.SelectedItems(1)
End if
End With
With Application.FileDialog(msoFileDialogFilePicker) if.show = True Then XXX=.SelectedItems(1) End if End With
With Application.FileDialog(msoFileDialogFilePicker)

 if.show = True Then

  XXX=.SelectedItems(1)

 End if

End With

フォルダダイアログの表示

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
With Application.FileDialog(msoFileDialogFolderPicker)
if.show = True
Then XXX=.SelectedItems(1)
End if
End With
With Application.FileDialog(msoFileDialogFolderPicker) if.show = True Then XXX=.SelectedItems(1) End if End With
With Application.FileDialog(msoFileDialogFolderPicker)

 if.show = True

  Then XXX=.SelectedItems(1)

 End if

End With

同じファイルが同じディレクトリにないか確認

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
If Dir(そのファイルのディレクトリ)<>"" Then
ある場合
Else
ない場合
End if
If Dir(そのファイルのディレクトリ)<>"" Then ある場合 Else ない場合 End if
If Dir(そのファイルのディレクトリ)<>"" Then

 ある場合

Else

 ない場合

End if

エクセル関数を利用する

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Appplication.WorksheetFunction.関数≪Round,Rounddown,Roundup,CountAなど≫
Appplication.WorksheetFunction.関数≪Round,Rounddown,Roundup,CountAなど≫
Appplication.WorksheetFunction.関数≪Round,Rounddown,Roundup,CountAなど≫

セルにコメントを入れる

Range()のときとの違いに注意!

addコメントはすでにコメントがあるとエラーになるので事前に.Clearcommentsで消して追加するようにしましょう。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
with cells( , )
.Addcomment
.Comment.Visible = False
.Comment.Text = Text:=""
End with
with cells( , ) .Addcomment .Comment.Visible = False .Comment.Text = Text:="" End with
with cells( , )
 .Addcomment
 .Comment.Visible = False
 .Comment.Text = Text:=""
End with

複数シートの選択

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Sheets(Array("シート名A","シート名B")).Select
Sheets(Array("シート名A","シート名B")).Select
Sheets(Array("シート名A","シート名B")).Select

アドインのツールバー追加(プロジェクトのPWロックをした状態でツールバーに表示が可能)

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Private Sub Workbook_AddinInstall()
Dim A As CommandBar
Set A = Application.CommandBars("Worksheet Menu Bar")
Application.CommandBars.add(["Worksheet Menu Bar",,,FALSE])FALSEを指定するとエクセルを閉じても消えません。
Dim B As CommandBarControl
Set B=A.Controls.Add(Type:=msoControlButton)
B.Style = 3 (←1:アイコンのみ 2:テキストのみ 3:両方)
B.Caption = "何かテキスト"
B.TooltipText = ""  ←アイコンの説明
B.FaceId = 数字 標準アイコンのIDを入力
B.OnAction = "XXXX" ←起動する標準モジュール名を記入
End Sub
Private Sub Workbook_AddinInstall() Dim A As CommandBar Set A = Application.CommandBars("Worksheet Menu Bar") Application.CommandBars.add(["Worksheet Menu Bar",,,FALSE])←FALSEを指定するとエクセルを閉じても消えません。 Dim B As CommandBarControl Set B=A.Controls.Add(Type:=msoControlButton) B.Style = 3 (←1:アイコンのみ 2:テキストのみ 3:両方) B.Caption = "何かテキスト" B.TooltipText = ""  ←アイコンの説明 B.FaceId = 数字 標準アイコンのIDを入力 B.OnAction = "XXXX" ←起動する標準モジュール名を記入 End Sub
Private Sub Workbook_AddinInstall()

 Dim A As CommandBar

  Set A = Application.CommandBars("Worksheet Menu Bar")

  Application.CommandBars.add(["Worksheet Menu Bar",,,FALSE])←FALSEを指定するとエクセルを閉じても消えません。

  Dim B As CommandBarControl

   Set B=A.Controls.Add(Type:=msoControlButton)

    B.Style = 3 (←1:アイコンのみ 2:テキストのみ 3:両方)

    B.Caption = "何かテキスト"

    B.TooltipText = ""  ←アイコンの説明

    B.FaceId = 数字 標準アイコンのIDを入力

    B.OnAction = "XXXX" ←起動する標準モジュール名を記入

 End Sub

次にブックを閉じるときにアイコンを削除する処理を行います。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim A As CommandBar
Set A = Application.CommandBars("Worksheet Menu Bar")
Dim B As CommandBarControl
Set B = A.Controls.Add(Type:=msoControlButton)
For Each B In A.Controls
B.Delete
Next B
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean) Dim A As CommandBar Set A = Application.CommandBars("Worksheet Menu Bar") Dim B As CommandBarControl Set B = A.Controls.Add(Type:=msoControlButton) For Each B In A.Controls B.Delete Next B End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)

 Dim A As CommandBar

  Set A = Application.CommandBars("Worksheet Menu Bar")

 Dim B As CommandBarControl

  Set B = A.Controls.Add(Type:=msoControlButton)

  For Each B In A.Controls

    B.Delete

  Next B

End Sub

最後に、ブックを開いたときにアイコン表示のコードを呼び出すように以下の処理を行います。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Private Sub Workbook_Open()
Call Workbook_AddinInstall
End Sub
Private Sub Workbook_Open() Call Workbook_AddinInstall End Sub
Private Sub Workbook_Open()
 Call Workbook_AddinInstall
End Sub

あとは標準モジュールで以下を記載すればフォームが開く

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Sub XXXX()
UserForm1.Show
End Sub  
Sub XXXX() UserForm1.Show End Sub  
Sub XXXX()
 UserForm1.Show
End Sub  

アドイン化して配布すればツールバーにアイコンができて、

それを押すだけでユーザーフォームやマクロが実行可能に。

別のフォームに値を渡す

userform1の中で以下を指定します。  

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
userform2.label="ABC"
userform2.show
userform2.label="ABC" userform2.show
  userform2.label="ABC"

  userform2.show

別のモジュールに値を渡す

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Dim X as 型
Call A(X) Aのプロシージャを呼び出す際にXの値を渡します。
・・・
Sub A(ByVal X as 型)  元の変数の値を変更しない値渡し。
・・・
Sub A(ByRef X as 型)  元の変数の値を変更する。参照渡し 。
Dim X as 型 Call A(X) Aのプロシージャを呼び出す際にXの値を渡します。 ・・・ Sub A(ByVal X as 型)  元の変数の値を変更しない値渡し。 ・・・ Sub A(ByRef X as 型)  元の変数の値を変更する。参照渡し 。
Dim X as 型

Call A(X) Aのプロシージャを呼び出す際にXの値を渡します。

・・・

Sub A(ByVal X as 型)  元の変数の値を変更しない値渡し。

・・・

Sub A(ByRef  X  as 型)  元の変数の値を変更する。参照渡し 。

コード一覧 (処理系)

エラー発生時の防止処理

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
On error GoTo X
/////コード
Exit Sub
X:  ←ここに飛びます
End Sub
処理無効(中断) On error GoTo 0
処理無視継続 On error Resume Next
On error GoTo X /////コード Exit Sub X:  ←ここに飛びます End Sub 処理無効(中断) On error GoTo 0 処理無視継続 On error Resume Next
On error GoTo X

/////コード

Exit Sub

X:  ←ここに飛びます

End Sub

処理無効(中断) On error GoTo 0

処理無視継続 On error Resume Next

処理待ち時間を発生させる

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
待 = DateAdd("S",50,Now())
Do While
Now()< 待  
DoEvents  
Loop
待 = DateAdd("S",50,Now()) Do While Now()< 待   DoEvents   Loop
待 = DateAdd("S",50,Now())

Do While

Now()< 待  

DoEvents  

Loop

乱数を一定の範囲で生成する

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Randomize ←この文字でクリア(ルーレットスタートのイメージ)
乱数=Int((50 -1 +1 )*Rnd +1)#1から50の間の数字
Randomize ←この文字でクリア(ルーレットスタートのイメージ) 乱数=Int((50 -1 +1 )*Rnd +1) →#1から50の間の数字
Randomize   ←この文字でクリア(ルーレットスタートのイメージ)

乱数=Int((50 -1 +1 )*Rnd +1)   →#1から50の間の数字

フォルダ内のデータ検索(エクセルの場合)

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Fl = "C:\Users\デスクトップ" 'フォルダのディレクトリを指定します。
Flnm = Dir(Fl & "\*.xlsx") 'エクセルだった場合
Do While Flnm <> ""
If Flnm = BN Then
GoTo YU
Else: End If
If Right(Flnm, 10) <> "12345.xlsx" Then 'ファイル名の一致のためライト関数やレフト関数の数字に注意
GoTo YU
Else: End If
IU = Split(Flnm, "\") '最終の項目はファイル名なのでファイル名を取得することができます。
For j = 0 To UBound(IU)
Fname = IU(j)
Next j
Workbooks.Open Filename:=Fl & "\" & Flnm   'あとは開きましょう。
Workbooks("ファイル名").Save               '上書き保存
Workbooks("ファイル名").Close              '閉じる
Workbooks("ファイル名").SaveAs パスとファイル名.拡張子 '新規保存
YU:
Loop
Fl = "C:\Users\デスクトップ" 'フォルダのディレクトリを指定します。 Flnm = Dir(Fl & "\*.xlsx") 'エクセルだった場合 Do While Flnm <> "" If Flnm = BN Then GoTo YU Else: End If If Right(Flnm, 10) <> "12345.xlsx" Then 'ファイル名の一致のためライト関数やレフト関数の数字に注意 GoTo YU Else: End If IU = Split(Flnm, "\") '最終の項目はファイル名なのでファイル名を取得することができます。 For j = 0 To UBound(IU) Fname = IU(j) Next j Workbooks.Open Filename:=Fl & "\" & Flnm   'あとは開きましょう。 Workbooks("ファイル名").Save               '上書き保存 Workbooks("ファイル名").Close              '閉じる Workbooks("ファイル名").SaveAs パスとファイル名.拡張子 '新規保存 YU: Loop
Fl = "C:\Users\デスクトップ"  'フォルダのディレクトリを指定します。
    Flnm = Dir(Fl & "\*.xlsx") 'エクセルだった場合
    Do While Flnm <> ""
           If Flnm = BN Then
            GoTo YU
            Else: End If
            
           If Right(Flnm, 10) <> "12345.xlsx" Then 'ファイル名の一致のためライト関数やレフト関数の数字に注意
            GoTo YU
            Else: End If

IU = Split(Flnm, "\") '最終の項目はファイル名なのでファイル名を取得することができます。
For j = 0 To UBound(IU)
Fname = IU(j)
Next j

Workbooks.Open Filename:=Fl & "\" & Flnm   'あとは開きましょう。

Workbooks("ファイル名").Save               '上書き保存
Workbooks("ファイル名").Close              '閉じる
Workbooks("ファイル名").SaveAs パスとファイル名.拡張子  '新規保存 

YU:
     Loop

CSV・text(カンマ区切り) 操作

【入力】

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Open "ディレクトリ" For Input As #10  →#番号はファイル番号 読み込むときはInputを使います。
Do Until EOF(10)           →EOF関数は最終行に達したらTrueを返す
Line input #10,変数          →Line input は一行ずつ返すo
Loop
Close #10
Open "ディレクトリ" For Input As #10  →#番号はファイル番号 読み込むときはInputを使います。 Do Until EOF(10)           →EOF関数は最終行に達したらTrueを返す Line input #10,変数          →Line input は一行ずつ返すo Loop Close #10
Open "ディレクトリ" For Input As #10  →#番号はファイル番号 読み込むときはInputを使います。

Do Until EOF(10)           →EOF関数は最終行に達したらTrueを返す

Line input #10,変数          →Line input は一行ずつ返すo

Loop

Close #10

【出力】

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Open "ディレクトリ" For Append As #10 
       →Append:すでにある内容に追加 
       output:既にあるものはすべて削除し最初から入力
      →Openはその指定場所にファイルがないと新たに作成します。
Print #10,書き込むデータ      
      →改行が必要な場合は (vbCrLf,vbCr,vbLf)を利用
Close #10
Open "ディレクトリ" For Append As #10         →Append:すでにある内容に追加         output:既にあるものはすべて削除し最初から入力       →Openはその指定場所にファイルがないと新たに作成します。 Print #10,書き込むデータ             →改行が必要な場合は (vbCrLf,vbCr,vbLf)を利用 Close #10
Open "ディレクトリ" For Append As #10 

       →Append:すでにある内容に追加 

       output:既にあるものはすべて削除し最初から入力

      →Openはその指定場所にファイルがないと新たに作成します。

Print #10,書き込むデータ      

      →改行が必要な場合は (vbCrLf,vbCr,vbLf)を利用

Close #10

対象文字の列・行番号検索

一行目のXXXの列

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Sheets(X).Rows(1).Find(WHAT:="XXX",Lookat:=xlwhole).column
Sheets(X).Rows(1).Find(WHAT:="XXX",Lookat:=xlwhole).column
Sheets(X).Rows(1).Find(WHAT:="XXX",Lookat:=xlwhole).column

一列目のXXXの行

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Sheets(X).columns(1).Find(WHAT:="XXX",Lookat:=xlpart).Row
Sheets(X).columns(1).Find(WHAT:="XXX",Lookat:=xlpart).Row
Sheets(X).columns(1).Find(WHAT:="XXX",Lookat:=xlpart).Row

→全一致 Lookat:=xlwhole  →部分一致 Lookat:=xlpart

レジストリにデータを保存・読込・削除

【保存】

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
SaveSetting Appname,section,key,string
SaveSetting Appname,section,key,string
SaveSetting Appname,section,key,string

→例えば Appnameが”A” sectionが”B” keyが”C” stringが”テスト”の場合  

 Aというフォルダ内のBフォルダ内のCのデータの値がテストという文字になる

【読込】

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
変数=Getsetting(Appname,section,key)
変数=Getsetting(Appname,section,key)
変数=Getsetting(Appname,section,key)

<複数読み込みの場合>

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
変数=Getsetting(Appname,section)
 For n = 0 to UBound(変数) →UBound()は最大要素数を返す。最小はLBound()    
  key=変数(n,0)
  string=変数(n,1)
 next n
変数=Getsetting(Appname,section)  For n = 0 to UBound(変数) →UBound()は最大要素数を返す。最小はLBound()       key=変数(n,0)   string=変数(n,1)  next n
変数=Getsetting(Appname,section)

 For n = 0 to UBound(変数) →UBound()は最大要素数を返す。最小はLBound()    

  key=変数(n,0)

  string=変数(n,1)

 next n

【削除】

keyを削除

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
DeleteSetting Appname,section,key
DeleteSetting Appname,section,key
DeleteSetting Appname,section,key

section配下のデータをすべて削除

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
DeleteSetting Appname,section
DeleteSetting Appname,section
DeleteSetting Appname,section

Appname配下のデータを削除

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
DeleteSetting Appname 
DeleteSetting Appname 
DeleteSetting Appname 

スプリット関数

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
X=Split("あ,い,う,え,お",",")
X=Split("あ,い,う,え,お",",")
X=Split("あ,い,う,え,お",",")

tab区切りを分割する→chr(9)を使います。 VBCRLFはChr(13) & Chr(10) キャリッジリターン&ラインフィード

X(0) は”あ” X(1)は”い”

要素ごとに分解する場合はUBound()とFor を使うと便利

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
For i = 0 to UBound(X)
値= X(i)
Next i
For i = 0 to UBound(X) 値= X(i) Next i
For i = 0 to UBound(X)

値= X(i)

Next i

リプレイス関数

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Replace(変数(文字列), "X", "Y")
Replace(変数(文字列), "X", "Y")
Replace(変数(文字列), "X", "Y")

X:探す文字

Y:置き換える文字

Chr()の種類

9Tab3647/
10RF3763?
13CL3864@
32space3992\
3344,
3445
3546.

文字が何個含まれているか確認する

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
NX = 0
Do
 N=InStr(NX + 1,変数(文字列), "X")
 If N = 0 Then
  Exit Do
 ELse
  NX = NX + 1
 End if
Loop
NX = 0 Do  N=InStr(NX + 1,変数(文字列), "X")  If N = 0 Then   Exit Do  ELse   NX = NX + 1  End if Loop
NX = 0
Do
 N=InStr(NX + 1,変数(文字列), "X") 
 If N = 0 Then   
  Exit Do 
 ELse   
  NX = NX + 1 
 End if
Loop

N:あったら、その文字の場所(何文字目か)を返すので、0以外の個数をDo Loopで繰り返し数えます。

X:探す文字

指定した文字種類に変更する

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
N=format(X,"0000")
N=format(X,"0000")
N=format(X,"0000")

 xが1の場合 nは”0001″

日にち関係の処理

閏年かのチェック *Yは変数で年(yyyy)を入力

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
If Day(DateSerial(Y, 3, 1) - 1) = 29 Then
閏年の場合
else
閏年でない場合
End If
If Day(DateSerial(Y, 3, 1) - 1) = 29 Then 閏年の場合 else 閏年でない場合 End If
If Day(DateSerial(Y, 3, 1) - 1) = 29 Then

閏年の場合

else

閏年でない場合

End If

曜日の確認

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
値=Weekday(”yyyy”& "/" & ”㎜” & "/" & "dd")
 →1:日曜日  2:月曜日  3:火曜日  4:水曜日  5:木曜日  6:金曜日  7:土曜日
曜日名=WeekdayName(”yyyy”& "/" & ”㎜” & "/" & "dd")
値=Weekday(”yyyy”& "/" & ”㎜” & "/" & "dd")  →1:日曜日  2:月曜日  3:火曜日  4:水曜日  5:木曜日  6:金曜日  7:土曜日 曜日名=WeekdayName(”yyyy”& "/" & ”㎜” & "/" & "dd")
値=Weekday(”yyyy”& "/" & ”㎜” & "/" & "dd")

 →1:日曜日  2:月曜日  3:火曜日  4:水曜日  5:木曜日  6:金曜日  7:土曜日

曜日名=WeekdayName(”yyyy”& "/" & ”㎜” & "/" & "dd")

期間の計算1

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
日数 = (DateSerial((”yyyy”,”㎜”,"dd") + 1) - DateSerial(”yyyy”,”㎜”,"dd"))
日数 = (DateSerial((”yyyy”,”㎜”,"dd") + 1) - DateSerial(”yyyy”,”㎜”,"dd"))
日数 = (DateSerial((”yyyy”,”㎜”,"dd") + 1) - DateSerial(”yyyy”,”㎜”,"dd"))

期間の計算2 

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
年数後(マイナスだと前)= DateAdd("yyyy", 年数,”yyyy”& "/" & ”㎜” & "/" & "dd")  
月数後(マイナスだと前)= DateAdd("m", 月数,”yyyy”& "/" & ”㎜” & "/" & "dd")  
日数後(マイナスだと前)= DateAdd("d", 日数,”yyyy”& "/" & ”㎜” & "/" & "dd")
年数後(マイナスだと前)= DateAdd("yyyy", 年数,”yyyy”& "/" & ”㎜” & "/" & "dd")   月数後(マイナスだと前)= DateAdd("m", 月数,”yyyy”& "/" & ”㎜” & "/" & "dd")   日数後(マイナスだと前)= DateAdd("d", 日数,”yyyy”& "/" & ”㎜” & "/" & "dd")
年数後(マイナスだと前)= DateAdd("yyyy", 年数,”yyyy”& "/" & ”㎜” & "/" & "dd")  

月数後(マイナスだと前)= DateAdd("m", 月数,”yyyy”& "/" & ”㎜” & "/" & "dd")  

日数後(マイナスだと前)= DateAdd("d", 日数,”yyyy”& "/" & ”㎜” & "/" & "dd")

期間の計算3 

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
年単位=DateDiff(”yyyy”,開始年月日,終了年月日)  
月単位=DateDiff(”m”,開始年月日,終了年月日)  
日単位=DateDiff(”d”,開始年月日,終了年月日)
年単位=DateDiff(”yyyy”,開始年月日,終了年月日)   月単位=DateDiff(”m”,開始年月日,終了年月日)   日単位=DateDiff(”d”,開始年月日,終了年月日)
年単位=DateDiff(”yyyy”,開始年月日,終了年月日)  

月単位=DateDiff(”m”,開始年月日,終了年月日)  

日単位=DateDiff(”d”,開始年月日,終了年月日)

西暦から和暦へ

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
ye="yyyy"
mo = "mm"
da = "dd"
Select Case ye'大正、明治は割愛
 Case Is < 1989  
  元号 = "昭和"  
  和暦 = ye - 1925
 Case Is = 1989
  If mo = 1 Then
   If da <= 7 Then
    元号 = ”昭和”
    和暦 = ye - 1925
   Else
    元号 = ”平成”
    和暦 = 1
   End If
  Else
  End If
 Case 1990 To 2018
  元号 = ”平成”
  和暦 = ye - 1988
 Case Is = 2019
  If mo <= 4 Then
   元号 = ”平成”
   和暦 = ye - 1988
  Else
   元号 = ”令和”
   和暦 = 1
  End If
 Case Is > 2019
  元号 = ”令和”
  和暦 = ye - 2018
End Select
ye="yyyy" mo = "mm" da = "dd" Select Case ye'大正、明治は割愛  Case Is < 1989     元号 = "昭和"     和暦 = ye - 1925  Case Is = 1989   If mo = 1 Then    If da <= 7 Then     元号 = ”昭和”     和暦 = ye - 1925    Else     元号 = ”平成”     和暦 = 1    End If   Else   End If  Case 1990 To 2018   元号 = ”平成”   和暦 = ye - 1988  Case Is = 2019   If mo <= 4 Then    元号 = ”平成”    和暦 = ye - 1988   Else    元号 = ”令和”    和暦 = 1   End If  Case Is > 2019   元号 = ”令和”   和暦 = ye - 2018 End Select
ye="yyyy"

mo = "mm"

da = "dd"

Select Case ye'大正、明治は割愛

 Case Is < 1989  

  元号 = "昭和"  

  和暦 = ye - 1925

 Case Is = 1989

  If mo = 1 Then

   If da <= 7 Then

    元号 = ”昭和”

    和暦 = ye - 1925

   Else

    元号 = ”平成”

    和暦 = 1

   End If

  Else

  End If

 Case 1990 To 2018

  元号 = ”平成”

  和暦 = ye - 1988

 Case Is = 2019

  If mo <= 4 Then

   元号 = ”平成”

   和暦 = ye - 1988

  Else

   元号 = ”令和”

   和暦 = 1

  End If

 Case Is > 2019

  元号 = ”令和”

  和暦 = ye - 2018

End Select 

フォーム上でマウスドラックした際の座標取得

マウスで<Target>というラベルやボタンなどをクリックしてフォーム上で動かすとそのオブジェクトの位置を変更します。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Option Explicit
Private pX As Single 'Xはフォームの横軸
Private pY As Single 'Yはフォームの縦軸
Private Sub Target_MouseDown(ByVal Btn As Integer,ByVal Shift As Integer,ByVal X As Single,ByVal Y As Single)
'左クリックをすると1 右クリックをすると2を値で返す。
If Btn = 1 Then
'クリック位置の保存
 pX = X
 pY = Y
End If
End Sub
Private Sub Target_MouseMove(ByVal Btn As Integer,ByVal Shift As Integer,ByVal X As Single,ByVal Y As Single)
'左クリックの検出
If Btn = 1 Then
'マウスが移動した分コントロールを移動
 With Target
  .Top = .Top + Y - pY
  .Left = .Left + X - pX
 End With
End If
End Sub
Option Explicit Private pX As Single 'Xはフォームの横軸 Private pY As Single 'Yはフォームの縦軸 Private Sub Target_MouseDown(ByVal Btn As Integer,ByVal Shift As Integer,ByVal X As Single,ByVal Y As Single) '左クリックをすると1 右クリックをすると2を値で返す。 If Btn = 1 Then 'クリック位置の保存  pX = X  pY = Y End If End Sub Private Sub Target_MouseMove(ByVal Btn As Integer,ByVal Shift As Integer,ByVal X As Single,ByVal Y As Single) '左クリックの検出 If Btn = 1 Then 'マウスが移動した分コントロールを移動  With Target   .Top = .Top + Y - pY   .Left = .Left + X - pX  End With End If End Sub
Option Explicit
Private pX As Single 'Xはフォームの横軸
Private pY As Single 'Yはフォームの縦軸

Private Sub Target_MouseDown(ByVal Btn As Integer,ByVal Shift As Integer,ByVal X As Single,ByVal Y As Single)
'左クリックをすると1 右クリックをすると2を値で返す。
If Btn = 1 Then
'クリック位置の保存
 pX = X
 pY = Y
End If
End Sub

Private Sub Target_MouseMove(ByVal Btn As Integer,ByVal Shift As Integer,ByVal X As Single,ByVal Y As Single)
'左クリックの検出
If Btn = 1 Then
'マウスが移動した分コントロールを移動
 With Target
  .Top = .Top + Y - pY
  .Left = .Left + X - pX
 End With
End If
End Sub

Beep音を出す

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Option Explicit
Declare PtrSafe Function Beep Lib "kernel32" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long
Sub a()
Call Beep(9999, 2000)
End Sub
Option Explicit Declare PtrSafe Function Beep Lib "kernel32" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long Sub a() Call Beep(9999, 2000) End Sub
Option Explicit
Declare PtrSafe Function Beep Lib "kernel32" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long
Sub a()
Call Beep(9999, 2000) 
End Sub

Beep(音色440Hz以下は低すぎて聞こえない9999Hzは高い音 , 時間1000=1秒)

ド61046.502Hz
レ6  1174.659Hz
ミ61318.510Hz
ファ61396.913Hz
ソ61567.982Hz
ラ61760.000Hz
シ61975.533Hz
ド62093.005Hz

WEB操作(Internet Explorer)*IEはサービス終了になりました。

事前に開発タブ-VB-ツール-参照設定で

①Microsoft HTML Object Library
②Microsoft Internet Controls

にチェックを入れる

オートメーションエラーが表示される場合は

Internet Explorerのインターネットオプションで〈保護モードを有効にする〉のチェックを入れます。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#InternetExplorerで開いたWebページの入力操作を行う(文字情報の読み込みは別途手を加える必要があります。)
Dim IE As InternetExplorer
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.Navigate "https:// ~”
待ち時間 = DateAdd("", 3, Now())
Do While Now() < 待ち時間
DoEvents
Loop
For Each objTag In IE.document.getElementsByTagName("input")
基本は type横の種類(タグ名)を入力してください。
→("select")・・・ラジオボタン
→("textarea")・・・複数行テキストBOX
If InStr(objTag.outerHTML, "X") > 0 Then
←XはWEBサイトの要素にあるものでALTの文字列やname=の文字で可(要素内で完全にヒットする文字列がベスト。)
<ボタンをクリック、チェックボックスにチェックを入れる場合>
objTag.Click
<エントリーBOXへの入力の場合>
objTag.Value = X
<ラジオボタンの場合>
objTag.Value =番号
Exit For
End If
Next
#InternetExplorerで開いたWebページの入力操作を行う(文字情報の読み込みは別途手を加える必要があります。) Dim IE As InternetExplorer Set IE = CreateObject("InternetExplorer.Application") IE.Visible = True IE.Navigate "https:// ~” 待ち時間 = DateAdd("S", 3, Now()) Do While Now() < 待ち時間 DoEvents Loop For Each objTag In IE.document.getElementsByTagName("input") 基本は type横の種類(タグ名)を入力してください。 →("select")・・・ラジオボタン →("textarea")・・・複数行テキストBOX If InStr(objTag.outerHTML, "X") > 0 Then ←XはWEBサイトの要素にあるものでALTの文字列やname=の文字で可(要素内で完全にヒットする文字列がベスト。) <ボタンをクリック、チェックボックスにチェックを入れる場合> objTag.Click <エントリーBOXへの入力の場合> objTag.Value = X <ラジオボタンの場合> objTag.Value =番号 Exit For End If Next
#InternetExplorerで開いたWebページの入力操作を行う(文字情報の読み込みは別途手を加える必要があります。)

Dim IE As InternetExplorer
Set IE = CreateObject("InternetExplorer.Application")
 IE.Visible = True
 IE.Navigate "https:// ~”
 待ち時間 = DateAdd("S", 3, Now())
  Do While Now() < 待ち時間
    DoEvents
  Loop

For Each objTag In IE.document.getElementsByTagName("input") 

基本は type横の種類(タグ名)を入力してください。
→("select")・・・ラジオボタン
→("textarea")・・・複数行テキストBOX


If InStr(objTag.outerHTML, "X") > 0 Then 
 ←XはWEBサイトの要素にあるものでALTの文字列やname=の文字で可(要素内で完全にヒットする文字列がベスト。)

<ボタンをクリック、チェックボックスにチェックを入れる場合>
objTag.Click
<エントリーBOXへの入力の場合>
objTag.Value = X
<ラジオボタンの場合>
objTag.Value =番号

Exit For
End If
Next

WEB操作(Chrom seleniumBasic利用)

seleniumBasicをインストール(開発者に敬意を表して)

https://github.com/florentbr/SeleniumBasic/releases/tag/v2.0.9.0

インストールした場所のChromdriver.exeの更新(以下より最新のものをダウンロード)

https://sites.google.com/a/chromium.org/chromedriver/home

Excel>VBE>ツール>参照設定>selenium type library にチェック

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#WEB操作
Dim d As New ChromeDriver  
  →IEDriver でIEの操作も可能
d.Get ("https://~)
<クリック・チェックボックスやラジオボタンにチェック>
d.FindElementByCss(X).Click
<WEBページのテキストを取得>
Y = d.FindElementByCss(X).Text
<インプットボックスに入力>
d.FindElementByCss(X).SendKeys "ZZZ"
<コンボボックスに入力>
d.FindElementByCss(X).SendKeys "Valueの値"
画面遷移し遷移した先の情報を参照する場合は以下の内容を入力
d.SwitchToNextWindow
インラインフレーム(ページの中に別のページがある場合)
d.SwitchToFrame
Xは画面上で右クリック>検証>対象のエレメントで右クリック>Copy>Copy selector の値を使用します。
d.wait 50005秒  20000 ←20
d.Quit
#WEB操作 Dim d As New ChromeDriver     →IEDriver でIEの操作も可能 d.Get ("https://~) <クリック・チェックボックスやラジオボタンにチェック> d.FindElementByCss(X).Click <WEBページのテキストを取得> Y = d.FindElementByCss(X).Text <インプットボックスに入力> d.FindElementByCss(X).SendKeys "ZZZ" <コンボボックスに入力> d.FindElementByCss(X).SendKeys "Valueの値" 画面遷移し遷移した先の情報を参照する場合は以下の内容を入力 d.SwitchToNextWindow インラインフレーム(ページの中に別のページがある場合) d.SwitchToFrame Xは画面上で右クリック>検証>対象のエレメントで右クリック>Copy>Copy selector の値を使用します。 d.wait 5000 ←5秒  20000 ←20秒 d.Quit
#WEB操作
Dim d As New ChromeDriver  
  →IEDriver でIEの操作も可能
d.Get ("https://~)
<クリック・チェックボックスやラジオボタンにチェック>
d.FindElementByCss(X).Click
<WEBページのテキストを取得>
Y = d.FindElementByCss(X).Text
<インプットボックスに入力>
d.FindElementByCss(X).SendKeys "ZZZ"
<コンボボックスに入力>
d.FindElementByCss(X).SendKeys "Valueの値"

画面遷移し遷移した先の情報を参照する場合は以下の内容を入力
d.SwitchToNextWindow

インラインフレーム(ページの中に別のページがある場合)
d.SwitchToFrame

Xは画面上で右クリック>検証>対象のエレメントで右クリック>Copy>Copy selector の値を使用します。


d.wait 5000   ←5秒  20000 ←20秒

d.Quit

OneDriveを参照する

共有ファイルサーバーと違いOneDriveのパス参照は少し厄介です。

以下はOneDriveを同期していることを前提として記載します。

●他人のOneDriveの共有フォルダを使う

 OneDriveの自分のファイルにショートカットをします。

●SharePointを使う

 OneDriveの自分のファイルにショートカットを作る。

上記の設定でエクスプローラーからアクセスできるようになるのでパスを取得することで参照が可能になります。

そのほか

 OneDriveのパスの先頭を取得する際は

Environ(”OneDrive”)

Environ(”OneDrive commericial”)

を利用すれば取得できる。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です