Excel VBA强制关闭IE

时间:2014-12-23 18:46:31

标签: excel vba internet-explorer

我目前正在使用以下子程序在自动化后关闭我的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

2 个答案:

答案 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.QuitSet IE = Nothing关闭它。

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

这解决了我的问题。我不确定为什么IE需要很长时间来清除历史记录,我不确定是否有解决方法,但它是迄今为止我唯一可行的选择。