Это руководство познакомит вас с работой с Объект книги в VBA.
Объект Workbook
Во-первых, чтобы взаимодействовать с книгами в VBA, вы должны понимать Объект книги.
С помощью объекта книги вы можете ссылаться на книги по их имени следующим образом:
1 | Книги ("Book2.xlsm"). Активировать |
Однако этот код будет работать, только если книга открыта. Если книга закрыта, вам нужно будет указать полный путь к книге:
1 | Workbooks.Open ("C: \ Users \ StevePC2 \ Downloads \ book2.xlsm") |
Вместо того, чтобы вводить полный путь, если ваша желаемая книга находится в том же каталоге, что и книга, в которой хранится ваш код, вы можете использовать этот линейный код для открытия книги:
1 | Workbooks.Open (ThisWorkbook.Path & "\ book2.xlsm") |
Это использует объект ThisWorkbook, который мы обсудим в следующем разделе.
Номер индекса книги
Наконец, вы можете ссылаться на книги по их «порядковому номеру». Номер индекса книги соответствует порядку открытия книги (технически это позиция книги в коллекции рабочих книг).
1 | Рабочие тетради (1). Активировать |
Это полезно, если вы хотите закрыть первую (или последнюю) открытую книгу.
Активировать Workbook, ActiveWorkbook и ThisWorkbook
Если рабочая тетрадь НЕ АКТИВЕН, вы можете получить доступ к объектам Рабочей книги следующим образом:
1 | Книги ("Book2.xlsm"). Листы ("Sheet1"). Диапазон ("A1"). Значение = 1 |
Однако, если книга активна, вы можете опустить объект книги:
1 | Листы ("Лист1"). Диапазон ("А1"). Значение = 1 |
А если вы хотите взаимодействовать с активным листом книги, вы также можете опустить объект листов:
1 | Диапазон ("A1"). Значение = 1 |
Активировать книгу
Чтобы активировать книгу, используйте Активировать метод.
1 | Книги ("Book2.xlsm"). Активировать |
Теперь вы можете взаимодействовать с объектами Book2 без явного указания имени книги.
ActiveWorkbook
В ActiveWorkbook объект всегда ссылается на активную книгу. Это полезно, если вы хотите назначить ActiveWorkbook переменной для использования в дальнейшем.
12 | Dim wb As WorkbookУстановить wb = ActiveWorkbook |
ThisWorkbook
В ThisWorkbook Объект всегда ссылается на книгу, в которой хранится выполняющийся код. Чтобы активировать ThisWorkbook, используйте эту строку кода:
1 | ThisWorkbook.Activate |
Открыть книгу
Чтобы открыть книгу, используйте Открытый метод:
1 | Workbooks.Open ("C: \ Users \ StevePC2 \ Downloads \ book2.xlsm") |
Вновь открытая рабочая тетрадь всегда будет ActiveWorkbook, позволяя вам легко взаимодействовать с ним.
1 | ActiveWorkbook.Save |
У метода Open есть несколько других аргументов, позволяющих открывать файлы только для чтения, открывать книги, защищенные паролем, и т. Д. Об этом рассказывается в нашей статье об открытии и закрытии книг.
Открыть и присвоить переменной
Вы также можете открыть книгу и одновременно назначить ее переменной:
12 | Dim wb As WorkbookУстановите wb = Workbooks.Open ("C: \ Users \ StevePC2 \ Downloads \ book2.xlsm") |
Диалог открытия файла
Вы также можете вызвать диалоговое окно «Открыть файл» следующим образом:
12345678 | Подложка OpenWorkbook ()Dim strFile As StringstrFile = Application.GetOpenFilename ()Workbooks.Open (strFile)Конец подписки |
Создать новую (добавить) книгу
Эта строка кода создаст новую книгу:
1 | Рабочие тетради. Добавить |
Новая рабочая тетрадь теперь становится ActiveWorkbook, позволяя вам взаимодействовать с ним (например, сохранять новую книгу).
Добавить новую книгу в переменную
Вы также можете добавить новую книгу непосредственно в переменную:
12 | Dim wb As WorkbookУстановите wb = Workbooks.Add. |
Закрыть книгу
Закрыть и сохранить
Чтобы закрыть книгу с сохранением, используйте Метод закрытия с участием Сохранить изменения установить в ИСТИНА:
1 | ActiveWorkbook.Close SaveChanges: = True |
Закрыть без сохранения
Чтобы закрыть без сохранения, установите Сохранить изменения равно FALSE:
1 | ActiveWorkbook.Close SaveChanges: = False |
Книга Сохранить как
В Метод SaveAs используется для сохранения книги как.
Чтобы сохранить книгу с новым именем в том же каталоге, вы можете использовать это:
1 | ActiveWorkbook.Save как «новый» |
где «новый» - это новое имя файла.
Чтобы сохранить книгу в новом каталоге с определенным расширением файла, просто укажите новый каталог и имя файла:
1 | ActiveWorkbook.Save как "C: \ Users \ StevePC2 \ Downloads \ new.xlsm" |
Другие примеры VBA для книг
Название книги
Чтобы получить имя книги:
1 | MsgBox ActiveWorkbook.Name |
Защитить книгу
Чтобы защитить структуру книги от редактирования, вы можете использовать Метод защиты (пароль необязательный):
1 | Рабочие книги ("book1.xlsm"). Защитить "паролем" |
Чтобы снять защиту с книги, используйте Метод снятия защиты:
1 | Книги ("book1.xlsm"). Снять защиту с "пароля" |
Цикл по всем открытым книгам
Чтобы просмотреть все открытые книги:
123456789 | Sub LoopThroughWBs ()Dim wb As WorkbookДля каждого ББ в книгахMsgBox wb.NameСледующий wbКонец подписки |
Событие активации книги
Вы можете запускать некоторый код всякий раз, когда открывается конкретная книга с помощью Событие открытия книги.
Поместите эту процедуру в модуль ThisWorkbook своей книги:
123 | Частная вспомогательная книга_Open ()Таблицы ("лист1"). АктивироватьКонец подписки |
Эта процедура активирует Лист1 каждый раз, когда книга открывается.