我一直在使用Excel VBA从事件日志中获取桌面登录,注销时间。该程序运行良好,直到上周Windows更新。Windows更新后VBA GetObject winmgmts无法工作
经过调试,我想通了GetObject
功能没有工作。
Sub get_log_time()
On Error GoTo ErrorHandler
'strComputer = ComputerName
strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colLoggedEvents = objWMIService.ExecQuery("Select * from Win32_NTLogEvent Where Logfile = 'System' and (EventCode = '7001' or EventCode = '7002')")
ErrorHandler:
If Err.Number <> 0 Then
Msg = "Error # " & Str(Err.Number) & " was generated by " _
& Err.Source & Chr(13) & "Error Line: " & Erl & Chr(13) & Err.Description
MsgBox Msg, , "Error", Err.HelpFile, Err.HelpContext
End If
Resume Next
End Sub
错误信息是: “错误#-2147221020用的VBAProject错误线生成:0.自动化错误语法无效。”。
我找不到为什么会发生这种情况,以及如何解决它。
附加信息:
我使用的是Windows 10时,Excel 2016 MSO(16.0.4549.1000)32位
我改变了代码到后期绑定,但它仍然无法正常工作。
参考设置:Microsoft Excel中16.0对象库,的Microsoft Office 16.0对象库
“语法无效”听起来非常像编译错误。请说明代码是否编译并运行(并且错误是运行时错误)。 –
@ Mat's马克杯感谢您的快速回复。这是运行时错误。完整的消息:错误#-2147221020是由VBAProject(我的项目名称)生成的。错误行:0.自动化错误。无效的systax。 –
好的。那么我得到的错误(用'Environ $(“COMPUTERNAME”)'替换'strComputer')是运行时错误5“无效的过程调用或参数”,这比“无效的语法”更有意义,它与我说,是一个编译错误。 –