Word中的Excel应用程序不会closures

我已经尝试了所有的方法来closures应用程序,但留在任务pipe理器的后台打开

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 

当您从另一个VBA应用程序中自动执行Excel并且使用不合格的Excel对象时,会发生此模式。 它的作用是让VBA运行时在对象的父对象上创build一个隐藏/虚拟引用。

您必须通过自动化使用Excel对象非常具体。 从另一个应用程序驱动时,Excel对不合格对象的容忍度会降低合格一切 。 从…开始

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

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

另外,如果可以的话,最好使Excel应用程序可见,以观察发生了什么。 它有时会出现某种原因显示警报,即未保存的工作簿。 这些警报可以通过禁用

 appXL.DisplayAlerts = False 

这也是有用的,但是至less在应用程序的开发阶段,让你的appXL可见是有用的,直到你相当适应它为止。

ps我用MS-Wordtesting了你的代码,没有显式的appXL. 资格,除去......一切。 没有资格,Excel的实例仍然在任务pipe理器中。 随着资格,它消失了。

尝试添加以下你写的“…..”:

 fileXL.Close False 

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

我相信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 

你可以这样试试:

 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是当前过程范围内的variables,“垃圾回收器”会处理它。