ログファイル出力
プログラムを動かすときに「いつ」「何をしたか」「エラーはあったか」を記録しておくと、後から確認やトラブル対応がしやすくなります。これを ログファイル出力 と呼びます。
初心者向けに、コード例やテンプレートをかみ砕いて説明します。
基本の考え方
- ログファイルとは?
テキストファイルに処理内容やエラー情報を書き込んで残す仕組み。 - 用途:
- エラー発生時の原因調査
- 実行履歴の記録
- 処理結果の確認
テンプレ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.NumberとErr.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で 処理の履歴やエラーをテキストファイルに残し、後から確認できる仕組み を簡単に作成できます。
