VBA ログ出力テンプレート(日付ごとにファイル分割版)
業務マクロでログを残す際に、日付ごとにファイルを分けると管理がしやすくなります。例えば log_20251119.txt のように、日付ごとにファイルが自動生成されます。
日付ごとに TXT ファイルへ出力
Option Explicit
'=== ログ出力(日付ごとにファイル分割) ===
Sub WriteLogDaily(msg As String)
Dim fso As Object
Dim ts As Object
Dim filePath As String
Dim logFileName As String
' 日付ごとにファイル名を作成
logFileName = "log_" & Format(Date, "yyyymmdd") & ".txt"
filePath = ThisWorkbook.Path & "\" & logFileName
' FileSystemObjectを使って追記
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.OpenTextFile(filePath, 8, True) ' 8=追記モード, True=新規作成可
ts.WriteLine Format(Now, "yyyy/mm/dd hh:nn:ss") & " - " & msg
ts.Close
End Sub
'=== メイン処理例 ===
Sub MainProcess()
On Error GoTo ErrHandler
WriteLogDaily "処理開始"
' ▼業務処理の例
Range("A1").Value = "Hello VBA!"
WriteLogDaily "処理正常終了"
Exit Sub
ErrHandler:
WriteLogDaily "エラー発生: " & Err.Number & " - " & Err.Description
MsgBox "エラーが発生しました。ログを確認してください。", vbCritical
End Sub
VBCSV形式で日付ごとに出力する版
Sub WriteLogDailyCSV(msg As String)
Dim fso As Object
Dim ts As Object
Dim filePath As String
Dim logFileName As String
' 日付ごとにファイル名を作成
logFileName = "log_" & Format(Date, "yyyymmdd") & ".csv"
filePath = ThisWorkbook.Path & "\" & logFileName
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.OpenTextFile(filePath, 8, True)
' CSV形式で「日時,メッセージ」を出力
ts.WriteLine Format(Now, "yyyy/mm/dd hh:nn:ss") & "," & msg
ts.Close
End Sub
VB実務でのメリット
- 日ごとにファイルが分かれる → ログが肥大化せず管理しやすい
- TXT版 → 簡単に目視確認できる
- CSV版 → Excelで読み込んで分析可能
- 自動生成 → 日付が変われば新しいファイルが自動で作られる
✅ まとめ
log_YYYYMMDD.txt/log_YYYYMMDD.csvの形式で日付ごとにログを保存- 追記モードなので、同じ日のログは1ファイルにまとまる
- エラー処理と組み合わせれば、業務マクロの監査・トラブルシュートが容易になる


