我使用的是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.ReadyState
或MsgBox "Loading webpage"
就好。
再次,代码工作完全正常,但在IE 11的Windows 7上没有问题,但在IE 11的Windows 10上无法正常工作。在多台W7和W10机器上测试,结果相同。
当您在Windows 10中手动打开IE 11时,是否有任何消息框会自动出现?例如“使这个默认浏览器”等 – Jordan
在循环中,你的意思是'while ie.ReadyState <> 4或ie.Busy:DoEvents:Wend'?这是正常的,试图在这个循环之前获得'ie.Document.Title'将不起作用,因为文档尚未完全加载,并且标题将失败。它如何“停止”?你的意思是它卡在循环中?尝试使用F8逐步完成代码。检查ie.ReadyState值是什么。 –
尝试循环'Do:Debug.Print TypeName(ie):DoEvents:Loop While ie.ReadyState <> 4或ie.Busy',并显示输出。 – omegastripes