Excel VBA强制closuresIE

我正在使用下面的sub来closures自动化后的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秒后,我可以重新运行代码。 有没有什么办法“强行closures”的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 

修改您的主要子Quit IE应用程序,然后将对象variables设置为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程序。

我用一个简单的过程来创build一个InternetExplorer对象,导航,然后closures它使用IE.QuitSet IE = Nothing

显然,closures后,互联网仍然在后台运行了大约一分钟(我注意到它使用任务pipe理器,后台进程)。 我进入Internet Explorer的选项,并点击“ 删除浏览历史logging退出 ”。

这解决了我的问题。 我不知道为什么IE浏览器需要很长时间才能清除历史logging,我不确定是否有解决方法,但是迄今为止,这是唯一可行的选项。