如果Word在从Excel文件中读取时崩溃,请关闭Excel应用程序

问题描述 投票:0回答:1

我正在尝试确保如果通过宏从其收集数据的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文件是悬挂的。有没有办法防止这种情况发生?

excel vba ms-word
1个回答
1
投票

如果Word崩溃,您将需要一个不同的过程来关闭Excel。

一些选择:

  1. 向用户显示Excel,以便用户可以关闭Excel objXL.visible = true
  2. 如果您的VBA错误处理程序确实运行,您可能想要更改: objBook.ActiveWorkbook.Close objBook.Close objBook.Close False ' Close workbook without saving changes objXL.Quit ' Exit Excel
  3. 正如Freeflow建议的那样,如果无法找到Word文档,请关闭Excel,以便进行另一个进程(例如Excel中的计时器事件或单独的VBScript进程)
© www.soinside.com 2019 - 2024. All rights reserved.