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

Excel VBA VBA
スポンサーリンク

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
VB

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

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ファイルにまとまる
  • エラー処理と組み合わせれば、業務マクロの監査・トラブルシュートが容易になる
タイトルとURLをコピーしました