Word中的Excel应用程序不会关闭

时间:2017-06-19 08:44:42

标签: excel vba ms-word

我已经尝试了所有关闭应用程序的方法,但保留在任务管理器的后台打开

Dim appXL As Object, fileXL As Object, nameXlFile, filePath As String filePath = file_dir & "\" & file_name Set appXL = CreateObject("Excel.Application") appXL.Visible = False Set fileXL = Workbooks.Open(FileName:=filePath , ReadOnly:=True) ......

appXL.quit 
set appXL = Nothing

appXL.quit set appXL = Nothing

3 个答案:

答案 0 :(得分:4)

当您从另一个VBA应用程序自动化Excel并使用非限定Excel对象时,会出现此模式。它的种类,它要求VBA运行时在对象的父级上创建隐藏/虚拟引用。

您必须通过自动化使用Excel对象非常具体。当从另一个应用程序驱动时,Excel对非限定对象变得不太容忍限定所有内容。从

开始
Set fileXL = appXL.Workbooks.Open(FileName:=filePath , ReadOnly:=True)
'           ^^^^^^^

并确保代码中的每个Excel对象都是完全限定的。

此外,如果可以,最好使Excel应用程序可见,以观察发生的情况。有时会出现由于某种原因显示警报,即未保存的工作簿。可以使用

禁用这些警报
appXL.DisplayAlerts = False

也很有用,但至少在应用程序的开发阶段,让appXL可见是有用的,直到你对它相当熟悉。

P.S。 我使用和不使用明确appXL.限定条件在MS-Word中测试了您的代码,删除了......中的所有其他内容。没有资格,Excel的实例仍留在任务管理器中。凭借资格,它消失了。

答案 1 :(得分:3)

尝试在您写“.....”的地方添加以下内容:

fileXL.Close False

这会在您退出应用程序之前强制关闭文件。

我相信Excel会询问您是否要保存工作簿(即使它已作为Readonly打开)。退出例程后,这会使Excel保持打开/活动状态,但您无法看到它。

完整的代码应该是这样的:

Sub OpenExcelWorkbook()
    Dim appXL As Object, fileXL As Object, nameXlFile, filePath As String

    filePath = file_dir & "\" & file_name
    Set appXL = CreateObject("Excel.Application")
    appXL.Visible = False
    Set fileXL = Workbooks.Open(FileName:=filePath , ReadOnly:=True)

    ' Do additional/optional stuff with your workbook here...

    fileXL.Close False ' Close the workbook without saving

    appXL.quit 
End Sub

答案 2 :(得分:2)

你可以尝试这样:

Dim appXL As Object, fileXL As Object, nameXlFile, filePath As String
filePath = file_dir & "\" & file_name
Set appXL = CreateObject("Excel.Application")
appXL.Visible = False
Set fileXL = Workbooks.Open(FileName:=filePath , ReadOnly:=True)

fileXL.Save
fileXL.Close

您不需要set appXL = Nothing,因为appXL是范围内的变量 目前的程序和“垃圾收集器”会照顾它。