我已經在Excel電子表格中編寫了一個VBA宏,該宏可打開特定位置中的所有工作簿,並從這些工作簿中提取數據並驗證並將其複製到活動工作簿。然後打開目錄中的下一個工作簿並重復該過程,直到目錄中的所有文件都已被讀取完畢。VBA不會關閉以編程方式打開的工作簿
一切正常,但我似乎無法得到打開目標工作簿關閉。這包括關閉Excel。我必須殺死任務管理器或PowerShell中的進程以從系統內存中釋放工作簿。
Set fs = CreateObject("Scripting.FileSystemObject")
strExcelFileName = Dir(ThisWorkbook.Path & "\Certs\*.xls", vbNormal)
Set xlApp = CreateObject("Excel.Application")
Do While (strExcelFileName <> "")
xlApp.Workbooks.Open (ThisWorkbook.Path & "\Certs\" + strExcelFileName)
'code to run for each workbook opened
***xlApp.Workbooks.Close*** 'when present, Excel freezes
strExcelFileName = Dir 'next file in directory
Loop
當xlApp.Workbooks.Close線存在並且在程序中調用,EXCEL凍結每一次。沒有它,我可以在系統不堪重負並凍結之前運行3-5個工作簿。然後我必須殺死這些進程,移出這些文件,再移動3個文件並重復,直到所有文件都以這種方式處理完畢。大約需要一個半小時才能完成50.
我想要做的是在打開下一個數據之前從工作簿中獲取數據。
ActiveWorkbook.Close
這會嘗試關閉運行宏的工作簿,而不是已打開的工作簿進行讀取。
這完美地工作。謝謝 – 2012-04-06 13:03:53