Excel VBA Макросы. Как узнать, открылась ли книга (эксель-файл)?

Автор Sleepy, 14 декабря 2021, 14:00

Sleepy

Использую такой код для открытия книги:
Код:
Sub Макрос()

    Dim Книга As Workbook, FN As String
   
   
    ' Полное имя (путь + имя) книги, которую надо открыть.
    FN = "C:\Users\User\Desktop\Книга1.xlsb"
   
    ' Открытие книги.
    Set Книга = Workbooks.Open(FileName:=FN)
   
End Sub
[свернуть]

Но иногда, при открытии книги происходит ошибка, если с книгой проблема (обнаружено содержимое, которое не удалось прочитать). В этом случае макрос прерывается и появляется ошибка.
Что нужно сделать, чтобы во время открытия повреждённой книги макрос не прерывался, а продолжал работу, и чтобы было понятно, что книга не открылась?

Администратор

Ошибку можно перехватить с помощью On Error и затем, анализируя переменную "Книга" с помощью If ... Then, можно понять - открылась книга или нет.

Код:
Sub Макрос()

    Dim Книга As Workbook, FN As String
   
   
    ' Полное имя (путь + имя) книги, которую надо открыть.
    FN = "C:\Users\User\Desktop\Книга1.xlsb"
   
    ' Открытие книги.
    On Error Resume Next
    Set Книга = Workbooks.Open(FileName:=FN)
    On Error GoTo 0
   
    ' Проверка, открылась книга или нет.
    If Книга Is Nothing Then
        MsgBox "Книга не открылась.", vbExclamation
        Exit Sub
    End If

End Sub
[свернуть]