我正在尝试确保如果通过宏从其收集数据的Word应用程序突然崩溃,则Excel文件不会保持打开状态。
宏使用下面的代码处理大多数错误,但我想确保Excel文件在未处理的事件面前不会悬空。这样的事件可能是用户在宏运行时从任务管理器关闭word文档。
Public Function GatherDataFromExcel(x) As Collection
On Error GoTo CloseExcel
Dim path_file_excel As String
path_file_excel = "\path to file\file.xlsx"
Dim objXL As Object ' Excel.Application
Dim objBook As Object ' Excel.Workbook
Set objXL = CreateObject("Excel.Application")
On Error Resume Next
Set objBook = objXL.Workbooks.Open(path_file_excel)
On Error Resume Next
'Code that gathers data and returns that data from the function
CloseExcel:
If Not objBook Is Nothing Then
objBook.ActiveWorkbook.Close
objBook.Close
Set objBook = Nothing
If Not objXL Is Nothing Then
Set objXL = Nothing
End If
End If
End Function
我已经关闭word文件执行中检查,实际上excel文件是悬挂的。有没有办法防止这种情况发生?
如果Word崩溃,您将需要一个不同的过程来关闭Excel。
一些选择:
objXL.visible = true
objBook.ActiveWorkbook.Close
objBook.Close
至
objBook.Close False ' Close workbook without saving changes
objXL.Quit ' Exit Excel