VBA ログ出力テンプレート(月ごとにまとめる版)
日ごとにファイルを分けるのではなく、月ごとにログファイルをまとめると管理がさらに簡単になります。例えば log_202511.txt のように、年月単位でファイルが自動生成されます。
月ごとに TXT ファイルへ出力
Option Explicit
'=== ログ出力(月ごとにファイル分割) ===
Sub WriteLogMonthly(msg As String)
Dim fso As Object
Dim ts As Object
Dim filePath As String
Dim logFileName As String
' 月ごとにファイル名を作成(例:log_202511.txt)
logFileName = "log_" & Format(Date, "yyyymm") & ".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
WriteLogMonthly "処理開始"
' ▼業務処理の例
Range("A1").Value = "Hello VBA!"
WriteLogMonthly "処理正常終了"
Exit Sub
ErrHandler:
WriteLogMonthly "エラー発生: " & Err.Number & " - " & Err.Description
MsgBox "エラーが発生しました。ログを確認してください。", vbCritical
End Sub
VBCSV形式で月ごとに出力する版
Sub WriteLogMonthlyCSV(msg As String)
Dim fso As Object
Dim ts As Object
Dim filePath As String
Dim logFileName As String
' 月ごとにファイル名を作成(例:log_202511.csv)
logFileName = "log_" & Format(Date, "yyyymm") & ".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_YYYYMM.txt/log_YYYYMM.csvの形式で月ごとにログを保存- 追記モードなので、同じ月のログは1ファイルにまとまる
- 日ごとよりもファイル数が減り、長期運用に向いている


