我一直在使用Excel VBA从事件日志中获取桌面登录和注销时间。该程序运行良好,直到Windows上周更新。
调试后,我发现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
错误消息是:&#34;错误#-2147221020由VBAProject生成。错误行:0。自动化错误。语法无效&#34;。
我无法找到发生这种情况的原因,以及如何解决这个问题。
其他信息:
我使用的是Windows 10,Excel 2016 MSO(16.0.4549.1000)32位
我将代码更改为后期绑定但仍然无效。
参考设置:Microsoft Excel 16.0对象库,Microsoft Office 16.0对象库
答案 0 :(得分:3)
此处的问题相同,仅限MS Access 2016 32位。 也测试了一下。 似乎会影响所有办公应用程序。 我在Windows 10 64 Bit上运行办公室32位。
我希望有人能够知道这里究竟发生了什么。 这段代码以前工作得很好。
编辑:罪魁祸首似乎是更新KB4011051,卸载后错误消失。我正在调查它,看看我是否可以找出这是设计还是错误。