我正在使用带有VBA的旧Excel文档,它可以在Windows 7上与IE 11一起使用,但是在Windows 10上的IE 11上它不起作用。 IE 11启动到请求的URL,但就是这样。无论何时我尝试访问事件,方法或属性,它都会停止。没有错误代码,没有崩溃,只是停止。
我已经确认包含 Microsoft Internet Controls 和 Microsoft HTML Object Library 的引用(它们不是,但它们现在是)。
Dim ie As Object
If ie Is Nothing Then
Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True
End If
url = "www.myurl.com"
ie.Navigate url
While ie.ReadyState <> 4 Or ie.Busy: DoEvents: Wend
检查代码从不执行,我在测试之前和之后放置了MsgBox代码。在循环之前只有MsgBox工作,除非我尝试使用MsgBox ie.Document.Title
,但我可以做MsgBox ie.ReadyState
或MsgBox "Loading webpage"
就好了。
此外,代码在Windows 7上使用IE 11时完全没问题,但在使用IE 11的Windows 10上无效。在多台W7和W10机器上进行了测试,结果相同。
答案 0 :(得分:0)
在尝试了许多不同的选项之后,我终于能够让它发挥作用了。根据OmegaStripes的建议,我开始搞乱兼容模式。像许多事情一样,最简单的解决方案最终成为正确的解决方案。将我的Intranet站点添加到兼容性视图设置后,它可以完美地对VBA进行零代码更改。
执行此操作后,我退出IE 11,重新启动我的Excel电子表格,其中包含之前无法运行的VBA。执行了VBA代码,它就像在Windows 7上使用IE 11一样工作。
希望这可以帮助其他人并为他们带来很多麻烦。
特别感谢 OmegaStripes 与我一起坚持并帮助我看到实际问题,而不是过度思考。