我正在尝试在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
答案 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;并尝试运行它将起作用的代码。