Windows更新后,VBA GetObject winmgmts不起作用

我一直在使用Excel VBA从事件日志中获取桌面login,注销时间。 该程序运行良好,直到上周Windows更新。

debugging完成后,我发现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 

错误信息是:“Error#-2147221020 was generated by VBAProject。Error line:0 Automation Error。Invalid syntax”。

我找不到为什么发生这种情况,以及如何解决这个问题。

附加信息:

  • 我正在使用Windows 10,Excel 2016 MSO(16.0.4549.1000)32位

  • 我改变了代码后期绑定,但它仍然无法正常工作。

  • 参考设置:Microsoft Excel 16.0对象库,Microsoft Office 16.0对象库

同样的问题在这里,只适用于MS Access 2016 32位。 也用字testing过。 似乎影响所有办公室应用程序。 我在Windows 10 64位上运行Office 32位。

我希望有人能够找出这里发生了什么事。 这个代码用来工作得很好。

编辑:罪魁祸首似乎是更新KB4011051,卸载后错误消失。 我正在研究它是否可以看出这是devise还是错误。