Excel VBA “Method 'Document' of object 'IWebBrowser2' failed”

匿名 (未验证) 提交于 2019-12-03 03:00:02

问题:

I'm trying to automate a form submission in Excel for work, and In have trouble with the basics. I keep getting the error message:

"Method 'Document' of object 'IWebBrowser2' failed"

With the code as is, and if I include the Or part in the waiting check, I get the error

"Automation Error The object invoked has disconnected from its clients."

I'm not sure what to do here, I've searched all over for solutions. This code is intended to eventually do more than this, but it keeps failing on the first try to 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 

回答1:

I ran into this same issue a while back. Use internet explorer at a medium integrity level. InternetExplorer defaults to a low integrity level which, if you are doing this over a local intranet at work, sometimes will give the second error message you show above. Click here for more reading on this. I've modified your code below. Please let me know if that helps.

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 

Remember references for Microsoft Internet Controls, and depending on what you plan on doing further, Microsoft HTML Object Library



回答2:

Not exactly same as above code but somehow similar , the following code solved my problem:

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

Just put it before the line you want to start working with the contents. To get more information about how does it work you can check here



回答3:

The below method solved my problem for this error: Close all the explorer instances through 'Task manager' and try to run the code it will work.



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!