如何关闭Excel以便EXCEL.EXE在任务管理器中停止运行

时间:2017-02-09 17:24:54

标签: vba excel-vba ms-access access-vba excel-2016

我有一个访问数据库,用于打开excel文件,更新其中的信息,然后多次运行宏,然后关闭excel文件。问题是,即使代码完成执行并且Access已关闭,EXCEL.EXE实例仍然处于活动状态。我已经尝试了this post在Access端的所有建议,以及在运行主宏之后调用的excel文件中的宏,无论进程运行的是什么。我已经进行了双重检查,并且在运行的代码中的任何其他地方都没有打开对Excel的引用,并且excel宏也不会打开Excel的新实例。

我正在使用Excel 2016和Access 2007(由于公司政策,我们不允许升级到较新版本的Access。)

我用来打开excel文件的原始代码,运行宏并关闭excel应用程序如下:

Dim XL As Excel.Application
Dim WB As Excel.Workbook
Dim WS As Excel.Worksheet

Set XL = New Excel.Application
XL.Visible = False
XL.DisplayAlerts = False

Set WB = XL.Workbooks.Open(Exporter)
Set WS = WB.Sheets(1)

For i = 0 to 9
    '-Generate data to place in excel sheet here-
    WS.Range("A1") = SomeData
    WS.Range("B1") = SomeOtherData
    XL.Run "Excel Macro"
Next i

Set WS = Nothing
WB.Close False
Set WB = Nothing
XL.Quit
Set XL = Nothing

1 个答案:

答案 0 :(得分:1)

看起来它实际上并不是代码的问题。我的公司有一个用于Excel的水印COM加载项,它在打开Excel时自动加载,并且显然在我的代码创建的Excel实例中加载COM加载项不允许停止执行,只要加载项是根据{{​​3}}中的讨论加载。由于没有通过VBA执行此操作的权限,我不得不手动关闭COM加载项,但我怀疑以下代码应该关闭任何有问题的COM加载项,因为您具有适当的权限。

For i = 1 To XL.COMAddIns.Count
    XL.COMAddIns(j).Connect = False
Next i