我一直在运行查询一段时间,现在从网页上获取数据。经过多次运行后,它决定停止工作,我已经将问题追溯到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等等......似乎没什么用。
考虑到即使在导航到网页之前我收到错误消息,这似乎也是一个更深层次的问题。希望有人知道如何阻止错误。
答案 0 :(得分:0)
您的网址是网址1,尝试更改网址,或只是将网址放在那里。
答案 1 :(得分:0)
在您的代码中,您在子getCard中有本地定义的对象“ie”,当此子结束时,绑定也是如此。从私有Internet区域到公共Internet区域的更改也可以删除对该对象的绑定。我宁愿做的是使用全局对象appIE然后当它遇到这样的错误时我抓住错误(如果TypeName(appIE)=“Object”然后FindIE)并再次使用此子找到该对象:
sleep 1
此代码包含来自stackoverflow的其他人的部分内容,但我忘记了为代码的某些基本部分而归功的人。遗憾。