我几乎有这个工作。但是,我发现即使在我的 VBA 过程完成后,Microsoft Excel 仍然在后台打开(在任务管理器中可见)。如果我第二次运行该程序,它会在我身上出错。如果我终止 Microsoft Excel 进程,那么我可以再次运行我的 VBA 程序而不会出错。
我已经包含了对 Microsoft Excel 16.0 对象库的引用。
这是我的代码:
Dim appExcel As Excel.Application
Dim myWorkbook As Excel.Workbook
Dim myWorksheet As Excel.Worksheet
Dim strFilePath As String
Dim strWorksheetName As String
'Open the file as read-only.
strFilePath = <Path to file>
Set appExcel = CreateObject("Excel.Application")
Set myWorkbook = appExcel.Workbooks.Open(strFilePath, , True)
appExcel.Visible = False
Set myWorksheet = myWorkbook.Sheets(<The name of the worksheet I'm interested in>)
<read stuff from the worksheet in the same fashion that I would if I were doing this in Excel itself>
'Close the workbook without saving any changes.
myWorkbook.Close False
'appExcel.Quit
'Set appExcel = Nothing
如果我取消注释“appExcel.Quit”或“set appExcel = Nothing”语句似乎并不重要。那么正确关闭工作簿以使其完全从内存中删除的优雅方法是什么?
谢谢!
当您使用 关闭工作簿时
myWorkBook.Close False
,您将关闭工作簿以及 excel,因此最后两行 toappExcel.Quit
and destroy COM Object 不会执行。要摆脱这个问题,您需要使用这些行。
关闭工作簿,不保存并从 Excel 退出:
关闭、保存工作簿并从 Excel 退出: