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,“垃圾回收器”会处理它。