Форум по VBA и MS Office

VBA, Excel => VBA, макросы в Excel => Тема начата: Sleepy от 14 декабря 2021, 14:00

Название: Excel VBA Макросы. Как узнать, открылась ли книга (эксель-файл)?
Отправлено: Sleepy от 14 декабря 2021, 14:00
Использую такой код для открытия книги:
Код:
Sub Макрос()

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

Но иногда, при открытии книги происходит ошибка, если с книгой проблема (обнаружено содержимое, которое не удалось прочитать). В этом случае макрос прерывается и появляется ошибка.
Что нужно сделать, чтобы во время открытия повреждённой книги макрос не прерывался, а продолжал работу, и чтобы было понятно, что книга не открылась?
Название: Re: Excel VBA Макросы. Как узнать, открылась ли книга (эксель-файл)?
Отправлено: Администратор от 14 декабря 2021, 14:03
Ошибку можно перехватить с помощью 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
[свернуть]
Название: Re: Excel VBA Макросы. Как узнать, открылась ли книга (эксель-файл)?
Отправлено: Sleepy от 14 декабря 2021, 14:11
спасибо