Internet Explorer自动化不适用于IE11

时间:2014-08-25 15:09:38

标签: vba internet-explorer

我有一些代码可以通过VBA中的Internet Explorer自动化从多个网站检索数据。我的代码在IE8中没有问题,但是在IE11中,在调用Internet Explorer对象的Navigate方法之后,Document和LocationURL没有更新;他们仍然参考以前显示的网站。这里有一些代码可以重现问题:

Sub Test()
    Debug.Print "start"
    Dim ie
    Set ie = CreateObject("InternetExplorer.Application")
    ie.Visible = True
    ie.Navigate "http://en.wikipedia.org/wiki/Visual_Basic"
    wait ie
    Debug.Print "Current URL: " & ie.LocationURL
    ie.Navigate "http://en.wikipedia.org/wiki/Microsoft_Office"
    wait ie
    Debug.Print "Current URL: " & ie.LocationURL
    Set ie = Nothing
End Sub

Sub Wait(ie As Variant)
    Do While ie.Busy
        Application.wait DateAdd("s", 1, Now)
    Loop
End Sub

当在具有IE8的机器上运行上述Test子时,它会打印两个不同的URL,这是预期的行为。但是,当我在使用IE11的计算机上运行相同的代码时,它会打印第一个URL两次。知道什么可能是错的吗?

更新:我无法找到解决方案,因此我选择了为每个网址打开新IE窗口的解决方法。

2 个答案:

答案 0 :(得分:2)

我不熟悉您正在使用的VBA IE自动化,但听起来您遇到的问题与IE11上的Selenium WebDriver相同。

您可能需要遵循Selenium Wiki中提供的相同步骤。

  

仅对于IE 11,您需要在目标上设置注册表项   计算机使驱动程序可以保持与实例的连接   它创建的Internet Explorer。对于32位Windows安装,   您必须在注册表编辑器中检查密钥   HKEY_LOCAL_MACHINE \ SOFTWARE \微软\互联网   资源管理器\ MAIN \ FeatureControl \ FEATURE_BFCACHE。对于64位Windows   装置,关键是   HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \微软\互联网   资源管理器\ MAIN \ FeatureControl \ FEATURE_BFCACHE。请注意   FEATURE_BFCACHE子键可能存在也可能不存在,应该是   如果它不存在则创建。重要提示:在此密钥内,创建一个   DWORD值名为iexplore.exe,值为0.

http://code.google.com/p/selenium/wiki/InternetExplorerDriver

希望能解决您的问题!

答案 1 :(得分:0)

THX,你帮帮我了。 W7 Ultimate 64bit捷克,IE11,VBA in Microstation V8i 我使用的代码如下:

Public explorer As Object
....
Set explorer = CreateObject("InternetExplorer.Application")
....

If InStr(explorer.LocationURL, "CAPTCHA") = 0 Then
...
End If