我目前正在使用以下子程序在自动化后关闭我的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
答案 0 :(得分:1)
将主要子修改为Quit
IE应用程序,然后将对象变量设置为Nothing
:
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
IE.Quit
Set IE = Nothing
End Sub
您不再需要CloseIE
程序了。
答案 1 :(得分:1)
我使用一个简单的过程来创建InternetExplorer
对象,导航,然后使用IE.Quit
和Set IE = Nothing
关闭它。
显然在关闭之后,互联网仍在后台运行大约一分钟(我注意到它使用任务管理器,后台进程)。我进入了Internet Explorer选项并且未点击“删除退出时的浏览历史记录”。
这解决了我的问题。我不确定为什么IE需要很长时间来清除历史记录,我不确定是否有解决方法,但它是迄今为止我唯一可行的选择。