Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчет по технологической практике.doc
Скачиваний:
3
Добавлен:
01.09.2019
Размер:
2.09 Mб
Скачать

2 Объектная модель excel

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

Например, в объектной модели Excel представлено несколько мощных объектов анализа данных, например, рабочие листы, диаграммы, сводные таблицы, сценарии, а также многочисленные математические, финансовые, инженерные и общие функции. С помощью VBA существует возможность работы с этими объектами.

2.1 Иерархия объектов

Excel позволяет управлять более, чем ста классами объектов, включая рабочую книгу, рабочий лист, диапазон ячеек рабочего листа, диаграмму и нарисованный прямоугольник.

Объекты могут выступать контейнерами других объектов. Например, Excel – это объект под названием Application, он содержит другие объекты, например, Workbook (рабочая книга). Объект Workbook может состоять из других объектов, например, Worksheet (рабочий лист) и Chart (диаграмма). Объект Worksheet также содержит объекты, например, Range (диапазон), PrivotTable (сводная таблица) и т.д. Организацию таких объектов называют объектной моделью Excel.

Объект Application (т.е. Excel) содержит другие объекты. Ниже приведено несколько примеров объектов, которые находятся в объекте Application:

  • Workbooks – коллекция всех объектов Workbook – рабочих книг;

  • Windows – коллекция всех объектов Window – окон;

  • AddIns – коллекция всех объектов AddIn – надстроек.

Некоторые объекты могут содержать другие объекты. Например, коллекция Workbooks состоит из всех открытых объектов Workbook, а объект Workbook включает другие объекты, некоторые из которых представлены ниже:

- Worksheets – коллекция объектов Worksheet – рабочих листов;

- Charts – коллекция объектов Chart – диаграмм;

- Names – коллекция объектов Name – имен.

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

- ChartObjects – коллекция объектов ChartObject – элементов диаграмм;

- Range – диапазон;

- PageSetup – параметры страницы;

- PivotTables – коллекция объектов PivotTable – сводных таблиц.

При ссылке на объект, вложенный в другой объект, положение в иерархической структуре объектной модели задается с помощью точки-разделителя. Например, на рабочую книгу, с названием Книга1.xls можно сослаться следующим образом:

Application.Workbooks (“Книга1.xls”)

Это ссылка на рабочую книгу Книга1.xls в коллекции Workbooks. Колллекция Workbooks находится в объекте Application. Переходя на следующий уровень, можно сослаться на лист Лист1 в книге Книга1.xls:

Application.Workbooks(“Книга1.xls”).Worksheets(“Лист1”).Range(“A1”)

2.2 Свойства и методы объектов

Все объекты имеют свойства. Например, объект диапазона имеет такие свойства, как Value и Name. Свойства в программном коде отделяются от названия объекта точкой.

Также, объекты обладают методами. Метод - это действие, которое выполняется над объектом. Например, один из методов объекта Range – ClearContents. Этот метод удаляет содержимое диапазона ячеек.

2.3 Коллекции

Одной из ключевых концепций в программировании на языке VBA являются коллекции.

Коллекции – это группа объектов одного класса (и сама коллекция является объектов).

Можно управлять одновременно целой коллекцией объектов, или отдельным объектом этой коллекции. Чтобы сослаться на один объект из коллекции, нужно ввести название или номер объекта в скобках после названия коллекции или указать в скобках номер объекта в коллекции:

Worksheets (“Лист1”) или Worksheets(1)

Так же, для управления коллекциями существует конструкция For-Each In , которая будет описана ниже.

2.4 Работа с объектами Range

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

Объект Range содержится в объекте Worksheet и состоит из одной ячейки или диапазона ячеек на отдельном рабочем листе. Существует три способа задания ссылки на объекты Range в программе VBA:

  • Свойство Range объекта класса Worksheet или Range;

  • Свойство Cells объекта Worksheet;

  • Свойство Offset объекта Range.

2.4.1 Свойство Range

Свойство Range возвращает объект Range. К нему можно обратиться с помощью нескольких вариантов синтаксиса:

- Объект.Range(ячейка1);

- Объект.Range(ячейка1,ячейка2).

Свойство Range относится к одному из двух типов объектов: объекту Worksheet или объекту Range. В данном случае ячейка1 и ячейка 2 указывают параметры, которые Excel будет воспринимать как идентифицирующие диапазон (в первом случае) или очерчивающие диапазон (во втором случае).

2.4.2 Свойство Cells

Другим способом сослаться на диапазон является использование свойства Cells. Подобно Range, свойство Cells может использоваться в объектах Worksheet и Range. Существует три варианта свойства Cells:

  • Объект.Cells(номер_строки, номер_столбца);

  • Объект.Cells(номер_строки);

  • Объект.Cells.

Первый вариант обращается к ячейке, которая находится на пересечении указанных строки и столбца.

Второй способ, индексирует ячейки так, словно они представляют собой одномерный массив. Например, выбран диапазон A1:B2, и если из этого диапазона обратиться к третьей клетке, то выбрана будет клетка A2.

Третий вариант выделяет все ячейки данного объекта (листа, или объекта Range).

2.4.3 Свойство Offset

Свойство Offset (подобно свойства Range и Cells) также возвращает объект Range. В отличие от рассмотренных выше свойств, Offset применяется только к объекту Range и ни к какому другому. Данное свойство использует единственный синтаксис:

- объект.Offset(сдвиг_строки,сдвиг_столбца).

Два аргумента свойства Offset соответствуют смещению относительно левой верхней ячейки указанного диапазона Range. Эти аргументы могут быть положительными (сдвиг вниз или вправо), отрицательными (вверх или влево) или нулевыми.

Данное свойство особенно полезно при активной работе с ячейками: использование свойства Offset значительно ускоряет процесс расшифровки ссылки. Дело в том, что при каждом обращении по ссылке, например Worksheets(1).Range(“A1:B10”).Cells(1), программа расшифровывает каждый уровень иерархии: сначала расшифровывается, что нужно обратиться к первому листу текущей книги, затем расшифровывается, что нужно обратиться к диапазону A1:B10, после этого расшифровывается, что нужно обратиться к первой ячейке. Есть много способов упростить расшифровку. Например, использовать конструкцию With, присваивать имена ссылкам, или использовать Offset, при активной работе с ячейками.