|
▼みどり さん:
>はじめまして。
>
>Windowsのログイン、ログオフの時間をVBAで取得することは出来ますでしょうか?
>出来るか出来ないかもわからず、悩んでいます。
>
>よろしくお願いします。
システムログ(イベントビューアの)から
「イベント ログ サービス」の開始と終了を引っ張ってきて、
端末の起動時刻と終了時刻を取得したことはあります。
参考までに載せときます。
メインのコードは、MicroSoft TechNetから拝借してきました(たぶん)
Sub Test()
Dim strComputer As String
Dim objWMIService As Object
Dim colLoggedEvents As Object
Dim ObjEvent As Object
Dim r As Long
Dim D As Variant
Dim MyDate As Variant
Dim MyTime As Variant
'システムログからCode 6005,6006のレコードを取得
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colLoggedEvents = objWMIService.ExecQuery _
("Select * from Win32_NTLogEvent Where Logfile = 'System' and " _
& "(EventCode = '6005' or EventCode = '6006')")
If colLoggedEvents.Count < 1 Then GoTo EndLine
'項目
r = 1
Cells(r, 1).Value = "Event Code"
Cells(r, 2).Value = "メッセージ"
Cells(r, 3).Value = "日付"
Cells(r, 4).Value = "時間"
r = r + 1
'データの書き出し
For Each ObjEvent In colLoggedEvents
'時刻データの整形
D = ObjEvent.TimeWritten
MyDate = Mid(D, 1, 4) & "/" & Mid(D, 5, 2) & "/" & Mid(D, 7, 2)
MyTime = Mid(D, 9, 2) & ":" & Mid(D, 11, 2) & ":" & Mid(D, 13, 2)
Cells(r, 1).Value = ObjEvent.EventCode
Cells(r, 2).Value = Replace(ObjEvent.Message, vbCrLf, "")
Cells(r, 3).Value = MyDate
Cells(r, 4).Value = MyTime
r = r + 1
Next ObjEvent
EndLine:
Set objWMIService = Nothing
Set colLoggedEvents = Nothing
End Sub
|
|