Excel不释放工作簿closures内存

我有一个VBScript打开一个文件夹中的所有Excel文件,并将一定范围复制到摘要文件。 摘要文件在整个操作中保持打开状态,但其他文件在复制范围后closures。 这意味着Excel应用程序始终保持打开状态。

问题在于,即使在closures并且内存使用稳步攀升之后,Windows仍然保留着每个工作簿。 我试图通过禁用所有加载项并删除personal.xlsb工作表来隔离问题。 然后我手动打开几个工作簿(不涉及脚本)并逐一closures它们。 内存使用增加了每个打开的文件,但没有减less,当我开始closures它们。

我已经search了几个小时,唯一的答案是我可以find退出并重新启动应用程序。 这是一个可悲的解决方法(和我的脚本痛苦) – 必须有一个更好的方式来释放封闭的工作簿内存。

我正在运行Excel 2013。

Set objFSO = CreateObject("Scripting.FileSystemObject") Set objShell = CreateObject("Shell.Application") 'Get summary folder location Set StartFolder = objShell.BrowseForFolder(0, "Select the folder to summarize", 0, 5) If StartFolder Is Nothing Then Wscript.Quit End If StartFolderName = StartFolder.self.path Set SuperFolder = objFSO.GetFolder(StartFolderName) 'Open Excel Set objExcel = CreateObject("Excel.Application") objExcel.Visible = False Set objWorkbook = objExcel.Workbooks.Add() NewExcelName = StartFolderName & "\Summary.xlsx" objWorkbook.SaveAs(NewExcelName) Call ShowSubfolders (SuperFolder) '------------------------------------------------------------------------------ 'Save and quit objWorkbook.Save objExcel.Quit Wscript.echo "Done" '------------------------------------------------------------------------------ Sub ShowSubFolders(fFolder) Set objFolder = objFSO.GetFolder(fFolder.Path) Set colFiles = objFolder.Files For Each objFile in colFiles 'Open document Set objxls = objExcel.Workbooks.Open(objFile.path) 'Do stuff here 'Close Document objxls.Close False Next For Each Subfolder in fFolder.SubFolders ShowSubFolders(Subfolder) Next End Sub 

尝试objxls.quit

Set objxls = Nothing只是销毁对象引用。 .quit方法破坏对象本身。