Vba: как получить список всех открытых книг
Вы можете использовать цикл For Each в VBA, чтобы получить список всех открытых книг Excel.
Вот общий способ сделать это на практике:
Sub ListAllOpenWorkbooks()
Dim wbName As String
Dim wb As Workbook
'add each open workbook to message box
For Each wb In Application.Workbooks
wbName = wbName & wb.Name & vbCrLf
Next
'display message box with all open workbooks
MsgBox wbName
End Sub
Этот конкретный макрос создаст окно сообщения, содержащее список всех открытых книг Excel.
В следующем примере показано, как использовать этот макрос на практике.
Пример. Получите список всех открытых книг с помощью VBA.
Предположим, что в данный момент открыты следующие три книги Excel:
- baseball_data.xlsx
- Football_data.xlsx
- хоккей_data.xlsx
Допустим, мы хотим использовать VBA для вывода списка имен всех этих открытых книг.
Для этого мы можем создать следующий макрос:
Sub ListAllOpenWorkbooks()
Dim wbName As String
Dim wb As Workbook
'add each open workbook to message box
For Each wb In Application.Workbooks
wbName = wbName & wb.Name & vbCrLf
Next
'display message box with all open workbooks
MsgBox wbName
End Sub
Когда мы запускаем этот макрос, мы получаем следующий вывод:
В окне сообщения отображаются имена каждой открытой книги, причем каждая уникальная книга указана в отдельной строке.
Обратите внимание, что мы использовали константу vbCrLf в цикле For Each для вставки возврата каретки, который перемещает курсор на следующую строку.
Это позволило нам перечислить каждую открытую книгу в отдельной строке в окне сообщения.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи в VBA:
Как переименовать файл с помощью VBA
Как составить список файлов в папке с помощью VBA
Как открыть все файлы в папке с помощью VBA
Как проверить, существует ли файл с помощью VBA