Excel VBA | 実務用 VBA コード集(テンプレ付き)

Excel VBA VBA
スポンサーリンク

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
VB

CSV形式で月ごとに出力する版

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ファイルにまとまる
  • 日ごとよりもファイル数が減り、長期運用に向いている
タイトルとURLをコピーしました