18c0693f

Коллекция Sheets


Коллекция Sheets представляет коллекцию листов двух типов: рабочих листов и диаграмм, - так что каждый элемент коллекции может быть объектом одного из двух классов: Worksheet или Chart. Наряду с коллекцией Sheets существуют коллекции Worksheets и Charts. Они представляют коллекции рабочих листов и диаграмм, выделенных из коллекции Sheets. Но объекты, задающие эти коллекции, принадлежат классу Sheets и используют его свойства и методы. К их рассмотрению мы и переходим.

Когда создается или открывается рабочая книга, она содержит уже некоторое число листов. Так что коллекция Sheets не пуста в момент открытия книги. Для добавления новых листов в книгу используется знакомый нам метод Add:

Add(Before,After,Count,Type)

Все параметры являются необязательными. Первые два - Before и After задают позицию вставки листа - индекс листа, перед или после которого вставляется новый лист. Из этих параметров одновременно может быть задан только один. Если оба параметра опущены, вставка производится перед активным листом данной книги. Параметр Count определяет количество вставляемых листов (по умолчанию - 1). Последний параметр определяет тип вставляемых листов, задаваемый соответствующей константой: xlWorksheet, xlChart, xlExcel4MacroSheet, xlExcel4IntlMacroSheet (по умолчанию - xlWorksheet).

Замечание:

Рабочая книга имеет листы четырех типов. Но при вызове свойства Sheets объекта WorkBook возвращается объект класса Sheets с листами только двух типов. Чтобы получить листы других типов, нужно обратиться к другому свойству объекта WorkBook, например Excel4IntlMacroSheet, возвращающему также объект класса Sheets, но содержащий листы с так называемыми международными макросами, созданными под Excel4.

Следует обратить внимание на то, что:

Напомним, что иногда бывает трудно провести четкую грань, отличающую метод от свойства. Item является классическим примером подобной ситуации и потому в одной части документации он называется методом, а в другой - свойством.

Класс Sheets имеет уже известные нам свойства: Application, Creator, Parent и Count. Рассмотрим новые возможности, появившиеся у коллекции Sheets:



В заключение приведем пример, демонстрирующий большинство методов этой коллекции.

Пример 1.4.

(html, txt)

Работая с тестовым документом - книгой BookOne. Мы последовательно щелкали командные кнопки, запускающие процедуры WorkWithBooks и WorkWithSheets. Вот результаты отладочной печати при работе последней процедуры:

Число листов при первоначальном открытии книги = 3 Имена листов: Sheet1 Sheet2 Sheet3 Число листов книги после вставки 3-х листов = 6 Имена и типы листов после переименования: One -4167 Two -4167 Three 3 Four -4167 Five 3 Six -4167 Имена, типы листов и содержимое двадцатой ячейки: One -4167 6765 Two -4167 Four -4167 6765 Six -4167 6765 Seven -4167 6765

Кратко прокомментируем работу программы. Вначале активизируется книга с именем Book2 из коллекции книг, созданных предыдущим макросом. Эта книга содержит три листа со стандартными именами: Sheet1 -Sheet3. Мы добавляем в эту книгу еще три листа разных типов и переименовываем все листы, давая им имена от One до Six. Четыре листа книги являются рабочими листами и имеют тип xlWorksheet (значение константы -4167). Третий лист - это лист диаграммы типа xlChart, а пятый является листом макросов и имеет тип xlExcel4MacroSheet.

Замечание:

В Office 97 и Бета версии Office 2000 тип листа диаграммы (свойство Type) устанавливался неверно. Вместо правильного значения, равного -4109, устанавливалось значение 3, что соответствует листу макроса. В процессе тестирования Office 2000 мы сообщили об этой ошибке и надеемся, что в заключительной версии она уже исправлена.

Затем третий и пятый лист удаляются, и в книге остаются только рабочие листы. Следующие шаги программы демонстрируют работу методов Copy и Move. Вначале активизируется первый лист, вызывается макрос Fibonachi, заполняющий последовательностью чисел Фибоначчи область листа - ячейки A1:A20. Затем создается копия этого листа, и вновь созданный лист - One(2) - помещается после второго листа книги. Он переименовывается, получает имя Seven и перемещается, заняв позицию после листа Six.Метод FillAcrossSheet позволяет скопировать область одного листа в соответствующие области нескольких листов той же книги. Для этого вначале создается массив X с именами листов, в которые будут копироваться данные. Обратите внимание на этот важный, часто используемый метод. Заметьте: в список массива X должен быть включен и лист One, с которого будет производиться копирование.



Пример 1.4.

Работая с тестовым документом - книгой BookOne. Мы последовательно щелкали командные кнопки, запускающие процедуры WorkWithBooks и WorkWithSheets. Вот результаты отладочной печати при работе последней процедуры:

Число листов при первоначальном открытии книги = 3 Имена листов: Sheet1 Sheet2 Sheet3 Число листов книги после вставки 3-х листов = 6 Имена и типы листов после переименования: One -4167 Two -4167 Three 3 Four -4167 Five 3 Six -4167 Имена, типы листов и содержимое двадцатой ячейки: One -4167 6765 Two -4167 Four -4167 6765 Six -4167 6765 Seven -4167 6765

Кратко прокомментируем работу программы. Вначале активизируется книга с именем Book2 из коллекции книг, созданных предыдущим макросом. Эта книга содержит три листа со стандартными именами: Sheet1 -Sheet3. Мы добавляем в эту книгу еще три листа разных типов и переименовываем все листы, давая им имена от One до Six. Четыре листа книги являются рабочими листами и имеют тип xlWorksheet (значение константы -4167). Третий лист - это лист диаграммы типа xlChart, а пятый является листом макросов и имеет тип xlExcel4MacroSheet.

Замечание:

В Office 97 и Бета версии Office 2000 тип листа диаграммы (свойство Type) устанавливался неверно. Вместо правильного значения, равного -4109, устанавливалось значение 3, что соответствует листу макроса. В процессе тестирования Office 2000 мы сообщили об этой ошибке и надеемся, что в заключительной версии она уже исправлена.

Затем третий и пятый лист удаляются, и в книге остаются только рабочие листы. Следующие шаги программы демонстрируют работу методов Copy и Move. Вначале активизируется первый лист, вызывается макрос Fibonachi, заполняющий последовательностью чисел Фибоначчи область листа - ячейки A1:A20. Затем создается копия этого листа, и вновь созданный лист - One(2) - помещается после второго листа книги. Он переименовывается, получает имя Seven и перемещается, заняв позицию после листа Six. Метод FillAcrossSheet позволяет скопировать область одного листа в соответствующие области нескольких листов той же книги.Для этого вначале создается массив X с именами листов, в которые будут копироваться данные. Обратите внимание на этот важный, часто используемый метод. Заметьте: в список массива X должен быть включен и лист One, с которого будет производиться копирование.