下面的代码在第一次运行时起作用,但在后续运行时经常失败。 它失败的行在下面评论。我认为循环通过SHDocVw.ShellWindows会产生问题,我需要在再次运行之前清理一些东西。要复制此问题,请在IE中打开google,然后运行此过程,重复此操作。谢谢你的帮助。确切的错误是来自HRESULT的异常:0x800A01B6。 (请注意,这是更复杂代码的简化版本,如果已设置,我实际上会多次重复使用IE_test。)
Public IE_test As SHDocVw.InternetExplorer
Sub TestIE()
Dim shellWindows_3 As New SHDocVw.ShellWindows()
Dim htmlDoc As String
Dim link1 = "google.com"
If IsNothing(IE_test) = True Then
For Each ie_x As SHDocVw.InternetExplorer In shellWindows_3
If ie_x.LocationURL.Contains(link1) Then 'find the google instance
IE_test = ie_x
End If
Next
End If
With IE_test
.Visible = True
htmlDoc = .Document.Body.InnerHtml 'Fails here on second run
.Quit()
End With
IE_test = Nothing
MsgBox(Len(htmlDoc))
End Sub
答案 0 :(得分:1)
我最终通过从任何程序中删除.Quit()来解决此问题(直到程序关闭)。现在,我总是重用IE的现有实例,而不是关闭和重新打开,这是允许避免错误的原因。