Vba: проверьте, открыта ли книга (с примером)


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

 SubCheckWorkbookOpen ()

Dim resultCheck As Boolean
Dim wb As Workbook
Dim specific_wb As String
    
On Error Resume Next
specific_wb = InputBox("Check if this workbook is open:")
    
Set wb = Application.Workbooks.Item(specific_wb)
resultCheck = Not wb Is Nothing

If resultCheck Then
    MsgBox “Workbook is open”
Else
MsgBox “Workbook is not open”
End If
    
End Sub

При запуске этого макроса появится поле ввода, в котором пользователь может ввести имя книги Excel, и макрос создаст окно сообщения с одним из следующих результатов:

  • «Файл открыт»
  • «Файл не открыт»

В следующем примере показано, как использовать этот синтаксис на практике.

Пример: как проверить, открыта ли книга, с помощью VBA

Допустим, у нас сейчас открыты две книги со следующими именами:

  • my_workbook1.xlsx
  • my_workbook2.xlsx

Допустим, мы хотим проверить, открыта ли в данный момент книга с именем my_workbook1.xlsx .

Для этого мы можем создать следующий макрос:

 SubCheckWorkbookOpen ()

Dim resultCheck As Boolean
Dim wb As Workbook
Dim specific_wb As String
    
On Error Resume Next
specific_wb = InputBox("Check if this workbook is open:")
    
Set wb = Application.Workbooks.Item(specific_wb)
resultCheck = Not wb Is Nothing

If resultCheck Then
    MsgBox “Workbook is open”
Else
MsgBox “Workbook is not open”
End If
    
End Sub

Как только мы запустим этот макрос, появится окно, в котором я могу ввести my_workbook1.xlsx в поле ввода:

Как только я нажму ОК , макрос выведет следующее окно сообщения:

Макрос правильно отображает сообщение «Книга открыта», указывая на то, что книга с таким именем в данный момент открыта.

Теперь предположим, что я ввел имя книги, которая в данный момент не открыта:

Как только я нажму ОК , макрос выведет следующее окно сообщения:

Макрос правильно отображает сообщение «Книга не открыта», что указывает на то, что книга с таким именем в данный момент не открыта.

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные задачи в VBA:

VBA: как посчитать количество листов в книге
VBA: как вставить несколько столбцов
VBA: как вставить несколько строк

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *