Закройте приложение Excel, если Word вылетает при чтении из файла Excel - PullRequest
0 голосов
/ 22 марта 2019

Я пытаюсь сделать так, чтобы файл Excel не оставался открытым, если приложение Word, которое собирает данные из него с помощью макроса, неожиданно завершает работу.

Макрос обрабатывает большинство ошибок, используя приведенный ниже код, но яВы хотите, чтобы файл 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 остается открытым открытым,Есть ли способ предотвратить это?

1 Ответ

1 голос
/ 23 марта 2019

В случае сбоя 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, есть другой процесс (например, событие таймера в Excel или отдельный процесс VBScript), который закрывает Excel, если не может найти документ Word
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...