イベントログ出力
Excel VBAで「イベントログ」を扱うと、Windowsのシステムログに記録を残すことができます。
これは「処理の開始・終了」「エラー発生」などを Windowsイベントビューア で確認できるようにする仕組みです。
初心者向けに、コード例やテンプレートをかみ砕いて説明します。
基本の考え方
- イベントログとは?
Windowsが持っている「システムやアプリの記録帳」。
Excel VBAからも「アプリケーションログ」に書き込める。 - 用途:
- エラーや警告をシステム管理者に残す
- バッチ処理の開始・終了を記録する
- Excelを「業務処理の記録ツール」として活用する
テンプレ1:イベントログに情報を書き込む
Sub WriteEventLog_Info()
Dim objLog As Object
' WScript.Shellを使ってイベントログに書き込み
Set objLog = CreateObject("WScript.Shell")
' Applicationログに「情報」を記録
objLog.LogEvent 4, "Excel VBA処理開始: データ更新を開始しました。"
MsgBox "イベントログに情報を記録しました!"
End Sub
VB- ポイント:
LogEvent 4→ 情報 (Information)- メッセージは自由に設定可能
テンプレ2:イベントログに警告を書き込む
Sub WriteEventLog_Warning()
Dim objLog As Object
Set objLog = CreateObject("WScript.Shell")
' Applicationログに「警告」を記録
objLog.LogEvent 2, "Excel VBA警告: データが見つかりませんでした。"
MsgBox "イベントログに警告を記録しました!"
End Sub
VB- ポイント:
LogEvent 2→ 警告 (Warning)- 例:ファイルが見つからない、入力不足など
テンプレ3:イベントログにエラーを書き込む
Sub WriteEventLog_Error()
On Error GoTo ErrHandler
' 故意にエラー発生
Worksheets("NoSheet").Activate
Exit Sub
ErrHandler:
Dim objLog As Object
Set objLog = CreateObject("WScript.Shell")
' Applicationログに「エラー」を記録
objLog.LogEvent 1, "Excel VBAエラー: " & Err.Description
MsgBox "イベントログにエラーを記録しました!"
End Sub
VB- ポイント:
LogEvent 1→ エラー (Error)Err.Descriptionでエラーメッセージを記録
テンプレ4:処理開始・終了をイベントログに残す(業務向け)
Sub WriteEventLog_Process()
Dim objLog As Object
Set objLog = CreateObject("WScript.Shell")
objLog.LogEvent 4, "Excel VBA処理開始: 日次レポート生成"
' ここに本処理(例:集計やファイル出力)
Worksheets("Report").Range("A1").Value = "日次レポート完了"
objLog.LogEvent 4, "Excel VBA処理終了: 日次レポート生成完了"
MsgBox "処理開始・終了をイベントログに記録しました!"
End Sub
VB- ポイント:
- 開始と終了を記録すると「処理が走ったか」を後から確認できる。
- バッチ処理や定期タスクに便利。
例題で練習
'例1:処理開始を「情報」としてイベントログに記録
'例2:データ不足を「警告」としてイベントログに記録
'例3:エラー発生を「エラー」としてイベントログに記録
'例4:日次処理の開始・終了をイベントログに記録
VB初心者向けポイント
- LogEventの番号で種類を指定
- 1 = エラー
- 2 = 警告
- 4 = 情報
- イベントビューアで確認できる → Windowsの「管理ツール → イベントビューア → Windowsログ → アプリケーション」
- Err.Descriptionを組み込むと便利 → エラー原因がすぐ分かる
- 開始・終了を記録すると業務監査に役立つ
👉 この「イベントログ出力テンプレ」を覚えておけば、Excel VBAで 処理の開始・終了やエラーをWindowsイベントログに残し、システム管理者や自分自身が後から確認できる仕組み を簡単に作成できます。
