Windows更新后VBA GetObject winmgmts不工作
我一直在使用Excel VBA从事件日志中获取桌面登录、注销时间。在Windows上周更新之前,该程序一直运行良好 调试后,我发现GetObject函数不起作用Windows更新后VBA GetObject winmgmts不工作,vba,excel,wmi,Vba,Excel,Wmi,我一直在使用Excel VBA从事件日志中获取桌面登录、注销时间。在Windows上周更新之前,该程序一直运行良好 调试后,我发现GetObject函数不起作用 Sub get_log_time() On Error GoTo ErrorHandler 'strComputer = ComputerName strComputer = "." Set objWMIService = GetObject("winmgmts:{impersonationLevel
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位
我将代码更改为后期绑定,但它仍然不起作用
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
参考设置:Microsoft Excel 16.0对象库、Microsoft Office 16.0对象库
这里也有同样的问题,只适用于MS Access 2016 32位。 在word中也进行了测试。 似乎会影响所有office应用程序。 我在Windows 10 64位上运行office 32位 我希望有人能知道这里到底发生了什么。 这段代码过去工作得很好
编辑:罪魁祸首似乎是更新KB4011051,卸载后错误消失。我正在研究它,看看是否可以找出这是设计还是错误。无效语法听起来很像编译错误。请澄清代码是否编译并运行,该错误是运行时错误。@Mat's Mug感谢您的快速回复。这是运行时错误。完整消息:错误-2147221020由VBAProjectmy项目名称生成。错误行:0。自动化错误。systax.Ok无效。我用Environ$COMPUTERNAME替换strComputer时遇到的错误是运行时错误5无效的过程调用或参数,这比无效语法更有意义,正如我所说,无效语法是编译错误……使用点代替Environ$COMPUTERNAME运行时没有任何问题。set foo=getobjectwinmgmts:{impersonationLevel=impersonate}!\\\root\cimv2-strComputer的值是多少?windows的哪个版本?将strComputer替换为EnvironCOMPUTERNAME的代码行在此运行时没有错误。Windows 10.0.15063 Build 15063/Excel 2016 MSO 16.0.8326.2062 32位半确认:请参阅