我在同一行上遇到两个不同的错误。有时候这个:
自动化错误:调用的对象已与其客户端断开连接
有时候:
界面未知
重现错误的最小代码:
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
这需要参考:工具&gt;参考文献...&gt; Microsoft Internet Controls
第二次While ie.ReadyState <> 4
发生错误。我该如何解决这个问题?
答案 0 :(得分:5)
这是previously asked question的副本。问题似乎是由Internet Explorer安全设置引起的 - 当在安全区域之间切换时,IE的当前实例被终止并且创建了一个新实例,因此您对旧进程的引用不再有效。
一些建议的解决方案是:
ie.navigate "64.233.177.106"
(Google的IP地址)Set ie = New InternetExplorerMedium
代替New InternetExplorer
。或者在你的情况下,反之亦然。答案 1 :(得分:3)
而不是
Set ie = New InternetExplorerMedium
只需使用
Set ie = New InternetExplorer
或者,对于后期绑定:
Set ie = CreateObject("InternetExplorer.Application")
这会使错误消失。
我不确定为什么你会首先使用InternetExplorerMedium
。在the documentation中引用小字:
<强>说明强>
Windows Internet Explorer 8.在Windows Vista上,要创建以中等完整性级别运行的Internet Explorer实例,请将
CLSID_InternetExplorerMedium
(在exdisp.idl中定义)传递给{{1 }}。生成的CoCreateInstance
对象支持与InternetExplorerMedium
对象相同的事件,方法和属性。
您是否真的在Windows Vista上使用IE8,并且您真的想要“中等完整性级别”,无论这意味着什么?我不这么认为。
答案 2 :(得分:0)
打开Internet Explorer,然后转到Internet设置,打开“站点”,然后清除需要服务器识别的网页。问题出在服务器上。