对象'IWebBrowser2'的Excel VBA“方法'文档'失败”

时间:2015-05-06 20:00:51

标签: excel vba excel-vba web-scraping

我正在尝试在Excel中自动执行表单提交工作,并且在基础知识方面存在问题。我一直收到错误消息:

  

“对象'IWebBrowser2'的方法'文档''失败了”

使用代码,如果我在等待检查中包含Or部分,我会收到错误

  

“自动化错误调用的对象已与其客户端断开连接。”

我不知道该怎么做,我已经搜遍了所有的解决方案。此代码最终会执行更多操作,但在第一次尝试getElementsByTagName时仍会失败。

Sub GoToWebsiteTest()
Dim appIE As Object 'Internet Explorer
Set appIE = Nothing
Dim objElement As Object
Dim objCollection As Object

If appIE Is Nothing Then Set appIE = CreateObject("InternetExplorer.Application")
sURL = *link*
With appIE
    .Visible = True
    .Navigate sURL
End With

Do While appIE.Busy ' Or appIE.ReadyState <> 4
    DoEvents
Loop

Set objCollection = appIE.Document.getElementsByTagName("input")

Set appIE = Nothing
End Sub

3 个答案:

答案 0 :(得分:8)

我不久前遇到了同样的问题。在中等完整性级别使用Internet Explorer。 InternetExplorer默认为低完整性级别,如果您在工作时通过本地Intranet执行此操作,有时会给出您在上面显示的第二条错误消息。 点击here以获取更多信息。我在下面修改了你的代码。如果有帮助,请告诉我。

Sub GoToWebsiteTest()
Dim appIE As InternetExplorerMedium
'Set appIE = Nothing
Dim objElement As Object
Dim objCollection As Object

Set appIE = New InternetExplorerMedium
sURL = "http://example.com"
With appIE
    .Navigate sURL
    .Visible = True
End With

Do While appIE.Busy Or appIE.ReadyState <> 4
    DoEvents
Loop

Set objCollection = appIE.Document.getElementsByTagName("input")

Set appIE = Nothing
End Sub

记住Microsoft Internet Controls的引用,并根据您计划进一步执行的操作,Microsoft HTML对象库

答案 1 :(得分:0)

与上面的代码不完全相同,但有些类似,下面的代码解决了我的问题:

Do
Loop Until ie.readystate = 3
Do
Loop Until ie.readystate = 4

只需将它放在要开始处理内容的行之前。 要获得有关其工作原理的详细信息,请查看here

答案 2 :(得分:0)

以下方法解决了我的错误问题: 通过“任务管理器”关闭所有资源管理器实例&#39;并尝试运行它将起作用的代码。