2017-01-09 119 views
1

我使用的是VBA中的旧Excel文档,它可以在Windows 7上与IE 11一起使用,但是在Windows 10上的IE 11上它不起作用。 IE 11启动到请求的URL,但就是这样。任何时候我尝试访问事件,方法或属性时,它都会停止。没有错误代码,没有崩溃,只是停止。VBA InternetExplorer.Application对象挂起

我已经证实了我对的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代码放在测试前后。只有MsgBox在循环工作之前,除非我尝试使用MsgBox ie.Document.Title,但我可以做MsgBox ie.ReadyStateMsgBox "Loading webpage"就好。

再次,代码工作完全正常,但在IE 11的Windows 7上没有问题,但在IE 11的Windows 10上无法正常工作。在多台W7和W10机器上测试,结果相同。

+2

当您在Windows 10中手动打开IE 11时,是否有任何消息框会自动出现?例如“使这个默认浏览器”等 – Jordan

+1

在循环中,你的意思是'while ie.ReadyState <> 4或ie.Busy:DoEvents:Wend'?这是正常的,试图在这个循环之前获得'ie.Document.Title'将不起作用,因为文档尚未完全加载,并且标题将失败。它如何“停止”?你的意思是它卡在循环中?尝试使用F8逐步完成代码。检查ie.ReadyState值是什么。 –

+0

尝试循环'Do:Debug.Print TypeName(ie):DoEvents:Loop While ie.ReadyState <> 4或ie.Busy',并显示输出。 – omegastripes

回答

0

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

  1. 启动IE 11
  2. 点击工具
  3. 点击兼容性视图设置
  4. 键入URL到文本框,并单击添加
  5. 检查显示Intranet站点在兼容模式下
  6. 点击关闭

这样做我退出IE 11之后,重新启动我的Excel试算表与以前没有发挥作用的VBA。执行VBA代码,它的工作方式与使用IE 11的Windows 7一样。

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

特别感谢OmegaStripes坚持通过这与我和帮助我看到的实际问题,而不是过度思考它。