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: как вставить несколько строк