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.ReadyStateMsgBox "Loading webpage"就好了。

再次,代码工作完全没有问题,在IE 11的Windows 7上,但不能在IE 10的Windows 10上工作。在多个W7和W10机器上testing,结果相同。

尝试了许多不同的select后,我终于能够得到它的工作。 根据OmegaStripes的build议,我开始搞兼容模式。 像许多事情一样,最简单的解决scheme最终是正确的。 在将我的Intranet站点添加到兼容性视图设置后,它对VBA进行了零代码更改,效果很好。

  1. 启动IE 11
  2. 点击工具
  3. 单击兼容性视图设置
  4. input您的url到文本区域,然后点击添加
  5. 在兼容模式下检查显示Intranet站点
  6. 点击closures

这样做后,我退出IE 11,重新启动我的Excel电子表格与以前没有运作的VBA。 执行了VBA代码,它的工作方式与使用IE 11的Windows 7一样。

希望这可以帮助别人,并为他们节省很多头痛。

特别感谢OmegaStripes坚持这一点,帮助我看到实际问题,而不是过度思考。