VBA InternetExplorer.Application对象挂起
我正在使用VBA的旧Excel文档,可以在Windows 7上使用IE 11,但是在Windows 10上的IE 11上不起作用。 IE 11启动到请求的URL,但就是这样。 任何时候我尝试访问一个事件,方法或属性,它会停止。 没有错误代码,没有崩溃,只是停止。
我已经确认包含了我对Microsoft Internet控件和Microsoft HTML对象库的引用(它们不是,但现在是它们)。
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代码放在testing之前和之后。 只有MsgBox之前的循环工作,除非我尝试使用MsgBox ie.Document.Title
,但我可以做MsgBox ie.ReadyState
或MsgBox "Loading webpage"
就好了。
再次,代码工作完全没有问题,在IE 11的Windows 7上,但不能在IE 10的Windows 10上工作。在多个W7和W10机器上testing,结果相同。
尝试了许多不同的select后,我终于能够得到它的工作。 根据OmegaStripes的build议,我开始搞兼容模式。 像许多事情一样,最简单的解决scheme最终是正确的。 在将我的Intranet站点添加到兼容性视图设置后,它对VBA进行了零代码更改,效果很好。
- 启动IE 11
- 点击工具
- 单击兼容性视图设置
- input您的url到文本区域,然后点击添加
- 在兼容模式下检查显示Intranet站点
- 点击closures
这样做后,我退出IE 11,重新启动我的Excel电子表格与以前没有运作的VBA。 执行了VBA代码,它的工作方式与使用IE 11的Windows 7一样。
希望这可以帮助别人,并为他们节省很多头痛。
特别感谢OmegaStripes坚持这一点,帮助我看到实际问题,而不是过度思考。