Руководство по работе с книгами в vba

В Excel книга является одним из наиболее важных объектов Excel, и также важно понимать, как использовать книги и ссылаться на них при написании кодов VBA.

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

Что нужно знать:

  • Объект связующих
  • Объект связывания

Эти два объекта звучат одинаково, но между ними есть фундаментальное различие.

Объект связующих

В VBA объект Workbooks представляет собой коллекцию книг, открытых в Microsoft Excel. Представьте, что у вас одновременно открыто десять картотек. И вы хотите сослаться на единственную книгу среди них. В этом случае вы должны использовать объект рабочей книги для обращения к этой книге по ее имени.

vba workbooks object

Объект связывания

В VBA объект рабочей книги представляет собой одну книгу среди всех книг, открытых в данный момент в Microsoft Excel. Лучший способ понять это — подумать об объявлении переменной как связующего, которое вы хотите использовать для ссылки на определенное связующее в коде.

represents one single workbook

Полезные ссылки : Добавить вкладку «Разработчик» | Редактор Visual Basic | Запустить макрос | Персональная рабочая тетрадь по макросам

Обратитесь к книге в VBA

Чтобы работать с книгами в VBA, первое, что вам нужно знать, — это как ссылаться на книгу в макросе. И вот что радует: существует несколько способов сослаться на книгу. И в дальнейшем мы рассмотрим каждый из них.

1. По имени

Самый простой способ обратиться к книге — по ее имени. Предположим, вы хотите активировать книгу Book1.xlsx, в этом случае код, который вам нужно использовать, должен быть следующим:

refer to a workbook in vba by name

Обратиться к книге по ее названию достаточно просто, нужно указать имя, и все. Но есть одна вещь, о которой вам нужно позаботиться : если книга не сохранена, вам нужно использовать только имя. А если он зарегистрирован, то необходимо использовать имя с расширением.

2. По номеру

Когда вы открываете книгу, Excel присваивает этой книге порядковый номер, и вы можете использовать этот номер для ссылки на книгу. Книга, которую вы открыли первой, будет иметь порядковый номер «1», вторая — «2» и так далее.

refer to a workbook in vba b number

Этот метод может показаться вам менее реальным, поскольку трудно определить, какая книга находится под каким номером индекса. Но есть одна ситуация, когда этот метод очень полезен, а именно цикл по всем открытым книгам.

3. По этой книге

Эта книга — это свойство, которое помогает вам ссылаться на книгу, в которой вы пишете код. Допустим, вы пишете код в «Книге1» и используете ThisWorkbook для сохранения книги. Теперь, даже если вы измените имя книги, вам не потребуется менять код.

refer to a workbook in vba by this workbook

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

4. По ActiveWorkbook

Если вы хотите сослаться на активную книгу, вы должны использовать свойство «ActiveWorkbook». Лучше всего использовать это свойство, когда вы уверены, какая книга активирована сейчас. Или вы уже активировали книгу, над которой хотите работать.

by active workbook

Приведенный выше код сначала активирует книгу «Book1», затем использует свойство активной книги для сохранения и закрытия активной книги.

Доступ ко всем методам и свойствам

В VBA всякий раз, когда вы ссылаетесь на объект, VBA позволяет вам получить доступ к свойствам и методам, предоставляемым этим объектом. Аналогично, объект рабочей книги имеет свойства и методы. Чтобы получить к ней доступ, необходимо сначала определить книгу, а затем ввести точку .

define the workbook first and enter a dot

В тот момент, когда вы вводите точку (.), отображается список свойств и методов. Теперь у вас должен возникнуть вопрос о том, как определить, какое из них является свойством, а какое — методом.

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

Например, чтобы использовать метод с книгой

Представьте, что вы хотите закрыть книгу (это метод), вам нужно ввести или выбрать «Закрыть» из списка.

select close from a list

После этого вам нужно ввести начальные круглые скобки, чтобы IntelliSense знал, какие аргументы вам нужно задать.

enter starting parentheses

С помощью метода close вам необходимо определить три аргумента, и, как вы можете видеть, все эти аргументы являются необязательными, и вы можете игнорировать их, если хотите. Но некоторые методы не имеют аргументов (например: active)

Например, чтобы использовать свойство с книгой

Представьте, что вы хотите посчитать листы книги «book1». В этом случае вам нужно использовать свойство «Листы», а затем дополнительное свойство count.

use the sheets property

Как я уже сказал, в приведенном выше коде вы устанавливаете book1, затем свойство листа ссылается на все листы, а затем свойство count для их подсчета. И когда вы запускаете этот код, он показывает окно сообщения с результатом.

Использование оператора «WITH» в книге

В VBA есть оператор With, который может помочь вам эффективно работать с книгой при написании макроса. Давайте посмотрим на пример ниже, где у вас есть три разные строки кода с одной и той же книгой, то есть ActiveWorkbook.

using with statement with workbook

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

  • Во-первых, вам нужно начать с оператора «With ActiveWorkbook» и закончить оператор «End With».
start with the starting statement
  • После этого вам нужно написать между этим оператором код, который у вас есть в примере выше.
write the code between the statement

Как вы можете видеть в приведенном выше коде, мы обратились к ActiveWorkbook с помощью оператора With, а затем следует использовать все свойства и методы.

 Sub vba_activeworkbook_with_statement() With ActiveWorkbook .Sheets.Add Count:=5 .Charts.Visible = False .SaveAs ("C:UsersDellDesktopmyFolderbook2.xlsx") End With End Sub

Позвольте мне привести вам простой и конкретный пример, чтобы вы все поняли. Представьте, что вы просите меня пойти в комнату 215 за бутылкой с водой, а когда я вернусь, вы снова отправляете меня в комнату 215 за ручкой, а затем снова отправляете меня за ноутбуком. А вот в чем дело: все вещи, которые вы мне сказали, находятся в комнате 215. Так что лучше, если бы вы отправили меня в комнату 215 и сказали, чтобы я взял все три вещи сразу.

Читайте: С – Конец с

Объявить переменную как книгу

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

declare variable as workbook
  1. Используйте оператор DIM (объявить).
  2. Напишите имя переменной.
  3. Установите тип переменной «Книга».

Работа с ошибками

При работе с одним или несколькими объектами книги в VBA вам также может потребоваться обработка ошибок. Давайте рассмотрим пример ошибки «Ошибка выполнения 9: Индекс вне диапазона» . Эта ошибка может возникнуть по разным причинам.

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

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

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