【发布时间】:2014-12-23 18:46:30
【问题描述】:
我目前正在使用以下子程序在自动化后关闭我的 IE:
Public Sub CloseIE()
Dim Shell As Object
Dim IE As Object
Set Shell = CreateObject("Shell.Application")
For Each IE In Shell.Windows
If TypeName(IE.Document) = "HTMLDocument" Then
IE.Quit
End If
Next
End Sub
这很好用,但是当我再次尝试运行 IE 代码时出现问题,我得到以下信息:
运行时错误'-2147023706 (800704a6)':
自动化错误
已安排系统关闭。
20 秒后,我可以重新运行代码。有什么方法可以“强制关闭”IE,这样我就可以在没有错误的情况下直接再次运行代码?
编辑:
这是启动 IE 的代码:
Sub testSub()
Dim IE As Object, Doc As Object, strCode As String
Set IE = CreateObject("internetexplorer.application")
IE.Visible = True
IE.Navigate "website name"
Do While IE.ReadyState <> 4: DoEvents: Loop
Set Doc = CreateObject("htmlfile")
Set Doc = IE.Document
CODE HERE
CloseIE
End Sub
【问题讨论】:
-
也许您应该显示您在其中实例化 IE 并创建该对象的代码。这似乎是解决这个问题的更好地方。首先,将该对象分配给一个变量,然后使用该对象的
.Quit方法并将对象变量设置为Nothing。目前的方法并不理想。 -
您应该在实例化后直接使用 IE 对象。这个问题归结于糟糕的设计。
标签: excel vba internet-explorer