Microsoft Office (Разработка документов в Word, Excel и приложений на Visual Basic for Application). - Учебное пособие (Н.А.Устинов)

Разработка приложений в среде microsoft excel 97.

В этом разделе производится краткий обзор объектной модели Excel. Более подробное изложение в [4].

Объекты Excel.

Объекты Excel похожи на объекты реального мира в том смысле, что каждый объект Excel имеет уникальный набор свойств, используемых для его описания, и уникальный набор методов, представляющих действия, которые могут быть выполнены над ним или с его помощью. Примером объекта Excel является рабочая книга (Workbook). Рабочая книга – это просто файл Excel. Рассматривая свойства объекта Workbook, мы говорим о характеристиках файла Excel. Приведем некоторые свойства объекта Workbook:

Author - имя пользователя, создавшего рабочую книгу.

HasPassword – принимает значение True, если рабочая книга имеет пароль, False – в противном случае.

Name – имя рабочей книги

Path – путь к файлу рабочей книги.

ReadOnly – принимает значение True, если рабочая книга была сохранена с атрибутом «только для чтения», False – в противном случае.

Отметим два важных факта при рассмотрении этих свойств.

Во-первых, все свойства имеют значения, и они могут быть строковыми (как свойство Name объекта Workbook), булевскими (как свойство ReadOnly объекта рабочая книга)

Во-вторых, свойство может быть специфичным только для одного объекта. Например, объект Workbook- это единственный объект со свойством ReadOnly и единственный объект со свойством HasPassword. С другой стороны, большинство объектов Excel, имеет свойство Name.

Получить ранее установленное значение свойства и установить новое значение свойства можно с помощью Обращения.

Обращение это инструкция для изменения значения свойства или для выполнения одного из событий или методов того объекта, с которым работаем. Стандартный формат команды изменения любого свойства

<Имя объекта>.<Свойство>

Такая инструкция называется точечной нотацией. Например, установить свойство Author рабочей книги Нагрузка.XLS, можно использовать оператор VBA (Visual Basic for Applications):

Workbooks (“нагрузка.XLS”). Author=”Устинов Н.А.”

В приведенном выше операторе можно выделить пять частей:

Имя объекта Workbooks(“нагрузка.XLS”)

Операция ‘точка '  (.)

Имя свойства Author

Операция равно ‘=’

Значение свойства  ”Устинов Н.А.”

Объект Workbook вводится как элемент семейства объектов Workbooks.

Чтобы написать законченную подпрограмму на VBA, устанавливающую свойство Author рабочей книги Нагрузка.XLS следует добавить строк, состоящую из ключевого слова Sub, за которым следует название подпрограммы, и последнюю строку End Sub

Sub SetAutherName ()

Workbooks (“нагрузка.XLS”). Author=”Устинов Н.А.”

End Sub

Получение значения установленного свойства производится, как  установка, за исключением того, что элементы в строке программы VBA появляются в обратном порядке. Обычно для получения значения установленного свойства используется переменная, в которой она будет храниться. Следующая строка демонстрирует присвоение строковой переменной AutherName значение свойства Author объекта Workbook.

AutherName= Workbooks(“нагрузка.XLS”). Author

 

Приведем примеры некоторых методов объекта Workbook.

Activate   активизирует первое окно, связанное с рабочей книгой

Close  закрывает рабочую книгу

PrintPreview выводит на экран рабочую книгу в том виде, в каком она будет выведена на принтер.

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

Workbooks(“нагрузка.XLS”).Close

Это обращение без использования аргументов. Метод Close имеет три необязательных аргумента:

SaveChages True сохранить изменения в файле или false не сохранять изменения в файле.

Filename имя файла под которым будет сохранена рабочая книга, если SaveChages равно True.

RouteWorkbook True разослать рабочую книгу по электронной почте  перед закрытием или False – в противном случае.

При вызове метода Close без аргументов принимают значения по умолчанию. Умалчиваемые значения для метода следующие:

SaveChages True, Filename текущее имя файла, RouteWorkbook False

Синтаксис VBA для вызова метода Close со всеми тремя параметрами:

Workbooks(“нагрузка.XLS”).Close True, “нагрузкаУстинов2002.XLS”, -False

В языке VBA символом продолжения является _ (перед ним должен обязательно стоять пробел)

Аргументы можно передавать по имени. Синтаксис следующий:

Workbooks(“нагрузка.XLS”).Close SaveChages:=True, FileName:=  _ “нагрузкаУстинов2002_2003.XLS”, -False, RouteWorkbook:= False

Замечание  при использовании передачи аргументов по имени делает программу более читабельной, но приходится за это платить производительностью.

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

Какие объекты единичные, а какие принадлежат семействам? Можно просто выучить, но также использовать два правила:

Может существовать только один экземпляр единичного объекта в каждом данном контексте.

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

Использование данных правил это тонкое дело, и понимание придет со временем. Пока рассмотрим несколько тривиальных примеров:

Например, объект Application является единичным, так как Excel имеет только один объект Application. Объект Font – также единичный объект, так как для каждой ячейки может использоваться только один объект Font. Несмотря на то, что у этого объекта имеется множество свойств.

Объект Worksheet – это объект семейства. Каждая рабочая книга может иметь несколько рабочих листов.

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

Чтобы установить свойство Caption, нужна прямая ссылка на объект Application:

Application. Caption=”Нагрузка Устинова на 2002-2003”

Индексы объектов в семействах в объектной модели Excel всегда начинаются с 1. Если № объекта в семействе не известен, к нему можно обратиться по имени. Каждый объект Worksheet в семействе Worksheets имеет связанное с ним имя; эти имена выводятся на ярлычках рабочего листа в нижней части окна Excel. Предположим, нужно установить свойство Visible рабочего листа. Это свойство может принимать значения True, False. Если свойство Visible, рабочий лист становится невидимым. Если, рабочий лист имеет имя «Весенний»,  даже не зная, какой № у этого конкретного объекта Worksheet в семействе Worksheets, можно обратиться по имени,  а не  по номеру.

Worksheets(«Весенний»). Visible= False