2014-11-14 60 views
4

在同一行上出現兩個不同的錯誤。有時,這一個:獲取InternetExplorer對象的ReadyState時出現自動化錯誤

Automation error: object invoked has disconnected from its clients

有時:

the interface is unknown

最少的代碼來重現錯誤:

Sub mcve() 
    Dim ie As Object 
    Dim www As String 
    Set ie = New InternetExplorerMedium 
    www = "http://www.stackoverflow.com" 
    ie.navigate www 
    ie.Visible = False 
    While ie.ReadyState <> 4 ' <~~~~~~~~~~~~~~~~~~~~~~~~ Error occurs here 
     DoEvents 
    Wend 
End Sub 

這需要一個參考:工具>參考...> Microsoft Internet控制

第二次出現While ie.ReadyState <> 4錯誤。我該如何解決?

回答

0

而不是

Set ie = New InternetExplorerMedium 

只使用

Set ie = New InternetExplorer 

或用於後期綁定:

Set ie = CreateObject("InternetExplorer.Application") 

這使得錯誤消失。

我不確定爲什麼你會首先使用InternetExplorerMedium。引用小字在the documentation

Remarks

Windows Internet Explorer 8. On Windows Vista, to create an instance of Internet Explorer running at a medium integrity level, pass CLSID_InternetExplorerMedium (defined in exdisp.idl) to CoCreateInstance . The resulting InternetExplorerMedium object supports the same events, methods, and properties as the InternetExplorer object.

你真的使用IE8在Windows Vista上,和你真的想「中等完整性級別」,這意味着什麼?我不這麼認爲。

4

這是一個previously asked question的副本。此問題似乎是由Internet Explorer安全設置引起的 - 在安全區域之間切換時,IE的當前實例被終止並創建新實例,因此您對舊進程的引用不再有效。

一些建議的解決方案分別爲:

  1. 更改IE的安全設置。取消選中「Internet選項」的「安全」選項卡上的「啓用保護模式」。
  2. 直接導航到IP地址而不是URL。這是爲我修復它的那個。例如,ie.navigate "64.233.177.106"(Google的IP地址)
  3. Set ie = New InternetExplorerMedium而不是New InternetExplorer。或者在你的情況下,反之亦然。
相關問題