VBA IE.Document空错误

时间:2016-01-20 04:27:30

标签: excel vba internet-explorer document

我一直在运行查询一段时间,现在从网页上获取数据。经过多次运行后,它决定停止工作,我已经将问题追溯到ie.document对象 - 它永远不会返回任何内容。

编译项目时,我看到ie的“Document”元素返回“Applicaiton-defined或Object-defined error”的错误 - 甚至在我导航到网页之前。此外,一些其他元素也会返回此错误 - 即“状态文本”和“类型”

该链接包含我的错误的屏幕截图: https://www.dropbox.com/s/wcxxep8my10nu8h/vba%20ie%20document.jpg?dl=0

如果在这里不起作用,我正在运行的代码的缩小版本

Sub getCard()

    Dim ie As InternetExplorer
    Dim url1 As String

    url1 = "google.com"

    Set ie = New InternetExplorer
    ie.Visible = True
    ie.Navigate url1
    WaitBrowserQuiet ie

End Sub

Sub WaitBrowserQuiet(objIE As InternetExplorer)

Do While objIE.Busy Or objIE.ReadyState <> READYSTATE_COMPLETE
    DoEvents
Loop

End Sub

一旦我到达“Set ie = New InternetExplorer”代码的一部分就是在创建ie对象时我看到了错误。如果我碰巧导航到网页,那么ie.document对象是空的。

我已经四处寻找并尝试了一些事情来阻止这种情况发生 - 重新启动我的电脑,运行“ie.quit”和“设置ie = Nothing”,重置我的Internet Explorer等等......似乎没什么用。

考虑到即使在导航到网页之前我收到错误消息,这似乎也是一个更深层次的问题。希望有人知道如何阻止错误。

2 个答案:

答案 0 :(得分:0)

您的网址是网址1,尝试更改网址,或只是将网址放在那里。

答案 1 :(得分:0)

在您的代码中,您在子getCard中有本地定义的对象“ie”,当此子结束时,绑定也是如此。从私有Internet区域到公共Internet区域的更改也可以删除对该对象的绑定。我宁愿做的是使用全局对象appIE然后当它遇到这样的错误时我抓住错误(如果TypeName(appIE)=“Object”然后FindIE)并再次使用此子找到该对象:

sleep 1

此代码包含来自stackoverflow的其他人的部分内容,但我忘记了为代码的某些基本部分而归功的人。遗憾。