【VBA】【WMI】イベント ログからの1 日分のイベントの取得

VBA・Officeカテゴリを表すパンダのイラスト VBA・Office

VBScript用の公開スクリプトを元に、Excel等のVBAからWMI(Windows Management Instrumentation)を利用して、指定した1日分のWindowsイベントログを取得できるようにコンバートしたサンプルコードです。

WMIを利用することで、VBAだけでなくVBScriptやPowerShellなど、さまざまな環境からWindowsのシステム情報を操作・取得できます。

事前準備

VBAからWMIスクリプトオブジェクトを利用するため、VBEのメニューから「ツール」>「参照設定」を開き、「Microsoft WMI Scripting V1.2 Library」にチェックを入れる必要があります。

VBAサンプルコード

Sub イベントログからの1日分のイベントの取得()
    ' 参考: Microsoft WMI Scripting / Win32_NTLogEvent
    Const CONVERT_TO_LOCAL_TIME As Boolean = True
    Dim dtmStartDate As New WbemScripting.SWbemDateTime
    Dim dtmEndDate As New WbemScripting.SWbemDateTime
    
    ' 取得対象の日付を設定
    Dim DateToCheck As Date
    DateToCheck = CDate("2024-11-06")
    
    dtmStartDate.SetVarDate DateToCheck, CONVERT_TO_LOCAL_TIME
    dtmEndDate.SetVarDate DateToCheck + 1, CONVERT_TO_LOCAL_TIME
    
    Dim oLocator As SWbemLocator
    Dim oService As SWbemServices
    Dim colEvents As SWbemObjectSet
    Dim objEvent As SWbemObjectEx
    
    Set oLocator = New WbemScripting.SWbemLocator
    Set oService = oLocator.ConnectServer(".")
    
    Set colEvents = oService.ExecQuery _
    ("Select * from Win32_NTLogEvent Where TimeWritten >= '&" _
    & dtmStartDate & "' and TimeWritten < '&" & dtmEndDate & "'")

    For Each objEvent In colEvents
        Debug.Print "Category: " & objEvent.Category
        Debug.Print "Computer Name: " & objEvent.ComputerName
        Debug.Print "Event Code: " & objEvent.EventCode
        Debug.Print "Message: " & objEvent.Message
        Debug.Print "Record Number: " & objEvent.RecordNumber
        Debug.Print "Source Name: " & objEvent.SourceName
        Debug.Print "Time Written: " & objEvent.TimeWritten
        Debug.Print "Event Type: " & objEvent.Type
        Debug.Print "User: " & objEvent.User
        Debug.Print objEvent.LogFile
        Debug.Print "-----------------------------------"
    Next objEvent

End Sub

注意事項

Windowsのセキュリティ権限やログの規模(件数)によっては、クエリの実行に時間がかかる場合や、管理者権限が必要になる場合があります。実運用ではエラーハンドリングや出力先の変更(イミディエイトウインドウからワークシートへの転記など)を行ってご利用ください。

この記事の更新履歴

この記事は、生成AIを活用した自動レビュー・更新フローにより内容を見直し、必要な修正を反映しています。

2026年9月30日

  • 変更リンク切れとなったTechNetスクリプトセンターへの参照表記を見直しました。
  • 変更VBAコードのblockquoteによる表示崩れを修正し、整形されたHTML構造に更新しました。

文書情報

記事タイトル
【VBA】【WMI】イベント ログからの1 日分のイベントの取得
作成日
更新日
Source URL
https://papanda925.com/?p=517

ライセンス: 本記事のうち、当サイトが権利を有する本文・自作図表は、特記なき限り CC BY 4.0 で利用できます。生成AIを活用して作成・編集した内容を含みます。コードについて、別途ライセンス表示またはリンク先GitHubリポジトリのライセンスがある場合は、その条件を優先します。引用・第三者資料・画像・商標等は本ライセンスの対象外です。 利用ポリシー

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