VBA InternetExplorer.Application对象挂起

时间:2017-01-09 16:59:56

标签: excel vba internet-explorer windows-10

我正在使用带有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.ReadyStateMsgBox "Loading webpage"就好了。

此外,代码在Windows 7上使用IE 11时完全没问题,但在使用IE 11的Windows 10上无效。在多台W7和W10机器上进行了测试,结果相同。

1 个答案:

答案 0 :(得分:0)

在尝试了许多不同的选项之后,我终于能够让它发挥作用了。根据OmegaStripes的建议,我开始搞乱兼容模式。像许多事情一样,最简单的解决方案最终成为正确的解决方案。将我的Intranet站点添加到兼容性视图设置后,它可以完美地对VBA进行零代码更改。

  1. 启动 IE 11
  2. 点击工具
  3. 点击兼容性视图设置
  4. 在文本区域输入您的网址,然后点击添加
  5. 检查以兼容模式显示Intranet网站
  6. 点击关闭
  7. 执行此操作后,我退出IE 11,重新启动我的Excel电子表格,其中包含之前无法运行的VBA。执行了VBA代码,它就像在Windows 7上使用IE 11一样工作。

    希望这可以帮助其他人并为他们带来很多麻烦。

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