- •Основы офисного программирования и язык vba
- •Офисное программирование
- •Состав Office 2000
- •Инсталляция Office 2000
- •Содержимое диска "Resource Kit"
- •Документ Issues
- •Документ ork9
- •Папка Tools
- •Содержимое диска "Language Pack"
- •Об этой книге и ...
- •Моя благодарность
- •Vba и объекты. Обзор
- •Библиотека объектов Office 2000 - каркас приложений
- •Встраивание вместо наследования
- •Построение каркаса документа
- •Библиотека объектов Office 2000 и Object Browser
- •Объекты Application
- •Свойства-участники
- •Вторая группа терминальных свойств
- •Методы объектов Application
- •События объектов Application
- •Совместная работа приложений. Создание объектов Application. Раннее и позднее связывание
- •Коллекции в Office 2000
- •Коллекции объектов Office 2000
- •Коллекции Excel: Workbooks, Sheets
- •Коллекция Workbooks
- •Коллекция Sheets
- •Коллекции Word: Documents, Paragraphs и другие
- •Коллекция Documents
- •Коллекция Paragraphs
- •Коллекция Sections
- •Коллекции Characters, Words, Sentences
- •Коллекции и конструкция For Each … Next
- •Объекты Range
- •Что определяет объект Range?
- •Метод Range
- •Объекты Selection
- •Метод Select и свойство Selection
- •Активные объекты и метод Activate
- •Проектирование документов
- •Документ и его программный проект
- •Модули - обработчики событий
- •Стандартные модули
- •Модули классов
- •Модуль макросов
- •Структура модуля. Окно проекта и Окно кода
- •Окно проекта
- •Свойства проекта
- •Имя проекта
- •Защита проекта
- •Окно кода
- •Еще раз о "переиспользовании" модулей
- •Проект и область видимости
- •Система документов и ее проект
- •Организация системы документов
- •Как организуются ссылки между проектами
- •Обмен информацией между документами
- •Система документов One - Two - Three
- •Типы данных
- •Простые типы данных.
- •Объявление переменных и констант простых типов
- •Синтаксис объявления простых переменных
- •Объявления по умолчанию
- •Константы
- •Массивы
- •Динамические массивы
- •Записи и тип, определенный программистом
- •Что можно делать с записями?
- •Раздел объявлений
- •Раздел опций
- •Разделы констант, типов и переменных
- •Раздел Declare
- •Правила именования
- •Типы и классы Еще раз о понятии "класс"
- •Что нового в классах "Office 2000"
- •Создание класса "Личность"
- •Объекты и переменные
- •Объекты, класс которых определен пользователем.
- •Объекты "родного" приложения
- •ActiveX-объекты
- •Модуль класса Свойства
- •Сокрытие свойств
- •Конструкторы и деструкторы. Стандартные события
- •Стандартные события Initialize и Terminate
- •Два конструктора класса Rational
- •Процедуры - свойства
- •Как создаются процедуры- свойства
- •Синтаксис Let, Get и Set
- •Классы, как упаковка
- •Семейство классов и процедуры - свойства
- •Friend методы
- •События
- •Классы, объекты With Events и обработчики событий
- •Модуль класса с объектом WithEvents
- •Объект WithEvents
- •События собственных классов
- •Как создать класс с событиями
- •Как зажигаются события
- •Где и как следует создавать обработчики событий для экземпляров класса
- •Связывание объектов
- •Реальные объекты и инициирование событий
- •Семейство классов и реализация интерфейсов
- •Наследование
- •Виртуальные методы и полиморфизм
- •Абстрактные классы
- •Наследование и полиморфизм в Office 2000
- •Наследование интерфейсов
- •Полиморфизм семейства классов
- •Проект "Люди и Машины"
Разделы констант, типов и переменных
О том, как объявляются константы, типы и переменные мы говорили достаточно подробно. Сейчас же отметим, что разумно создавать такие разделы явно, отделяя комментариями один раздел от другого. Желательно, чтобы эти разделы шли в описанном нами порядке. Тогда уже объявленные константы будут появляться при описании границ массивов, типы переменных будут предшествовать объявлению самих переменных.
Для констант и типов ключевые слова Const и Type однозначно определяют описываемый объект. Для переменных ключевые слова могут быть разными. Заметим, что для переменных уровня модуля не целесообразно использовать ключевое слово Dim, лучше использовать спецификаторы Public или Private, явно указывающие область действия переменной.
Раздел Declare
Этот раздел появляется в тех случаях, когда модули проекта используют динамически присоединяемые библиотеки - DLL. Если DLL имеет библиотеку типов TypeLib и она доступна проекту, то нет необходимости описывать компоненты библиотеки, они будут найдены автоматически. Но если TypeLib недоступна или не определена, то в этой ситуации каждая из функций и процедур библиотеки, вызываемая в модуле, должна быть предварительно описана специальным оператором Declare. Вот его синтаксис:
[Public | Private] Declare {Sub | Function} имя Lib "имя_библиотеки" _
[Alias "псевдоним"] [([параметры])] [As возвращаемый_тип]
Здесь указывается имя библиотеки, имя процедуры или функции, возможный псевдоним, параметры и возвращаемое значение для функций. Подробно о DLL, операторе Declare с примерами на эту тему будет рассказано в одной из лекций этой книги.
Правила именования
Есть несколько простых правил, которые следует выполнять, чтобы быть цивилизованным программистом. Заметьте, можно быть умным, грамотным, но хорошо бы еще быть и цивилизованным. Многим из нас, я это отношу и к себе, не хватает цивилизации. Правила, о которых мы сейчас поговорим, касаются оформления текста программ. Большинство из них достаточно просто и по ходу дела мы о них неоднократно говорили. Вот основные:
-
Используйте комментарии.
-
Соблюдайте правила именования.
-
Структурируйте текст.
-
Стройте программы из модулей "подъемного" размера.
Сейчас мы поговорим об одном техническом, но практически важном вопросе, - как правильно давать имена константам, переменным и другим объектам в наших программах. Казалось бы, какая разница, - "хоть горшком называй, только в печь не сажай". Это, однако, не так. Имя играет большую роль в понимании программ, и я верю даже в некоторую мистику, с плохо названной переменной всегда случаются какие то истории.
Правило написания имен переменных, которому мы обычно следовали в своих примерах и повседневной практике, состоит в следующем: имя должно отражать содержательный смысл, и состоит из одного или нескольких слитно написанных слов, каждое из которых начинается с большой буквы.
Разработчики от Microsoft рекомендуют придерживаться более строгих правил. Имя должно отражать не только смысл, но и тип переменной и ее область действия. Поэтому имя должно состоять из префикса и собственного имени. Префикс также является составным, две его части отражают область действия и тип переменной. В идущих ниже таблицах показаны возможные значения префикса:
Таблица 3.2. Префикс, задающий область действия |
|||
Первая часть префикса |
Область действия |
||
g |
Global - Весь проект |
||
m |
Module - Для Private переменных модуля отсутствует |
||
p |
Procedure - Для локальных переменных |
||
Таблица 3.3. Префикс, задающий тип переменной |
|
||
Вторая часть префикса |
Тип переменной |
|
|
str |
String |
|
|
int |
Integer |
|
|
byt |
Byte |
|
|
lng |
Long |
|
|
sng |
Single |
|
|
dbl |
Double |
|
|
cur |
Currency |
|
|
var |
Variant |
|
|
obj |
Object |
|
|
bln |
Boolean |
|
Вот несколько примеров правильно построенных имен: gstrOneWord, mintNumberOne, strAnswer, curSalary. Также как по значению константы можно восстановить ее тип, по правильно построенным именам можно однозначно восстановить их объявление. Сделаем это в нашем примере:
Public gstrOneWord As String
Private mintNumberOne As Integer
Dim strAnswer As String
Dim curSalary As Currency
Согласно этим же рекомендациям имена констант следует строить только из заглавных букв. Если имя константы состоит из нескольких слов, то для их объединения используется знак подчеркивания, например: MY_DIRECTORY_PATH. Обратите внимание, при построении констант Office 2000 используется префикс, указывающий, какому из приложений принадлежит константа.
Таблица 3.4. Префиксы констант Office 2000 |
|
Приложение |
Префикс констант |
Access |
ac |
Excel |
xl |
FrontPage |
fp |
Office |
mso |
OfficeBinder |
bind |
Outlook |
ol |
Power Point |
pp |
Word |
wd |
VBA |
vb |
Префиксы следует использовать и при именовании объектов, для форм обычно используется префикс frm, для командных кнопок - cmd и так далее. Следует понимать, что, если уж пользоваться префиксами, то обще употребительными, не следует заниматься самодеятельностью в этом вопросе. Мы закончим призывом, - "будьте цивилизованными".
Программный код большинства примеров данной лекции можно найти в проектах, доступных для просмотра: BookOne, BookTwo, DocOne, DocTwo.