Excel VBA 逆引き集 | ログファイル出力

Excel VBA
スポンサーリンク

ログファイル出力

プログラムを動かすときに「いつ」「何をしたか」「エラーはあったか」を記録しておくと、後から確認やトラブル対応がしやすくなります。これを ログファイル出力 と呼びます。
初心者向けに、コード例やテンプレートをかみ砕いて説明します。


基本の考え方

  • ログファイルとは?
    テキストファイルに処理内容やエラー情報を書き込んで残す仕組み。
  • 用途:
    • エラー発生時の原因調査
    • 実行履歴の記録
    • 処理結果の確認

テンプレ1:シンプルなログ出力

Sub WriteLogBasic()
    Dim fso As Object
    Dim ts As Object
    Dim logPath As String
    
    ' ログファイルの保存先
    logPath = "C:\temp\log.txt"
    
    ' FileSystemObjectを使ってファイルを開く(追記モード)
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ts = fso.OpenTextFile(logPath, 8, True) ' 8=追記, True=新規作成可
    
    ' ログを書き込む
    ts.WriteLine Now & " : プログラム開始"
    
    ts.Close
    MsgBox "ログファイルに書き込みました!"
End Sub
VB
  • ポイント:
    • OpenTextFile(..., 8, True) → 追記モードで開く。
    • Now で日時を記録。

テンプレ2:処理の途中でログを残す

Sub WriteLogProcess()
    Dim fso As Object, ts As Object
    Dim logPath As String
    
    logPath = "C:\temp\log.txt"
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ts = fso.OpenTextFile(logPath, 8, True)
    
    ts.WriteLine Now & " : 処理開始"
    
    ' 例:シートに値を書き込む
    Worksheets("Sheet1").Range("A1").Value = "テスト"
    ts.WriteLine Now & " : Sheet1に値を書き込み完了"
    
    ts.WriteLine Now & " : 処理終了"
    ts.Close
    
    MsgBox "処理ログをファイルに出力しました!"
End Sub
VB
  • ポイント:
    • 処理の節目ごとにログを残す。
    • 後から「どこまで動いたか」が分かる。

テンプレ3:エラー発生時にログ出力

Sub WriteLogOnError()
    On Error GoTo ErrHandler
    
    Dim fso As Object, ts As Object
    Dim logPath As String
    
    logPath = "C:\temp\log.txt"
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ts = fso.OpenTextFile(logPath, 8, True)
    
    ts.WriteLine Now & " : 処理開始"
    
    ' 故意にエラー発生(存在しないシート参照)
    Worksheets("NoSheet").Activate
    
    ts.WriteLine Now & " : 処理終了"
    ts.Close
    Exit Sub
    
ErrHandler:
    ts.WriteLine Now & " : エラー発生 - 番号:" & Err.Number & " 内容:" & Err.Description
    ts.Close
    MsgBox "エラーをログに記録しました!"
End Sub
VB
  • ポイント:
    • Err.NumberErr.Description をログに残す。
    • エラーが起きても原因を後から確認できる。

テンプレ4:ログ出力を関数化して使い回す

Sub WriteLog(ByVal message As String)
    Dim fso As Object, ts As Object
    Dim logPath As String
    
    logPath = "C:\temp\log.txt"
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ts = fso.OpenTextFile(logPath, 8, True)
    
    ts.WriteLine Now & " : " & message
    ts.Close
End Sub

Sub ExampleUse()
    WriteLog "処理開始"
    Worksheets("Sheet1").Range("A1").Value = "テスト"
    WriteLog "Sheet1に値を書き込み完了"
    WriteLog "処理終了"
End Sub
VB
  • ポイント:
    • ログ出力を関数化すると、どこでも簡単に呼び出せる。
    • 実務でよく使うパターン。

例題で練習

'例1:プログラム開始時にログを出力
'例2:処理の途中でログを残す
'例3:エラー発生時にログを記録
'例4:関数化して複数箇所でログを使う
VB

初心者向けポイント

  • ログは「日時+メッセージ」が基本
  • 追記モードで開くと履歴が残る
  • エラー時はErr.NumberとErr.Descriptionを記録
  • 関数化すると再利用しやすい
  • Excelを「ログ管理ツール」として活用できる

👉 この「ログファイル出力テンプレ」を覚えておけば、Excel VBAで 処理の履歴やエラーをテキストファイルに残し、後から確認できる仕組み を簡単に作成できます。

タイトルとURLをコピーしました