Основы офисного программирования и язык VBA

Коллекция Workbooks


Коллекция WorkBooks представляет все открытые книги приложения Excel. Рассмотрим свойства и методы этой коллекции. Как обычно, начнем с методов, позволяющих добавить элемент в коллекцию, удалить его и получить к нему доступ.

Одна из специфических черт элементов этой коллекции состоит в том, что большинство рабочих книг существуют до появления коллекции. Они хранятся во внешней памяти, как файлы, обычно с расширением .xls. Поэтому для добавления элементов в коллекцию применяются два различных метода: Add и Open. Первый добавляет новую, пустую книгу в коллекцию, второй - уже существующую книгу, хранящуюся во внешней памяти.

Синтаксис метода Add таков:

Add(Template)

Необязательный параметр Template задает шаблон создания книги. Этот параметр может быть строкой, задающей имя файла, который хранит некую рабочую книгу. В этом случае книга играет роль шаблона для создания новой книги. Параметр Template может также принимать значение одной из предопределенных констант: xlWBATChart, xlWBATWorksheet, xlWBATExcel4IntlMacroSheet, xlWBATExcel4MacroSheet. В этом случае создается рабочая книга с одним листом, тип которого и задает константа. Если же параметр Template опущен, то создается книга с несколькими пустыми листами, число которых устанавливает свойство SheetsInNewWorkbook.

У метода Open более десяти параметров. Обязательным является только первый - FileName. Он должен быть строкой, которая задает имя файла, хранящего книгу.

Чтобы удалить рабочую книгу из коллекции, нужно закрыть соответствующий файл (в коллекцию входят лишь открытые рабочие книги). Закрытие книги и, следовательно, ее удаление выполняет метод Close. Он определен как для коллекции, так и для рабочей книги - объекта класса WorkBook. В первом случае метод Close не имеет параметров и закрывает всю коллекцию - все рабочие книги. Чаще всего этот метод вызывается объектом - рабочей книгой для своего закрытия. В этом случае его синтаксис:

Close(SaveChanges, FileName, RouteWorkbook)

Все параметры являются необязательными.
Первый - булевого типа: если его значение True, сделанные изменения будут сохранены, в противном случае они не сохраняются. Когда же этот параметр опускается, то при выполнении появляется соответствующее диалоговое окно, в котором свой выбор может сделать пользователь. Второй параметр - FileName - необходим, если речь идет о закрытии новой книги, с которой еще не связано имя файла. Если параметр опущен, а указание имени файла необходимо, то, естественно, появляется диалоговое окно. Третий параметр, как и первый, булевого типа. Он задается, когда рабочая книга может быть направлена нескольким участникам для поочередной работы с ней. Если его значение True, книга направляется следующему по списку ее разработчику.

Чтобы получить доступ к рабочей книге в коллекции, можно воспользоваться методом Item:

Item(Index)

Индекс может указывать порядковый номер книги в коллекции, либо быть именем книги. Заметьте, имя книги это имя файла, в котором она хранится. Когда создается новая пустая книга, то ей по умолчанию система присваивает имя типа " BookN ". При сохранении книги в файле это имя может быть изменено. Метод Item является методом по умолчанию и чаще всего опускается. В этом случае индекс связывается с самим объектом - коллекцией рабочих книг.

Свойство Count возвращает количество элементов коллекции. Доступно только для чтения, имеет тип возвращаемого значения Long.

Помимо перечисленных методов и свойств, позволяющих добавлять, удалять, получать доступ и определять количество элементов, WorkBooks-коллекция имеет некоторые дополнительные возможности:

  • Свойство Application возвращает корневой объект Application.
  • Свойство Creator аналогично свойству Application. Оно возвращает код приложения (32-битное целое), который используется при работе с Macintosh.
  • Свойство Parent возвращает родительский объект (для коллекции WorkBooks это все тот же объект Application).
  • Метод OpenText является модификацией метода Open. Он создает новую рабочую книгу с одной страницей, используя для ее создания текстовый файл.


    В процессе открытия происходит анализ и разбор данных, записанных в текстовом файле. Метод имеет 13 параметров, из которых обязателен лишь первый - FileName, задающий имя текстового файла.


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

Пример 1.3.

(html, txt)

Вот результаты отладочной печати:

Число книг в коллекции WorkBooks при открытии приложения Excel =1 Число книг после 2-х вызовов методов Add и Open = 5 Имена книг в коллекции: BookOne.xls Book4 Book5 BookThree.xls BookFive.xls Число книг после двух вызовов метода Close = 3 Имена книг, оставшихся в коллекции: BookOne.xls Book5 BookFive.xls

Поясним пример. При открытии Excel коллекция WorkBooks состоит из одной открытой книги, в данном случае - книги с именем BookOne. Затем метод Add добавил в коллекцию две новые книги, которые получили имена " Book1 " и " Book2 " соответственно. Еще две книги появляются в коллекции при открытии существующих книг. Затем две книги закрываются, следовательно, удаляются из коллекции. Обратите внимание, удаляются 2-я и 4-я книги коллекции, хотя индексы удаляемых книг имеют значение 2 и 3. Это связано с тем, что после каждого удаления элемента коллекции происходит перенумерация, и книги получают новые индексы.

Если при работе с элементами коллекции выполняется операция удаления, то работать с индексами элементов крайне опасно, предпочтительнее для задания элементов указывать их имена!


Содержание раздела