質問: 最近システム管理関係の業務を行うことになりまずは手始めにイベントログのエラー監視をすることになりました。 そこでExcel2003でWindowsのイベントログの内容を取得するマクロを用意したいのですが、どこかに良いサンプルはありませんでしょうか?
回答: Dim W, C, T, P, N, V, I, X Set W = GetObject("winmgmts:\\.\root\cimv2") Set C = W.ExecQuery("SELECT * FROM Win32_NTLogEvent" _ & " WHERE Type='エラー'") 'エラーのみ収集 For Each T In C For Each P In T.properties_ N = P.Name V = P.Value X = -1 If P.IsArray Then On Error Resume Next X = UBound(P.Value) On Error GoTo 0 End If If X < 0 Then Debug.Print N; ": "; V Else For I = 0 To X Debug.Print N; "("; CStr(I); "): "; V(I) Next End If Next Next プロパティ名と内容がイミディエイトウィンドウに出力されます。 TimeGenerated、TimeWritten は日付なので、次の方法で変換します。 Dim S Set S = CreateObject("WbemScripting.SWbemDateTime") S.Value = T.TimeGenerated その後、Sの各プロパティを参照します。(下記参照) Year,Month,Day,Hours,Minutes,Seconds,Microseconds 実行するユーザはイベントログを扱う権限が必要です。