VBAの最近のブログ記事
例えば、テーブル名が全て "public_"で始まっている場合に "public_"を削除する方法。
Sub macro1()
Dim myTable As TableDef
For Each myTable In CurrentDb.TableDefs
If Left(myTable.Name, 7) = "public_" Then
Debug.Print myTable.Name ' デバグ用出力
Debug.Print " " & Mid(myTable.Name, 8, Len(myTable.Name)) ' デバグ用出力
myTable.Name = Mid(myTable.Name, 8, Len(myTable.Name))
End If
Next
End Sub
Excel VBAで、Writeステートメントを使ってCSV出力すると、日付が #2008-01-01# のような形式になってしまいます。
このCSVをAccessにインポートするのは大変です。
以下のような自作関数を使って変換しましょう。
Excel側でエクスポートする際に変換してもいいし、Access側でインポートした後にクエリで変換してもいいです。
Function sanitizeDate(str As Variant) As Variant
If Left(str, 2) = "#2" And Right(str, 1) = "#" And Len(str) = 12 Then
sanitizeDate = Mid(str, 2, 10)
Else
sanitizeDate = str
End If
End Function
使い方
Sub test()
MsgBox sanitizeDate("#2008-01-01#")
End Sub
実行結果: 2008-01-01
現在のプレゼンテーションファイルの場所(パス)を取得する方法。
MsgBox ActivePresentation.Path ExcelやPowerPointやWordでVBAを実行するときに、マクロの実行時間を測定する方法。
ストップウォッチが手元にないときはこのコードを使いましょう。
Sub macro1()
Dim t
t = Timer
・・・あれこれ処理・・・
MsgBox Timer - t
End Sub解説
最初に t = Timerで、マクロ開始時刻が記録されます。
最後に、Timer - T と引き算することで、マクロの経過時間(秒)が得られます。
コードのベンチマークをやるときに便利ですよ。
マクロを使ってCSVでファイル保存をしたときなどに、下記のような確認・警告メッセージがでて、いちいち「はい」を押さないと先に進まないことがあります。
これを非表示にするには"Application.DisplayAlerts = False "と書きます。
Sub macro1()
Application.DisplayAlerts = False
..... (中略) ....
Application.DisplayAlerts = True
End Sub
このように、コードの最初に " Application.DisplayAlerts = False " とすることで警告メッセージを非表示にできます。
また、コードが終了する直前に " Application.DisplayAlerts = True " とすることで、もとの警告表示モードに戻すことができます。
(これをしないまま終了すると、警告がずっと非表示のままになってしまいます。)