/
Автор: Штайнер Г.
Теги: система управления базами данных (субд) программирование языки программирования компьютерные технологии программирование на языке visual basic
ISBN: 5-93208-127-9
Год: 2002
Текст
справочник
VBA 6.3
Гюнтер Штайнер
1 Первые шаги 11
2 Типы данных и операции 44
3 Управляющие структуры VBA 81
4 Операторы и функции VBA 102
5 Меню, панели 209
6 Объект Word 267
7 Объект Excel 433
8 Объект PowerPoint 540
9 Объект Access 667
10 Объекты доступа к данным 730
Гюнтер Штайнер
VBA 6.3
СПММВЮЧ^иК
Москва
Лаборатория Базовых Знаний
ЮНИМЕДИАСТАЙЛ
2 0 0 2
УДК 004.65
ББК 32.973
Ш87
Научный редактор С. Молявко
Штайнер Г. VBA 6.3. — М.: Лаборатория Базовых
Ш 87 Знаний, 2002. — 784 с.: ил. — (Справочник).
ISBN 5-93208-127-9
В книге приведены справочные сведения по программирова-
нию на языке Visual Basic 6.3 для приложений (VBA 6.3) в рам-
ках Microsoft Office ХР Professional. Подробно описаны объек-
ты, их свойства и методы, операторы, функции, типы данных.
Отдельная глава посвящена проектированию меню, панелей и
форм. Описание иллюстрировано примерами. Сведения структу-
рированы по приложениям, входящим в состав Microsoft Office
ХР: Word, Excel, PowerPoint, Access.
Книга предназначена для начинающих пользователей и не
требует знакомства с предыдущими версиями языка Visual Ba-
sic.
УДК 004.65
ББК 32.973
Серия «Справочник»
Производственно-техническое издание
Гюнтер Штайнер
VBA 6.3. Справочник
Художник Н. Лозинская
Верстка Л. Черепанова
Подписано в печать 28.03.02. Формат 70x100 1/32.
Гарнитура Прагматика. Бумага газетная. Печать офсетная.
Усл. печ. л. 31,85. Тираж 3000 экз. Заказ ! 855
Издательство «Лаборатория Базовых Знаний»
Адрес для переписки: 103473, Москва, а/я 9
Телефон (095)955-03-98. E-mail: lbz@aha.ru
Лицензия на издательскую деятельность
№066140 от 12 октября 1998 г.
Гигиеническое заключение № 77.99.1.953.П.998.3.99 от 03.03.1999 г.
Отпечатано с готовых диапозитивов
в полиграфической фирме «Полиграфист»
160001, г. Вологда, ул. Челюскинцев, 3
© Штайнер Г., 2002
ISBN 5-93208-127-9 © Лаборатория Базовых Знаний, 2002
Содержание
Предисловие...................................8
Работа со справочником........................9
Оформление текста............................10
1. Первые шаги...............................11
1.1. Запись макросов.........................12
1.2. Редактирование макросов.................15
1.3. Создание макроса в программном коде.....16
1.4. Редактор Visual Basic...................17
1.5. Основные понятия VBA....................38
2. Типы данных и операции...................44
2.1. Объявления и область видимости..........44
2.2. Простые типы данных.....................52
2.3. Массивы.................................61
2.4. Типы данных, определяемые пользователем.64
2.5. Арифметические операции.................66
2.6. Логические операции.....................68
2.7. Операции сравнения......................76
2.8. Операции объединения....................79
3. Управляющие структуры VBA................81
3.1. Переход по метке........................81
3.2. Конструкции выбора......................83
4 VBA 6.3
3.3. Ветвление по условию........................85
3.4. Циклы.......................................88
3.5. Досрочный выход из цикла....................93
3.6. Процедуры (Макросы).........................95
3.7. Функции.....................................97
3.8. Внешние ссылки..............................99
4. Операторы и функции VBA.....................102
4.1. Интерфейс..................................103
4.2. Файловые операции..........................108
4.3. Дата и время...............................148
4.4. Информация о среде.........................161
4.5. Финансовые вычисления......................167
4.6. Математические вычисления..................174
4.7. Строки.....................................180
4.8. OLE........................................194
4.9. Коллекции..................................198
4.10. Обработка ошибок..........................203
5. Меню, панели инструментов,
экранные формы..................................209
5.1. Меню и панели инструментов.................209
5.2. Экранная форма.............................226
6. Объект Word.................................267
6.1. Обзор объектной модели Word................268
6.2. Объект Application.........................294
6.3. Единицы измерения и их преобразование......311
6.4. Параметры среды Word.......................312
6.5. Доступ к документам — объект Document......318
Содержание
5
6.6. Раздел документа — объект Section..........349
6.7. Колонтитулы — объект HeaderFooters.........353
6.8. Абзацы (параграфы) — объект Paragraph......354
6.9. Предложения — коллекция Sentences..........366
6.10. Отдельные слова — коллекция Words.........367
6.11. Текст документа и объект Range............368
6.12. Границы — коллекция Borders...............388
6.13. Управление табуляцией — объект TabStop....397
6.14. Форматирование символов — объект Font.....400
6.15. Пример форматирования.....................408
6.16. Манипуляции с таблицами — коллекция Tables . . . 412
6.17. Столбцы таблицы — коллекция Columns.......418
6.18. Строки таблицы — коллекция Rows...........421
6.19. Ячейка таблицы — объект Cell..............426
6.20. Форматирование таблицы (пример)...........430
7. Объект Excel.................................433
7.1. Обзор объектной модели Excel...............434
7.2. Уровень приложения — объект Application....452
7.3. Книга — объект Workbook....................471
7.4. Лист книги — объект Worksheet..............486
7.5. Доступ к ячейкам — объект Range............497
7.6. Доступ к содержимому ячеек — объект Range..507
7.7. Форматирование ячеек — объект Range........513
7.8. Операции со списками — объект Range........518
7.9. Внедренные диаграммы — объект Chartobject..523
7.10. Диаграммы — объект Chart..................527
8. Объект PowerPoint............................540
8.1. Обзор объектной модели PowerPoint..........541
6 VBA 6.3
8.2. Уровень приложения — объект Application......559
8.3. Основной объект — Presentation...............564
8.4. Образцы — объект Master......................577
8.5. Слайды — объект Slide........................581
8.6. Объекты слайда - коллекция Shapes............588
8.7. Объект Shape.................................598
8.8. Обработка событий — объект ActionSetting.....612
8.9. Параметры анимации — объект Animationsettings . . 614
8.10. Параметры заливки — объект FillFormat.......617
8.11. Форматирование линий — объект LineFormat....622
8.12. Управление тенью — объект ShadowFormat......626
8.13. Эффекты объемности — объект ThreeDFormat. . . . 630
8.14. Форматирование текста — объект Textstyle....635
8.15. Область текста — объект TextFrame...........636
8.16. Объект TextRange............................640
8.17. Форматирование абзаца —
объект ParagraphFormat.............................652
8.18. Форматирование символов — объект Font.......655
8.19. Таблица — объект Table......................658
8.20. Столбец — объект Column.....................660
8.21. Строка — объект Row.........................662
8.22. Ячейка — объект Cell........................664
9. Объект Access.................................667
9.1. Обзор........................................667
9.2. Уровень приложения — объект Application......672
9.3. Управление приложением — объект DoCmd........681
9.4. Экранная форма — объект Form.................696
9.5. Элемент управления — Control.................713
9.6. Отчеты — объект Report.......................715
МЯИИ
Содержание 7
9.7. Экран — объект Screen.........................720
9.8. База данных — объект CurrentData..............722
9.9. Проект — объект CurrentProject................725
10. Объекты доступа к данным (DAO)................730
10.1. DAO: что это такое?..........................730
10.2. Обзор DAO.....................................731
10.3. Начало начал — объект DBEngine...............735
10.4. Подключение к базе данных ODBC...............745
10.5. База данных — объект Database................751
10.6. Запросы — объект QueryDef....................758
10.7. Набор записей — объект Recordset.............761
10.8. Таблицы — объект TableDef....................777
10.9. Поле данных — объект Field...................780
Приложение. Указатель терминов Visual Basic .... 782
Предисловие
С ростом производительности персональных компьютеров и
сложности программных средств пользователям становится
все труднее «держать в уме» все функции применяемого языка
программирования. По этой причине в повседневной работе,
как правило, используется далеко не весь спектр существую-
щих возможностей конкретного инструментария или операци-
онной среды, а только небольшая их часть. Практика показыва-
ет, что и вводные обучающие курсы дают представление толь-
ко о самых важных командах и навязывают пользователю при-
менение ряда типовых процедур, многие из которых далеко
не оптимальны. Большинство пользователей, преодолев пер-
вый страх перед новым инструментарием и накопив достаточ-
ный опыт, начинают испытывать естественное желание позна-
комиться с возможностями среды разработки поближе. Им
хочется использовать если не все, то многие из доступных
средств. Им не нужны подробные и длинные (как в учебниках)
описания операторов: они уже с полуслова понимают, о чем
речь...
Именно для пользователей, которые принадлежат к группе
«нетерпеливых», предназначена серия книг нашего изда-
тельства, объединенных в серию «Справочник».
Вся информация изложена как раз в том порядке, в кото-
ром она обычно требуется во время работы.
Единообразное построение глав способствует быстрому
пониманию/усвоению необходимой информации и суще-
ственно упрощает поиск.
Многочисленные перекрестные ссылки позволяют найти
всю информацию, имеющую отношение к рассматривае-
мому вопросу.
Небольшой и удобный формат исключает проблему «раз-
мещения» книги на рабочем столе.
(gOlPfeWliW
Работа co справочникомПредисловие 9
Все книги серии построены по единой схеме. Поэтому зна-
комство с одной из них позволит в дальнейшем быстро со-
риентироваться при изучении следующего программного
продукта.
Желаем вам успехов и трудовых свершений при работе со
«Справочником VBA 6.3».
Автор
Работа со справочником
Соблюдайте следующие рекомендации при работе со Спра-
вочником и вы сможете эффективно использовать это посо-
бие и быстро найти необходимую информацию.
Типовая структура главы
Краткое описание главы дается сразу после ее заглавия.
Описание последовательности действий (Процедура)
позволит вам шаг за шагом решить наиболее важные
проблемы как при работе с IDE, с различными дополните-
льными программами, так и при собственно программи-
ровании.
Я в примечаниях даны советы и рассмотрены отдельные
детали.
Каждый раз при упоминании вопроса, более подробные
комментарии к которому можно получить в других главах,
вы найдете соответствующую ссылку с номером раздела в
виде: (см. *.*).
Для того чтобы учесть все многообразие возможностей Vi-
sual Basic For Applications 6.3, при построении некоторых
глав автор позволил себе отойти от типовой структуры.
10
Предисловие
Оформление текста
Оформление элементов текста
В Справочнике используются следующие оформительские
приемы для выделения различных элементов текста.
Жирный шрифт применяется для выделения элементов
инструментальной среды, команд, ключевых слов и других
элементов языка, которые должны быть записаны без из-
менений.
Моноширинный шрифт (похожий на шрифт принтера)
используется для примеров команд и программ.
Описание синтаксиса
Все формальные описания синтаксиса построены по опреде-
ленной схеме, с использованием специальных оформитель-
ских приемов.
Ключевые слова и другие элементы языка, которые дол-
жны быть использованы без изменений, набраны обычным
шрифтом.
Курсив используется для выделения идентификаторов функ-
ций, классов, параметров, а также других идентификаторов.
В квадратных скобках [] перечисляются необязательные
элементы синтаксической конструкции. Эти элементы мо-
гут быть включены в команду только в случае необходимо-
сти. Такие скобки не нужно вводить при записи команды.
| Первые шаги
Visual Basic For Applications (VBA—Visual Basic для приложений)
реализован в пяти важнейших компонентах пакета Microsoft Of-
fice ХР. VBA представляет собой полностью унифицированный
язык программирования и почти полностью унифицированную
среду разработки.
Как следует из названия VBA, он относится к диалектам BASIC,
являясь при этом объектно-ориентированным языком, облада-
ющим значительными возможностями в отношении объектной
модели и многократно используемого кода, что позволяет реа-
лизовать с его помощью достаточно сложные проекты.
Visual Basic For Applications — открытая система, допускающая
расширение посредством элементов управления ActiveX. Бла-
годаря этому качеству VBA существенно превосходит по своим
возможностям старые редакторы макросов, которыми компо-
ненты Office оснащались раньше.
В то же время макрос можно записать «старым, добрым» спо-
собом, при этом он будет записан и станет доступным для ре-
дактирования в форме процедуры на языке Visual Basic; с од-
ной стороны, это может оказаться полезным при создании
сложной VBA-программы, с другой — представляет собой наи-
более простой и легкий способ сделать первые шаги в про-
граммировании на VBA.
При более близком знакомстве с VBA вы обнаружите новые
возможности, выражающиеся в облегчении доступа к данным
разных видов и упрощении манипуляций с ними. Конечно, при
всех усовершенствованиях даже визуальное программирова-
1.1. Запись макросов
ние не сводит работу программиста к нулю — для создания
правильно работающего приложения все равно придется по-
трудиться.
1.1. Запись макросов
Обзор. Процедура записи
Перед записью макроса необходимо точно представлять
себе последовательность действий, подлежащих записи.
В противном случае будут записаны также ошибки и дей-
ствия по их исправлению.
Начните запись макроса.
Задайте его атрибуты.
Выполните последовательность действий, подлежащих за-
писи.
Прекратите запись макроса.
Процедура. Запись макроса в среде PowerPoint
1. Сервис / Макрос / Начать запись...
2. Введите имя макроса (латиницей) и его описание, выбе-
рите, если необходимо, значение поля Записать в.
3. Щелкните на ОК.
4. Выполните в среде PowerPoint необходимые действия.
5. Сервис / Макрос / Остановить запись.
1.1. Запись макросов
13
Примечания
Макрос можно сохранить в любой открытой презентации.
Назначить кнопку панели инструментов для вызова запи-
санного макроса можно с помощью диалога Сервис / На-
стройка.
Процедура. Запись макроса в среде Excel
1. Сервис / Макрос / Начать запись ...
2. Введите имя макроса (латиницей) и его описание, выбе-
рите, если необходимо, значение поля Сохранить в и на-
значьте макросу сочетание клавиш.
3. Щелкните на ОК.
4. Выполните в среде Excel необходимые действия.
5. Сервис / Макрос / Остановить запись.
Примечания
В зависимости от выбора, сделанного на шаге 2, записан-
ный макрос помещается в текущую книгу, в новую книгу
или в личную книгу макросов, которую Excel при необходи-
мости создаст автоматически.
14
1.1. Запись макросов
Назначенное макросу сочетание клавиш будет заменять
любое сочетание, установленное в среде Excel по умолча-
нию, пока книга, где записан макрос, открыта.
Назначить кнопку панели инструментов для вызова макро-
са можно с помощью диалогов Сервис / Настройка и
Сервис / Макрос / Макросы / Параметры.
Процедура. Запись макроса в среде Word
1. Сервис / Макрос / Начать запись ...
2. Введите имя макроса (латиницей) и его описание, выбе-
рите документ или шаблон, для которых макрос должен
быть доступен.
3. Назначьте кнопку панели инструментов или сочетание кла-
виш для вызова макроса.
4. Щелкните на ОК.
5. Выполните в среде Word необходимые действия.
6. Сервис / Макрос / Остановить запись.
1.2. Редактирование макросов
15
Примечания
В зависимости от выбора, сделанного на шаге 2, записан-
ный макрос будет доступен либо только в текущем доку-
менте, либо во всех документах — пункт Всех документов
(Normal.dot).
Назначать макросу сочетание клавиш следует только пос-
ле того, как определено его имя. После выбора сочетания
клавиш запись макроса начнется немедленно.
Назначить кнопку панели инструментов одновременно с
сочетанием клавиш невозможно, в случае необходимости
это можно сделать после окончания записи макроса.
Процедура. Запись макроса в среде Access
В среде Access отсутствует функция записи макросов.
Процедура. Запись макроса в среде Outlook
В среде Outlook отсутствует функция записи макросов.
1.2. Редактирование макросов
Процедура. Вызов редактора Visual Basic
1. Сервис / Макрос / Макросы ...
2. Выберите макрос из списка.
3. Отредактируйте его.
Или:
1. Сервис / Макрос / Редактор Visual Basic ...
Или:
Сочетание клавиш [Alt]+[F11 ].
2. В панели проекта Project—... разверните поддерево моду-
лей Modules.
3. Выполните двойной щелчок на имени программного модуля.
16
1.3. Создание макроса в программном коде
Примечание
Местоположение программного модуля, содержащего
VBA-запись макроса, зависит от выбора, сделанного пе-
ред началом записи (см. выше).
1.3. Создание макроса в программном коде
1.3.1. Создание макроса
Процедура. Создание макроса
1. Сервис / Макрос / Редактор Visual Basic ... или [Alt]+
[F11].
2. Выберите проект в панели Project.
3. Insert I Module.
4. В окне созданного модуля введите программный код мак-
роса (Sub или Function).
1.4. Редактор Visual Basic
17
1.4. Редактор Visual Basic
Для всех основных компонентов Office ХР (Access, Outlook,
PowerPoint, Word и Excel) существует унифицированная среда
редактирования VBA-кода — редактор Visual Basic, при этом
макрос записывается и существует только в виде процедуры
на языке VBA. К тому же манипуляции с записью макросов в
этих трех приложениях мало чем отличаются друг от друга.
Несколько особняком стоит Access — здесь сохранен старый
механизм макросов, и взаимодействие между макросом и
VBA-программой требует принятия специальных мер.
Запущенный тем или иным способом редактор Visual Basic
представляет собой самостоятельное приложение, интегри-
рующее в себе все средства, необходимые для разработки
(визуального программирования и программирования в коде)
VBA-программы.
18
1.4. Редактор Visual Basic
Примечание
Каждое из окон (панелей) редактора Visual Basic может
быть закреплено (припарковано) или же сделано плаваю-
щим (при этом оно будет располагаться на рабочей по-
верхности на правах «свободного» дочернего окна).
1.4.1. Окно программы (окно кода)
Примечания
Можно работать одновременно с несколькими окнами про-
граммы (окнами кода).
Окно кода можно закрепить (припарковать) или освобо-
дить от связи с соседними окнами (сделать плавающим).
При вводе имен объектов имя метода, свойства или собы-
тия можно выбрать из всплывающего списка, вызываемо-
1.4. Редактор Visual Basic
19
го из контекстного меню командой List Properties/Met-
hods (Список свойств и методов).
Синтаксис программного кода проверяется непосредствен-
но при вводе.
Для того чтобы создать процедуру обработки события не-
которого объекта, необходимо выбрать имя объекта и имя
события в комбинированных полях (полях со списком) в
верхней части окна кода.
Две кнопки в левом нижнем углу окна кода служат для вы-
бора между двумя режимами отображения текста — весь
текст или только текущая процедура.
1.4.2. Окно проекта
Примечания
Аналогично Проводнику Win-
dows окно (панель) проекта
отображает состав и строе-
ние проекта в форме древо-
видной структуры.
Дерево проекта может вклю-
чать в себя (кроме собствен-
но проекта) презентации, до-
кументы или рабочие книги, а
также модули, модули клас-
сов, формы, ссылки и т. д.
Модули, модули классов и
формы можно перемещать из
проекта в проект с помощью
метода «перетащить и оста-
вить» (технология Drag&Drop)
а VBAProject (PERSONAL.XLS)
i±? £sfe Microsoft Excel Objects
Et Modules
Moduiel
E VBAProject (vba6_exl-5.xls)
E Microsoft Excel Objects
। i ® Лист! (Лист!)
= k ® Лист2 (Лист2)
I- • ® ЛистЗ (ЛистЗ)
!""4Г| ЭтаКнига
3 Modules
^ЕШЯ
20
1.4. Редактор Visual Basic
1.4.3. Окно свойств
Примечания
Окно свойств Properties
предоставляет доступ ко
всем свойствам объекта,
доступным для изменения
на этапе программирова-
ния.
Список свойств можно упо-
рядочить в алфавитном по-
рядке или по категориям.
Окно свойств можно закре-
пить или сделать плаваю-
щим.
1.4.4. Просмотр объектов
Примечания
Окно просмотра объектов Object Browser позволяет най-
ти и выбрать любой объект, относящийся к проекту, а так-
же его свойства, методы и события.
В сущности, просмотр объектов подразумевает доступ ко
всей иерархии объектной модели VBA и каждого из компо-
нентов Office.
Возможен просмотр всех объектов или только объектов,
относящихся к выбранному компоненту Office.
Кроме того, окно Object Browser содержит объявления всех
предопределенных констант.
Здесь доступны также определенные пользователем эле-
менты управления, типы данных, константы, процедуры и
функции.
1.4. Редактор Visual Basic
21
Двойным щелчком на имени процедуры можно перейти к
редактированию ее кода.
1.4.5. Окно формы
Примечания
В объектной модели формы (экранные формы) представ-
лены библиотекой MSForms.
Объекты этого типа, пользовательские формы (UserForms)
располагают собственными программными модулями, со-
держащими процедуры обработки событий для элементов
форм.
На поверхности формы можно использовать цвет, различ-
ные шрифты, а также фоновые точечные рисунки.
На форму можно поместить любой доступный через ссыл-
ку элемент управления ActiveX (ActiveX-элемент).
22
1.4. Редактор Visual Basic
Чтобы связать с формой ActiveX-элемент, необходимо сна-
чала вывести его на панель инструментов элементов управ-
ления Toolbox, воспользовавшись командой Tools /Addi-
tional Controls. В открывшемся окне следует установить
1.4. Редактор Visual Basic
23
флажки интересующих вас ActiveX-элементов и нажать
кнопку ОК. Теперь можно выбрать на панели инструмен-
тов Toolbox требуемый элемент.
Помещенные на форму элементы управления можно пере-
мещать методом «перетащить и оставить» (Drag&Drop).
Значения свойств элементов формы и самой формы мож-
но изменить с помощью окна Properties.
1.4.6. Отладка и тестирование программы
Редактор Visual Basic располагает целым рядом возможностей
в плане тестирования и отладки макросов (VBA-процедур).
Обзор. Тестирование программного кода
Окно контрольных значений Watch window позволяет от-
слеживать (в режиме пошаговой отладки или, что почти то
же самое, в точке останова) значения выбранных перемен-
ных и выражений.
24
1.4. Редактор Visual Basic
Окно отладки Immediate window позволяет вводить под-
лежащие немедленному выполнению инструкции (опера-
торы) на языке VBA.
Последовательность вызовов процедур и функций, привед-
шую к текущему состоянию программы, можно увидеть с
помощью команды View / Call Stack.
В режиме пошаговой отладки можно увидеть значение пе-
ременной или выражения, поместив указатель мыши на
соответствующее место в тексте программы.
Я Для выполнения очередной строки программного кода в
режиме пошаговой отладки следует выбрать команду Step
Into меню Debug или нажать клавишу [F8J.
в Если очередная инструкция — вызов процедуры, то для
выполнения процедуры без захода в нее следует восполь-
зоваться командой Step Over меню Debug или сочетани-
ем клавиш [Shift]+[F8].
Команда Step Out меню Debug или сочетание клавиш
[Ctrl]+[Shift]+[F8] приведет к выполнению всех строк кода
до конца текущей процедуры.
1.4. Редактор Visual Basic
25
Команда Debug / Run to Cursor или сочетание [Ctrl]+[F8]
приведет к выполнению всех инструкций от текущей и до
строки кода, в которой находится текстовой курсор.
Установить точку останова или снять ранее установленную
можно щелчком мыши на панели точек останова (серая
вертикальная полоса в левой части окна кода (Code)).
Командой Debug / Set Next Statement или сочетанием
[Ctrl]+[F9] можно назначить строку программы, которая
получит управление при следующем шаге.
1.4.7. Обзор команд меню редактора Visual Basic
File (Файл)
Команда меню Назначение
Save... Сохраняет проект
Import File Служит для импорта файлов Visual Basic (BAS, CLS и FRM-файлы)
Export File Служит для экспорта файлов в Visual Basic (BAS, CLS и FRM-файлы)
Remove Удаляет (исключает из состава проекта) мо- дуль или форму
Print Выводит на печать текущий элемент проекта
Close and Return to ... Закрывает окно редактора Visual Basic и воз - вращает управление компоненту Office
26
1.4. Редактор Visual Basic
Edit (Правка)
Undo Typrig C* gedo Typing o*z
X a* . Cw-X
Ий few cw.r
j&E»« CnW .
‘ <Э» Del ::
Select All CtihA •_
04 EM J*F
Find Ней F3
Fgplace... Clk
Indent " Tab--
^fiuMert iSWMeb' ,
E=^ Ш F^eftres^^hods С&Ы
Л Ц., Constants Od*$h^4j
fea|iuid-H6 CtM
Ч*. P<s»aeWf Info : OkSMt-H
A* Ccmptete^crd Od+Spaos
god<rrtarks ►
Команда меню Назначение
Undo Отменяет последнюю операцию редактиро- вания
Redo Отменяет последнюю отмену операции ре- дактирования
Cut Переносит выделенный фрагмент в буфер обмена
Copy Копирует выделенный фрагмент в буфер об- мена
Paste Вставляет содержимое буфера обмена
Clear Удаляет выделенный фрагмент
1.4. Редактор Visual Basic 27
Команда меню Назначение
Select All Выделяет весь текст модуля или все элемен - ты формы
Find Выполняет поиск заданной строки в проце- дуре, модуле или во всем проекте
Find Next Продолжает поиск строки
Replace Выполняет поиск с заменой в процедуре, модуле или во всем проекте
Indent Смещает начало строки на одну позицию та - буляции вправо
Outdent Смещает начало строки на одну позицию та - буляции влево
List Properties/ Methods Открывает список свойств и методов текуще- го или выделенного в тексте объекта
List Constant Открывает список констант, которые могут выступить в качестве значения текущего или выделенного в тексте объекта
Quick Info Дает краткую подсказку относительно син- таксиса функции, процедуры или метода, на имени которого находится курсор в окне кода
Parameter Info Дает краткую подсказку относительно пара - метров функции, процедуры или метода
Complete Word Завершает введенное не до конца слово
Bookmarks Открывает подменю, содержащее команды для манипуляций с закладками
®OlP(6Wl!W
28
1.4. Редактор Visual Basic
V7eiv (Вид)
E Code F?
S.h'.?F7
ДеЫ&зп SHft+F2
Last Position ОЙ8Ш2
Browser F2
Ж• ' -“--- “?
jiriFnedateWfndGw Chi+G
D Locals Window j
Watcf) Window
Call Stack-., CW*L
bojedExpbet CtrkR
Й? Properties Window F4 -
- J^’TAT! . .....::
тЙс/ч
Tvmtr >
pg Mi TOS<ЛЕтJ Ztrtt
Команда меню Назначение
Code Открывает или делает текущим окно програм - мы (кода)
Object Открывает или делает текущим окно формы или объекта Office, к которому относится теку - щий модуль
Definition Переводит курсор в то место программного кода, где содержится объявление текущей пе- ременной или константы
Last Position Возвращает курсор на место в тексте, где была выполнена последняя операция редактирова - НИЯ
1.4. Редактор Visual Basic
29
Команда меню Назначение
Object Browser Открывает или делает текущим окно просмот- ра объектов
Immediate Window Открывает или делает текущим окно отладки
Locals Window Открывает или делает текущим окно локаль - ных переменных, где при отладке программы отображаются значения переменных
Watch Window Открывает или делает текущим окно контроль- ных значений
Call Stack... Отображает последовательность вызовов про - цедур и функций, приведших к текущему со - стоянию программы
Project Explorer Открывает или делает текущим окно проекта
Properties Window Открывает или делает текущим окно свойств
Toolbox Открывает или делает текущим окно панели элементов (панель инструментов элементов управления Toolbox)
Tab Order Открывает диалог, позволяющий просмотреть и отредактировать последовательность перехо- да фокуса клавиатуры между элементами фор- мы при нажатиях на клавишу [Tab]
Toolbars Открывает подменю, служащее для управления панелями инструментов
Excel (Word И Т.Д.) Переключает в окно родительского приложения
30
1.4. Редактор Visual Basic
Insert (Вставка)
"£| .
•'£$ 0355 Module
Команда меню Назначение
Procedure Открывает диалог, позволяющий вставить в текст заготовку процедуры или функции
UserForm Включает в состав проекта пустую форму
Module Включает в состав проекта новый програм- мный модуль
Class Module Включает в состав проекта новый модуль класса
File... Служит для вставки содержимого текстового файла в позиции курсора
Format (Формат)
Л«4,1 ’*►
•geke Same See
Bl See to Ft
О Size to Gt^
Дс*еог&й Spacing *
Vertical Spacing >!
Renter >n Ferm ►
’ grangeButtons *
Й&оур
firdet >
1.4. Редактор Visual Basic 31
Команда меню Назначение
Align Открывает подменю, служащее для выравни - вания позиций выделенной группы элементов формы
Make Same Size Открывает подменю, служащее для выравни - вания размеров выделенной группы элемен - тов формы
Size to Fit Позволяет задать размеры элементов формы
Size to Grid Выравнивает размеры элементов по узлам сетки
Horizontal Spacing Открывает подменю, служащее для измене- ния интервалов по горизонтали внутри выде- ленной группы элементов формы
Vertical Spacing Открывает подменю, служащее для измене- ния интервалов по вертикали внутри выде- ленной группы элементов формы
Center in Form Открывает подменю, служащее для центриро- вания элемента или выделенной группы эле - ментов на форме
Arrange Buttons Открывает подменю, служащее для выравни - вания командных кнопок относительно ниж- него или правого края формы
Group Объединяет выделенные элементы в группу
Ungroup Отменяет группирование элементов
Order Открывает подменю, служащее для управле- ния порядком расположения элементов фор - мы «в глубину»
32 1.4. Редактор Visual Basic
Debug (Отладка)
Corrib SsmphsFfe
4l ww rB
ra Step five. ShMB
ty StepOj# cttfcswft«Fa
•O gun To Cutset ClrMTJ
SddWpjA
йГЙУЛ SWfl.FS
•J* logtfeBreeLpoH
Cte^AWieakpwtts CUkSHfUFS -
Ф Set Statement CWF3
c*> Shew Next Statement
Команда меню Назначение
Compile... Компилирует проект и выдает сообщения об ошибках
Step Into Выполняет очередную инструкцию с захо- ’ дом в процедуры
Step Over Выполняет очередную инструкцию без за- хода в процедуры
Step Out Выполняет все инструкции до выхода из процедуры
Run to Cursor Выполняет программу до позиции курсора
Add Watch Открывает диалог, позволяющий спреде - . лить новое контрольное значение
Edit Watch Открывает диалог, позволяющий отредак- тировать ранее определенное контроль - ное значение
Quick Watch... Отображает значение переменной или константы
1.4. Редактор Visual Basic
33
Команда меню Назначение
Toggle Breakpoint Устанавливает или снимает точку останова
Clear All Breakpoints Снимает все точки останова
Set Next Statement Делает строку, где находится курсор, под- лежащей выполнению на следующем шаге
Show Next Statement Выполняет сдвиг в окне кода так, чтобы подлежащая выполнению инструкция ста- ла видна
Run (Запуск)
> Run Sub/UsefFctm ,.F5..
|| Вгез& СЫ+Break
tfBes# -- *
Design Mode -
Команда меню Назначение
Run Sub/ UserForm Выполняет текущую процедуру
Break Прерывает выполнение программы (текущие значения переменных сохраняются и выпол - нение может быть продолжено)
Reset Завершает выполнение программы (все пере- менные возвращаются в исходное состояние)
Design Mode Переводит программу в режим конструктора (визуального программирования)
2 1855
34
1.4. Редактор Visual Basic
Tools (Сервис)
Д^есепсез... л
ЧМаиси., ;
i
даст..
$дМ Signatuf©.. .
Команда меню Назначение
References... Открывает окно диалога для доступа к объек- там других приложений
Additional Controls Открывает список зарегистрированных в сис- теме элементов управления ActiveX
Macros Открывает диалог, служащий для выбора подлежащей выполнению макрокоманды
Options Открывает диалог, позволяющий изменить различные параметры редактора Visual Basic
VBAProject Properties... Открывает диалог, позволяющий изменить значения свойств проекта
Digital Signature... Открывает диалог цифровой подписи проекта
1.4.8. Обзор панелей инструментов Visual Basic
Standard (Стандартная)
1.4. Редактор Visual Basic
35
Значок Назначение
«3 Делает текущим окно Word (PowerPoint и т.д.)
Служит для включения в состав проекта формы, моду- ля или процедуры
Г] Сохраняет проект
X Переносит выделенный фрагмент в буфер обмена
M Копирует выделенный фрагмент в буфер обмена
Осуществляет вставку содержимого буфера обмена
Выполняет поиск заданной строки
E] Отменяет последнюю операцию редактирования
г» Отменяет последнюю отмену операции редактирования
F Выполняет текущую процедуру
A Прерывает выполнение программы
Завершает выполнение программы
Переводит программу в режим конструктора
11 Открывает или делает текущим окно проекта
Ijg] Открывает или делает текущим окно свойств
Открывает окно просмотра объектов
Открывает или делает текущим окно панели элементов
Вызывает Справку или Помощника Office
36
1.4. Редактор Visual Basic
Debug (Отладка)
Значок Назначение
И Включает режим конструктора
► Выполняет текущую процедуру
и Прерывает выполнение программы
_ Завершает выполнение программы
Устанавливает или снимает точку останова
Выполняет шаг с заходом
Выполняет шаг с обходом
Выполняет шаг с выходом
Открывает или делает текущим окно локальных пе-
ременных
©• Открывает или делает текущим окно отладки
Открывает или делает текущим окно контрольных
значении
|ас] Отображает значение переменной или констант ы
Отображает последовательность вызовов
1.4. Редактор Visual Basic
37
UserForm
Значок Назначение
Выводит объект на передний план
* Убирает объект на задний план
Id Группирует элементы
#i. Отменяет группирование элементов
Открывает меню выравнивания элементов
gl Открывает меню центрирования элементов
*o* Открывает меню выравнивания размеров элементов
liocfe: Изменяет размеры элемента
Edit (Правка)
Значок Назначение
Отображает список свойств и методов
Отображает список предопределенных констант
38
1.5. Основные понятия VBA
Значок Назначение
Выдает синтаксическую подсказку
Выдает подсказку о параметрах метода
** Завершает не до конца введенное слово
‘Це Сдвигает строку на одну позицию табуляции вправо
Сдвигает строку на одну позицию табуляции влево
£ Устанавливает или снимает точку останова
Делает выделенные строки комментарием
Снимает признак комментария с выделенных строк
Т Устанавливает или снимает закладку
ъ Переходит к следующей закладке
% Переходит к предыдущей закладке
& Снимает все закладки в тексте
1.5. Основные понятия VBA
1.5.1. Проект
Под проектом всегда понимают отдельный файл — это мо-
жет быть рабочая книга в Excel, документ Word или пре-
зентация в PowerPoint. База данных в Access также может
выступать в качестве проекта, однако поскольку в Access
не допускается открытие нескольких баз данных одновре-
менно, речь может идти только об одном проекте.
1.5. Основные понятия VBA
39
Проект включает в себя разнородные составные части —
листы рабочей книги (или соответственно документы, слай-
ды), а также модули, модули классов и формы.
Элементы управления ActiveX также могут быть включены
в состав проекта.
VBA-проект невозможно создать в среде редактора Visual
Basic: для этого должен быть вначале создан файл одного
из компонентов Office — документ, рабочая книга, презен-
тация или база данных.
1.5.2. Модуль
Модуль (программный модуль) состоит из неограниченно-
го количества процедур и функций.
Модули допускают объявление переменных. Объявленная
в модуле переменная доступна в пределах всего модуля.
Создать модуль можно командой Module меню Insert. При
записи макроса автоматически создается модуль, если он
не был создан ранее.
Двойным щелчком на имени объекта (документа, книги и т. д.)
в окне проекта создается программный модуль, предназ-
наченный для размещения процедур обработки событий
данного объекта. Список всех возможных событий при
этом доступен в соответствующем окне кода (окне Code).
Для каждого объекта может существовать только один та-
кой модуль.
Обзор. Процедуры и функции
Процедуры и функции — место хранения программного
кода. За исключением нескольких операторов специаль-
ного назначения и объявления данных и типов данных все
операторы (инструкции) программы могут использоваться
только внутри процедур и функций.
Процедуры и функции могут вызывать друг друга.
В Excel и Access функции могут использоваться для вычис-
лений и вставки результата в лист, форму или отчет.
40
1.5. Основные понятия VBA
1.5.3. VBA и объектная модель
VBA можно рассматривать как совокупность ядра языка и неко-
торого множества объектов. Ядро языка VBA — это собственно
сам язык, обеспечивающий выполнение BASIC-инструкций и
поддерживающий типы и структуры данных. Ядро VBA нельзя
расширить и никакой гибкости в обращении с собой оно не
допускает. Гибкость и расширяемость обеспечивается в VBA
благодаря объектному подходу. Каждое приложение, создан-
ное в среде Office с помощью VBA, удовлетворяет требовани-
ям объектной модели. При этом предполагается, что всю со-
вокупность элементов, из которых состоит приложение, мож-
но представить в форме некоторой иерархической структуры.
Это касается как элементов управления (например, меню, па-
нель инструментов и т. д.), так и данных (лист рабочей книги,
абзац, слайд или таблица базы данных).
Преимущество, которое дает объектная модель, состоит в том,
что разные приложения могут получить доступ к объектам друг
друга. Каждый объект обладает набором свойств, значения
которых могут быть изменены, и набором методов, которые
могут быть вызваны и выполнены. Кроме того, объекты могут
реагировать на определенные события.
Пример
Sub Macrol()
ActiveCell.FormulaRlCl = "15"
Range("Al").Select
Selection.NumberFormat = "#,##0.00$"
Sheets.Add
Sheets(1).Name = "TestSub"
Sheets ("TestSub") .Select
End Sub
Комментарий
И Пример иллюстрирует основные способы доступа к объек-
ту, его свойствам и методам, а также обращение к объекту
1.5. Основные понятия VBA
41
как к элементу коллекции. Первая часть кода загружает
значение 15 в ячейку текущего листа и задает для этой
ячейки денежный формат отображения чисел. Вторая часть
процедуры вставляет в рабочую книгу новый лист с име-
нем «Пример» и делает его текущим.
Обзор. Объекты
Под объектом понимают программное представление эле-
мента приложения.
Типичные объекты PowerPoint: презентации, слайды, текс-
товые поля, точечные рисунки.
Типичные объекты Excel: рабочие книги, листы, ячейки, диа-
граммы.
Типичные объекты Word: документы, страницы, абзацы, таб-
лицы.
Типичные объекты Access: формы, записи, отчеты, запросы.
Обзор. Свойства
Кавдый объект обладает набором свойств. Значение свойст-
ва можно прочитать и в большинстве случаев изменить.
Примеры свойств для некоторых объектов: имя шрифта для
текстового поля, формат чисел для поля записи в базе дан-
ных, фоновый цвет для рисунка или содержимое ячейки для
ячейки.
Со свойствами объектов можно обращаться, как с перемен-
ными — можно присваивать им значения и, наоборот, при-
сваивать их значения другим переменным или свойствам.
• Присваиваем значение свойству:
Range("Al").Value = 15
• Читаем значение свойства в переменную:
MyCellValue = Range("Al").Value
42 1.5. Основные понятия VBA
Изменение значения свойства влечет за собой изменение
вида объекта на экране — видимый объект «перерисовы-
вает» себя с учетом изменившегося свойства.
Обзор. Методы
Каждый объект располагает методами.
Методы служат для выполнения над объектом предусмот-
ренных для этого вида объекта действий.
Примеры применения методов к объектам: выделение ячей-
ки, удаление записи, копирование выделенного текста в
буфер обмена, запуск презентации.
Имена методов и объектов разделяются точками и допус-
кают логическое объединение.
• Простой вызов метода, вставляющего в книгу новый лист:
Sheets.Add
• Вложенный вызов, выделяющий область размером 3x2 в
5 ячейках справа от текущей:
ActiveCell.Offset(0,5)-Resize(3,2).Select
Обзор. События
Некоторые объекты способны реагировать на события —
для этого в коде программы должна быть предусмотрена
процедура-обработчикданного события (при наступлении
события она будет выполнена автоматически).
Примеры событий: открытие рабочей книги, создание до-
кумента, изменение содержимого поля.
Процедуры обработки событий пишутся для документов,
форм, презентаций, рабочих книг и листов, а также для
элементов управления (в том числе ActiveX-элементов).
Программирование для среды, управляемой событиями,
отличается от программирования в стиле «старого, добро-
го BASIC» — каждая процедура здесь либо выполняется в
ответ на некоторое событие, либо используется процеду-
рой-обработчиком события.
1.5. Основные понятия VBA
43
Обзор.Коллекции
Однородные объекты могут объединяться в специального
вида списки, именуемые коллекциями.
Состав большинства коллекций можно менять с помощью
добавления и исключения объектов из коллекции.
• Добавить лист в рабочую книгу:
Sheets.Add
• Удалить первый лист книги:
Sheets(1).Delete
Примеры коллекций: листы книги, поля сетки, абзацы текс-
та или слайды презентации.
Доступ к элементу (члену) коллекции осуществляется по
его порядковому номеру или по имени.
• Доступ по номеру:
Sheets (1) .Name = "TestSub"
• Доступ по имени:
Sheets("TestSub").Activate
Коллекции и их поддержка языком VBA делают возможны-
ми массовые операции над объектами, а также поиск сре-
ди однородных объектов.
Типы данных
и операции
2.1. Объявления и область видимости
Манипуляции с данными разных типов — элементарная зада-
ча, которую приходится решать любой программе. В случае
VBA-программы роль данных могут играть числовые и строко-
вые значения, содержимое ячеек листа рабочей книги или за-
пись в таблице базы данных Access, а также многое другое.
Любые данные занимают место в памяти по некоторому адресу,
но программисту нет нужды интересоваться адресами, посколь-
ку в коде программы он обращается к данным по их именам.
С чем бы ни имела дело VBA-программа — с переменными
или константами, процедурами или функциями, с типами или,
наконец, объектами — все они имеют имена.
Обзор. Имена — необязательные правила
Имена должны говорить сами за себя.
• В имени должно отражаться назначение объекта, которо-
му это имя присвоено. Например, W1, W2, W3 — неудач-
ные имена. Гораздо лучшими были бы, например, Coun-
ter, CurrentRecord или Счетчик, ТекущаяЗапись.
Имена следует снабжать префиксами.
• Имена объектов, относящихся к определенному типу,
должны снабжаться коротким (но при этом понятным)
префиксом, идентифицирующим тип объекта.
2.1. Объявления и область видимости
45
Имена необходимо объявлять (декларировать).
• С одной стороны, предварительное объявление имен дис-
циплинирует мысль и упорядочивает отношения програм-
миста с данными, с другой — позволяет избежать оши-
бок, возникающих в результате элементарной опечатки.
• С помощью оператора Option Explicit, помещенного в об-
щий раздел модуля (т. е. вне процедур и функций), пред-
варительное объявление имен является обязательным.
При объявлении имени следует указывать тип.
• Явное задание типа данных, с которыми должно быть свя-
зано объявляемое имя, не только сужает поле для ошибок,
но и позволяет более эффективно распорядиться памя-
тью и повысить скорость обращения к данным.
Не следует пользоваться краткой формой идентификации
типа.
• Ради совместимости с предыдущими версиями в языке
VBA все еще остается возможность задать тип перемен-
ной с помощью одного символа в ее имени ($ % #), од-
нако пользоваться этой возможностью не стоит — такие
имена являются обычным источником ошибок.
Обзор. Имена — обязательные правила
Первым символом имени должна быть буква.
В имени не должно содержаться пробелов, а также симво-
лов ,!@&$#.
В качестве имен нельзя использовать зарезервированные
(ключевые слова) языка Visual Basic For Applications.
Заглавные и строчные буквы в имени не различаются.
2.1.1. Константы
Константами называются данные, значения которых опреде-
ляются при разработке программы и не могут быть изменены
в период выполнения программы.
46
2.1. Объявления и область видимости
Константы могут быть как числовыми, так и строковыми. Име-
нованная константа более наглядна, чем просто, скажем, чис-
ло, особенно если имя константы отражает ее назначение.
Кроме того, механизм констант позволяет изменить важные
параметры программы, изменив всего одно значение в ис-
ходном тексте вместо многих.
Синтаксис
[Public / Private] Const Имя [As Тип] = Выражение
Параметр Назначение
Public Объявление на уровне модуля. Константа доступ - на («видна») во всех процедурах и функциях всех модулей проекта
Private Объявление на уровне модуля. Константа доступ - на в процедурах и функциях данного модуля
Имя Имя константы, т. е. идентификатор, по которому должно происходить обращение к ней
Тип Тип константы. Допустимы все простые типы
Выражение Числовое или строковое значение, другая кон- станта или результат операции
Пример
Public Const Mwst As Single = 0.15
Public Const MwstFactor As Single = Mwst + 1
Sub TestPGMO
Const PGMTitle As String = _
"тестовая VBA-программа"
Const MaxNumber As Integer = 100
End Sub
2.1. Объявления и область видимости
47
Комментарий
Mwst: Доступно во всех модулях.
MwstFactor: Доступно во всех модулях. Значение зависит
от значения константы Mwst.
PGMTitle: Доступно только в процедуре TestPGM.
MaxNumber: Доступно только в процедуре TestPGM.
Примечания
Если тип константы не задан явным образом, VBA исполь-
зует тип выражения.
Часто бывает удобным выделить под объявления констант
специальный модуль — это облегчает создание вариантов
приложения (например, варианты для разных языков).
Переменные
Синтаксис
Dim Имя [As Тип]
Dim Имя(Индексы) [As Тип]
Параметр Назначение
Имя Имя переменной, т. е. идентификатор, по которому должно происходить обращение к ней
Тип Тип переменной. Допустимы любые типы, включая объектные (классы)
Индексы Нижние и верхние границы изменения индексов (размерности). Допустимы многомерные массивы
Переменные в противоположность константам могут менять
свое значение в процессе выполнения программы. Но, как и к
константам, обращение к переменным производится по их
именам.
48
2.1. Объявления и область видимости
Переменная может принадлежать к одному из простых типов
или же к типу, определенному пользователем как комбинация
простых типов. Кроме того, переменная может быть объявле-
на, как массив.
Пример
Dim Number As Long
Sub TestPGM()
Dim Counter As Integer
Dim MyMessages(5) As String
End Sub
Комментарий
Number: Доступно во всех модулях.
Counter: Доступно только в процедуре TestPGM.
MyMessages: Одномерный массив строк с нумерацией эле-
ментов от 0 до 5, доступный только в процедуре TestPGM.
Примечания
Если тип переменной не указан, по умолчанию будет ис-
пользован тип Variant.
Сделать предварительное объявление переменных обяза-
тельным в пределах модуля можно с помощью оператора
Option Explicit.
При старте программы переменные численных типов ини-
циализируются значением 0, переменные строковых ти-
пов — значением «пустая строка», Variant-переменные —
значением Empty и переменные объектных типов — значе-
нием Nothing.
Объявление переменных с областью видимости на уровне
модуля необходимо помещать в начало модуля.
(gOlPfeWliW
2.1. Объявления и область видимости
49
Объявление переменных внутри процедуры следует поме-
щать в начало процедуры (это повышает «прозрачность»
текста и облегчает его понимание).
Везде, где это возможно, желательно использовать локаль-
ные переменные на уровне процедуры — неумеренное ис-
пользование переменных, объявленных на уровне модуля,
ведет к снижению «прозрачности» текста и затрудняет его
понимание.
2.1.3. Область видимости
Переменные и константы кроме всего прочего характеризу-
ются областью видимости — областью, где они «видны», т. е.
доступны для программы. За пределами своей области види-
мости переменная или константа не может быть использована
программой. Область видимости переменной или константы
определяется двумя обстоятельствами: где она объявлена и
какое дополнительное ключевое слово было при этом исполь-
зовано. На приведенной ниже схеме изображены три облас-
ти, на которые распространяется видимость (доступность)
трех объявленных переменных.
50
2.1. Объявления и область видимости
Примечания
Рабочая книга (А): Переменная А доступна во всех проце-
дурах всех модулей, относящихся к данной рабочей книге.
Модуль (В): Переменная В доступна только в пределах
модуля. Если где-то в рабочей книге объявлена глобаль-
ная (т. е. уровня рабочей книги) переменная с таким же
именем, то в процедурах этого модуля будет фактически
использована эта переменная В.
Процедура (С): Переменная С определена только внутри
процедуры Prod. Если переменная с таким же именем
объявлена на уровне рабочей книги или модуля, то внутри
процедуры Prod будет все равно использоваться «своя»,
локальная переменная С.
Синтаксис
Public Const Имя [As Тип] = Выражение
Public Имя [As Тип]
Public Имя(Индексы) [As Тип]
Комментарий
В качестве дополнительного ключевого слова использует-
ся Public, которое в случае объявления переменной заме-
няется словом Dim.
Зарезервированное слово Public можно использовать толь-
ко на уровне модуля (т. е. вне процедур и функций).
Переменные и константы, объявленные с помощью слова
Public, доступны во всех модулях проекта.
Область видимости Public допускает обращение к данной
переменной из другого проекта при условии создания
ссылки на текущий проект. Это можно сделать невозмож-
ным с помощью оператора Option Private Module.
2.1. Объявления и область видимости 51
Синтаксис
Private Const Имя [As Тип] = Выражение
Private Имя [As Тип]
Private Имя(Индексы) [As Тип]
Комментарий
Область видимости переменной или константы ограниче-
на программным модулем, где она объявлена с использо-
ванием зарезервированного слова Private.
Область видимости Private используется по умолчанию.
В случае объявления переменной слово Private заменяет-
ся словом Dim.
Зарезервированное слово Private можно использовать толь-
ко на уровне модуля.
Синтаксис
Static Имя [As Тип]
Static Имя(Индексы) [As Тип]
Static Sub Имя()
Комментарий
Переменные, объявленные на уровне процедуры с исполь-
зованием зарезервированного слова Static, остаются ло-
кальными, но при этом продолжают существовать и сохра-
няют свое значение и после возврата из процедуры (ста-
тические переменные).
Если слово Static использовано при объявлении процеду-
ры, то все ее локальные переменные будут статическими.
Пример
Public Const Mwst As Integer = 0.15
Public DBName As String
52
2.2. Простые типы данных
Private Const MwstFactor As Integer = Mwst + 1
Private DBRecordNum As Long
Sub TestPGM()
Dim Counter As Integer
Static MyMessages(5) As String
End Sub
Комментарий
Mwst: Константа, доступная во всех процедурах всех мо-
дулей проекта.
DBName: Переменная, доступная во всех процедурах всех
модулей проекта.
MwstFactor: Константа, доступная в пределах данного мо-
дуля.
DBRecordNum: Переменная, доступная в пределах модуля.
MyMessages: Статическая переменная — одномерный мас-
сив строк. Доступна только в пределах процедуры TestPGM,
однако сохраняет свое значение и после выхода из проце-
дуры.
Counter: Локальная переменная, доступная только в пре-
делах процедуры TestPGM.
2.2. Простые типы данных
VBA (не в пример старому BASIC) поддерживает множество
простых типов. Некоторые из них можно обозначить с помо-
щью специального символа в имени объекта (%, $, & и др.),
однако эта возможность существует в VBA только из сообра-
жений совместимости и пользоваться ею не следует. Тип дан-
ных в объявлении нужно указывать явным образом посредст-
вом соответствующего ключевого слова.
2.2. Простые типы данных 53
В приведенной ниже таблице перечислены простые типы VBA,
при этом указан объем памяти, занимаемый переменной каж-
дого типа, и кратко охарактеризованы значения, которые та-
кая переменная может в себе содержать.
Тип Объем памяти Описание
Boolean 2 байта Логические (булевы) значения
Byte 1 байт Целые числа (0 - 255)
Integer 2 байта Целые числа
Long 4 байта Целые числа двойной длины
Single 4 байта Дробные числа с плавающей точкой (плавающие)
Double 8 байт Плавающие двойной точности
Decimal 12 байт Знаковое с фиксированной точкой
Currency 8 байт Числа в денежном формате
Date 8 байт Значения даты и времени
String 1 байт/символ Строки символов
Object 4 байта Ссылки на объекты
Variant 16 байт Тип определяется содержимым
S-ju/car>
Может принимать только значения True (Истинно) или Fal-
se (Ложно).
Переменные типа Boolean используются главным образом
при организации циклов и ветвлений.
Пример
'Возвращенное диалогом логическое значение
'сохраняется в булевой переменной, которая
'затем анализируется
54
2.2. Простые типы данных
Dim RetValue As Boolean
RetValue = Dialog(1).Show
If RetValue = True Then
End If
Byte
Наименьшее значение: О
Наибольшее значение: 255
Ограничения: может принимать целочисленные беззнако-
вые (положительные) значения.
Присваивание недопустимого значения приводит к ошибке.
Переменные типа Byte используются главным образом
для хранения битовых строк.
Отличается малым объемом занимаемой памяти и высо-
кой скоростью обращения.
Пример
'В битовой строке хранятся в упакованном
'виде флажки
Dim Bitstring As Byte
Dim FlagO As Integer
Dim Flagl As Integer
Dim Flag2 As Integer
FlagO = 1
Flagl = 0
Flag3 = 1
BitString = FlagO + Flagl*2 + Flag3*8
Integer
Наименьшее значение: -32768
Наибольшее значение: +32767
2.2. Простые типы данных
55
Ограничения: можно присваивать только целочисленные
значения.
Присваивание недопустимого значения приводит к ошибке.
Часто используют в качестве счетчика цикла.
Отличается малым объемом занимаемой памяти и высо-
кой скоростью обращения.
Пример
'Цикл на 1000 проходов
Dim Counter As Integer
For Counter = 1 to 1000
Next
Lon-
Наименьшее значение: -2147483648
Наибольшее значение: +2147483647
Ограничения: можно присваивать только целочисленные
значения.
Присваивание недопустимого значения приводит к ошибке.
Отличается высокой скоростью обращения и наилучшим
образом подходит для задач целочисленной арифметики.
Пример
'Целочисленные вычисления с максимальной
'скоростью
Dim Distance As Long
Dim TotalTime As Long
Dim Speed As Long
Speed = 250
TotalTime = 8
Distance = Speed * TotalTime
56
2.2. Простые типы данных
Single ______________ ;
Наименьшее отрицательное значение: -3.402823Е+38
Наибольшее отрицательное значение: -1.401298Е-45
Наименьшее положительное значение: 1.401298Е-45
Наибольшее положительное значение: 3.402823Е+38
Обеспечивает точность до 6-го знака после десятичной
точки.
Присваивание недопустимого значения приводит к полу-
чению неверного результата.
Используется для вычислений с плавающей точкой.
Пример
'Вычисления с дробными числами
Dim MyWeight As Single
Dim MyPrice As Single
Dim PriceToWeight As Single
MyWeight =2.5
MyPrice = 13.8
PriceToWeight MyPrice / MyWeight
Наименьшее отрицательное значение:
-1.79769313486232E+308
Наибольшее отрицательное значение:
-4.94065645841247Е-324
Наименьшее положительное значение:
4.94065645841247Е-324
Наибольшее положительное значение:
1.79769313486232Е+308
Обеспечивает точность до 14-го знака после десятичной
точки.
2.2. Простые типы данных
57
Присваивание недопустимого значения приводит к полу-
чению неверного результата.
Используется для вычислений с плавающей точкой.
Пример
'Вычисление площади круга
Dim PI As Double
Dim Radius As Double
Dim MySquare As Double
PI = 3.14159265358979
Radius = 5.992
MySquare = PI * Radius * 2
Наименьшее отрицательное значение:
-79228162514264337593543950335
Наибольшее отрицательное значение:
-0.0000000000000000000000000001
Наименьшее положительное значение:
0.0000000000000000000000000001
И Наибольшее положительное значение:
+79228162514264337593543950335
Обеспечивает точность до 28-го знака после десятичной
точки.
Присваивание недопустимого значения приводит к полу-
чению неверного результата.
Используется для вычислений с фиксированной точкой.
В настоящей версии может использоваться только внутри
типа Variant, т.е. объявить переменную с явным типом De-
cimal невозможно. Преобразование в тип Decimal для пе-
ременной Variant выполняется функцией CDec.
Currency . - У '-i.---'1
Наименьшее значение: -922'337’203'685'477.5808
Наибольшее значение: +922'337'203'685'477.5807
58
2.2. Простые типы данных
Обеспечивает точность до 4-го знака после десятичной точки.
Ограничения: допускается не более 4 знаков после деся-
тичной точки.
Используется для расчетов в денежном формате.
Отличается высокой скоростью вычислений, поскольку для
внутреннего представления данных этого типа использу-
ются целочисленные форматы.
Пример
'Вычисление по курсу
Dim MySum As Currency
Dim USDChange As Currency
Dim USDSum As Currency
MySum = 123.45
USDChange = 6.21
USDSum = MySum / USDChange
Oate
Наименьшее значение: 1 января 100 года.
Наибольшее значение: 31 декабря 9999 года.
Значения даты и времени ограничиваются символами #...#
или
Значения дат и времени имеют внутреннее представление
в виде числа с десятичной дробью, при этом целая часть
числа соответствует дате, а дробная — времени. Это по-
зволяет использовать операции сложения и вычитания в
отношении дат и времени.
Значения текущей системной даты и времени можно полу-
чить с помощью функции Now().
Такие особенности, как разное количество дней в разных
месяцах, а также особенности високосного года учитыва-
ются автоматически.
2.2. Простые типы данных
59
Пример
'Вычисление возраста в днях
Dim BirthDay As Date
Dim TodayDay As Date
Dim DaysAge As Long
BirthDay = "23/12/56"
TodayDay = "31/12/99"
DaysAge = TodayDay - BirthDay
String
Максимальная длина: 2 миллиарда символов.
Строковые значения необходимо заключать в символы
Специальным видом строки является строка фиксирован-
ной длины. Ее максимальная длина — 65536 символов
(конкретная длина указывается при объявлении). Обраще-
ние со строками фиксированной длины отличается неко-
торыми особенностями.
Пример
'Строки и строки
Dim DBName As String * 50
Dim DBSurname As String * 50
Dim Title As String
DBName - "Иван"
'Остальная часть заполнена пробелами
DBSurname = "Иванов"
'Остальная часть заполнена пробелами
Title = "TestPRG"
'Длина строки в точности 7 символов
60
2.2. Простые типы данных
Объектную переменную можно объявить как таковую (тип
Object), либо же указать определенный объектный тип.
Переменная типа Object (ссылка на объект) может указы-
вать на объект любого типа, а также на контейнер или пе-
речень.
Переменная, объявленная как ссылка на объект опреде-
ленного типа, может указывать на объект только этого
типа. Присваивание ей в качестве значения объекта друго-
го типа вызовет ошибку.
Присваивание объектного значения (точнее, ссылки на объ-
ект) производится с помощью зарезервированного слова Set.
Пример
'Доступ к ячейке и диалогу
Dim Targetcell As Range
Dim Dig As Object
Dim ValueField As Object
Set Targetcell = Worksheets(1)-Range("Al")
'Первый диалог листа
Set Dig = Dialogsheets(1)
'Первое поле ввода листа
Set ValueField = Dlg.EditBoxes(1)
Dig.Show
'Открытие диалога
Targetcell = ValueField.Text
2.3. Массивы
61
Variant
Переменная Variant способна принять значение любого из
простых типов.
Конкретный тип значения, которое принимает переменная,
определяется в момент присваивания.
Variant — тип по умолчанию для всех переменных, которые
не были объявлены или же были объявлены без указания
типа.
Занимает больше места в памяти, чем переменная любого
простого типа, функции которого способна выполнять Va-
riant-переменная.
Применения этого типа следует по возможности избегать,
поскольку обращение к данным типа Variant происходит
медленнее, места в памяти они занимают больше, а про-
грамму с их использованием труднее отлаживать.
Пример
'Варианты применения типа Variant
Dim Universal As Variant
Dim MyNumber As Integer
Dim MyString As String
Universal = 38
MyNumber = Universal * 2
MyString = Universal & " попугаев"
2.3. Массивы
Массивом называют совокупность переменных одного типа,
доступ к которым осуществляется по их «общему» имени (име-
ни массива) и номеру переменной в массиве (индексу). При-
менение массивов упрощает массовые операции с данными.
62
2.3. Массивы
Милые дамы! 3
Дорогие друзья! 2
Дамы и господа! 1
УважаемьЕ господа! 0
4. MyMessages О
MyMessages (1)
Синтаксис
Dim Имя(Индекс) [As Тип]
Параметр Назначение
Имя Имя массива
Тип Тип данных, к которым относятся элементы массива
Индекс Максимальное значение индекса массива
Dim Имя(Индекс!, Индекс2..) [As Тип]
Параметр Назначение
Имя Имя массива
Тип Тип данных, к которым относятся элементы массива
Индекс1, Индекс?.. Два или более (до 60) максимальных значе- ний индексов элементов массива
2.3. Массивы
63
Dim Имя(НижняяГраница to ВерхняяГраница) [As Тип]
Параметр Назначение
Имя Имя массива
Тип Тип данных, к которым относятся элементы массива
НижняяГраница Минимальное значение индекса элементов массива
ВерхняяГраница Максимальное значение индекса элементов массива
Пример
'Два массива
Dim MyMessages(3) As String
Dim Mylncom(12, 1990 to 1999) As Currency
MyMessages(0) = "Уважаемые господа!"
MyMessages(1) = "Дамы и господа!"
I
Mylncomd, 1990) = 120000
Mylncom(2, 1990) = 150000
I
Mylncom(4, 1998) = 450000
Mylncom(5, 1998) = 560000
Комментарий
MyMessages: Одномерный массив, состоящий из четы-
рех строк с номерами от 0 до 3.
Mylncom: Двумерный массив чисел в денежном формате.
Первое измерение соответствует 12 месяцам года, вто-
рое — годам с 1990 по 1999. Таким образом, 120 элемен-
тов массива соответствуют 120 месяцам 10 лет и занима-
ют в памяти 8 * 120 = 960 байт.
64 2.4. Типы данных, определяемые пользователем
Примечания
Если нижняя граница индекса не указана, то по умолчанию
она принимается равной 0.
• С помощью оператора Option Base значение нижней гра-
ницы по умолчанию можно изменить.
Массивы нельзя использовать в качестве значений констант.
Попытка доступа к элементу с номером, выходящим за объ-
явленные границы, вызовет ошибку.
Размерность и границы индексов динамического (т.е. объ-
явленного без указания индексов) массива можно переоп-
ределить посредством оператора ReDim.
Используя функции LBound и UBound, можно получить теку-
щие значения границ изменения индексов элементов мас-
сива.
С помощью оператора Erase массив можно полностью уда-
лить.
2.4. Типы данных, определяемые
пользователем
Определяемые пользователем типы данных называют также
записями или структурами. Такой тип представляет собой не-
кую совокупность типов (простых или определенных ранее),
объединенных общим именем.
Если затем создать (объявить) переменную, принадлежащую
к вновь определенному типу, то доступ к ее компонентам мож-
но будет осуществлять по имени переменной и отделенному
точкой имени компонента (как оно было задано при объявле-
нии типа).
В отличие от массивов такой механизм позволяет объединять
в единую структуру переменные разных типов.
2.4. Типы данных, определяемые пользователем 65
—► 5600.00 Salary OurEmployee
15.5.54 BirthDay
Сюзанна Мюллер Name
124 PersNum
OurEmployee.IName
Синтаксис
Туре ИмяТипа
Имя1 [As Тип]
Имя2 [As Тип]
End Туре
Параметр Назначение
ИмяТипа Имя типа, которое должно фигурировать в объ- явлениях переменных определяемого типа
Имя1, Имя2... Имена компонентов типа, по которым должно происходить обращение к компонентам создан- ных переменных
Тип Тип компонента
Пример
'Структура для карточки работника в файле данных
Type OurEmployee
PersNum As Long
Name As String
BirthDay As Date
Salary As Currency
End Type
3 1855
66
2.5. Арифметические операции
Sub PGMTestO
Dim TempEmployee As OurEmployee
TempEmployee.PersNum = 124
TempEmployee.Name = "Сюзанна Мюллер"
TempEmployee.BirthDay = "15/5/54"
TempEmployee.Salary = 5600.00
End Sub
Комментарий
OurEmployee: Определяемый пользователем тип, необ-
ходимый для последующего создания переменной этого
типа.
TempEmployee: Переменная типа OurEmployee.
.PersNum, .Name, .BirthDay, .Salary: Переменные-ком-
поненты, входящие в состав переменной определенного
пользователем типа.
Примечания
Объявление пользовательских типов осуществляется на
уровне модуля.
После того как определяемый пользователем тип объяв-
лен, переменную этого типа можно объявить (создать) как
на уровне модуля, так и внутри процедуры или функции.
Доступ к переменным-компонентам осуществляется че-
рез имя переменной и имя компонента типа, разделенные
точкой.
Для переменных, принадлежащих к одному и тому же поль-
зовательскому типу, допустима операция присваивания.
2.5. Арифметические операции
Арифметические операции выполняются над числовыми зна-
чениями, их результатом также является числовое значение.
В качестве операндов могут выступать переменные, констан-
ты и выражения.
2.5. Арифметические операции 67
Операция Описание
+ Сложение 7 + 2 = 9
- Вычитание или перемена знака 7 2 = 5 -7 - 2 = -9
/ Деление 7 / 2 = 3.5
♦ Умножение 7 * 2 = 14
Л Возведение в степень 7 + 2Л2 = 11
\ Целочисленное деление 7\2 = 3
Mod Деление по модулю I (остаток после целочисленного деления) I 7 Mod 2 = 1
Примечания
Одноместные операции возведения в степень и перемены
знака выполняются раньше всех остальных, двухместные
операции *, /, \, Mod выполняются раньше + и -.
Операции, имеющие одинаковый приоритет, выполняются
слева направо.
Последовательность выполнения операций можно явно за-
дать с помощью скобок.
Пример
Result = 10 + 20 - 2 * 3' = 24
Result = 10 + 20 / 5' = 14
Result = 10 * (3+2) / 25' = 2
68
2.6. Логические операции
Result = 10 * 7 \ 3' = 23
Result = 10 * (7 \ 3)' = 20
Result = 10 * 5 л 2 + 5* = 255
2.6. Логические операции
Логические операции выполняются над логическими (булевы-
ми) значениями. Кроме того, логические операции могут вы-
полняться над целыми числами — в этом случае речь будет
идти о выполнении логической операции над соответствую-
щими двоичными разрядами операндов.
Операция Описание
Not Логическое отрицание
And Логическое «И»
Or Логическое «ИЛИ»
Xor Исключающее «ИЛИ»
Imp Импликация
Eqv Эквивалентность
Nat
Операция отрицания — для инверсии логического значения.
Операнд Результат операции
True False
False True
Null Null
Значение Null показывает, что переменная не содержит дан-
ных. Это значение можно присвоить переменной непосредст-
венно, или в результате операции с таким же значением.
2.6. Логические операции
69
При выполнении операции над целым числом каждый бит ре-
зультата получается инверсией соответствующего бита (дво-
ичного разряда) операнда.
Пример
' Переменная-"переключатель" на два положения
Dim ToggleVar As Boolean
ToggleVar = Not ToggleVar
'Побитовая инверсия целого числа
Dim Number As Integer
Dim Result As Integer
Number = 127 '0000 0000 0111 1111 => 127
Result = Not Number'1111 1111 1000 0000 => -128
Number = 4253 '0001 0000 1001 1101 => 4253
Result = Not Number'1110 1111 0110 0010 => -4254
And
Логическое «И» дает в результате True лишь в случае, когда
оба операнда имеют значение True.
Операнд 1 Операнд 2 Результат
True True True
True False False
True Null Null
False True False
False False False
False Null False
Null True Null
Null False False
Null Null Null
70
2.6. Логические операции
Значение Null показывает, что переменная не содержит дан-
ных. Это значение можно присвоить переменной непосредст-
венно, или в результате операции с таким же значением.
При выполнении операции And над целыми числами каждый
бит результирующего целого числа является результатом опе-
рации And над соответствующими битами операндов. Если оба
этих бита равны 1, то и бит результата будет равен 1. Во всех
остальных случаях бит результата будет равен 0.
1. Операнд 0001 0000 1001 1101 (4253)
2. Операнд 0000 0101 1001 1001 (1433)
Результат 0000 0000 1001 1001 (0153)
Пример
' Если значение PersAge находится между 12
' и 18, то юноша
If PersAge >= 12 And PersAge <= 18 Then
MsgBox("Юноша")
End If
'Сбросить старшие 8 бит в 16-битном числе в 0
Dim MyMask As
Dim Number As
Dim Result As
Integer
Integer
Integer
MyMask = 255 ' 0000 0000 1111
Number = 4253' 0001 0000 1001
Result = Number And MyMask
' 0000 0000 1001
1111 => 255
1101 => 4253
1101 =>
157
dr
Логическое «ИЛИ» дает в результате True в случаях, когда один
из операндов имеет значение True.
2.6. Логические операции 71
Операнд 1 Операнд 2 Результат
True True True
True False True
True Null True
False True True
False False False
False Null Null
Null True True
Null False Null
Null Null Null
Значение Null показывает, что переменная не содержит дан-
ных. Это значение можно присвоить переменной непосредст-
венно, или в результате операции с таким же значением.
При выполнении операции Or над целыми числами каждый бит
результирующего целого числа является результатом опера-
ции Or над соответствующими битами операндов. Если хотя бы
один их этих битов равен 1, то бит результата будет равен 1.
1. Операнд 0001 0000 1001 1101 (4253)
2. Операнд 0000 0101 1001 1001 (1433)
Результат 0001 0101 1001 1101 (5533)
Пример
'Если значение PersAge меньше 12 или больше 18,
'то не юноша
If PersAge < 12 Or PersAge > 18 Then
MsgBox("He юноша")
End If
72
2.6. Логические операции
'Установить старшие 8 бит в 16-битном числе в 1
Dim MyMask As Integer
Dim Number As Integer
Dim Result As Integer
MyMask = -256' 1111 1111 0000
Number = 4253' 0001 0000 1001
Result = Number Or MyMask
' 1111 1111 1001
0000 => -256
1101 => 4253
1101 => -99
Xur
Исключительное (исключающее) «ИЛИ» дает в результате
True в случаях, когда значения операндов различаются, и Fal-
se, когда значения операндов одинаковы.
Операнд 1 Операнд 2 Результат
True True False
True False True
False True True
False False False
При выполнении операции Хог над целыми числами каждый бит
результирующего целого числа является результатом операции
Хог над соответствующими битами операндов. Если значения
этих битов не равны между собой, то бит результата будет ра-
вен 1. В противном случае бит результата будет равен 0.
1. Операнд 0001 0000 1001 1101 (4253)
2. Операнд 0000 0101 1001 1001 (1433)
Результат 0001 0101 0000 0100 (5380)
2.6. Логические операции
73
Пример
' Если значение PersAge находится между 12
'и 18, то юноша
If PersAge > 12 Xor PersAge < 18 Then
MsgBox("Юноша")
End If
'Инвертировать старшие 8 бит
'в 16-битном числе в 1
Dim MyMask As
Dim Number As
Dim Result As
Integer
Integer
Integer
MyMask = -256' 1111 1111 0000 0000 => -256
Number = 4253' 0001 0000 1001 1101 => 4253
Result = Number Xor MyMask
' 1110 1111 1001 1101 =>-4195
Imp
Операнд 1 Операнд 2 Результат
True True True
True False False
True Null Null
False True True
False False True
False Null True
Null True True
Null False Null
Null Null Null
74
2.6. Логические операции
Результат импликации в отличие от результата операций And,
Or и Хог зависит от последовательности операндов. Если пер-
вый операнд равен True, то результатом импликации будет
значение второго операнда. Если первый операнд равен Fal-
se, то—True вне зависимости от значения второго операнда.
Значение Null показывает, что переменная не содержит дан-
ных. Это значение можно присвоить переменной непосредст-
венно, или в результате операции с таким же значением.
При выполнении операции Imp над целыми числами каждый
бит результирующего целого числа является результатом
операции Imp над соответствующими битами операндов.
Если бит первого операнда равен 1, то бит результата будет
равен биту второго операнда. В противном случае бит резуль-
тата будет равен 1.
1. Операнд 0001 0000 1001 1101 (4253)
2. Операнд 0000 0101 1001 1001 (1433)
Результат 1110 111111111011 (-4101)
Пример
' Если значение PersAge меньше 12
'или больше 18, то не юноша
If PersAge > 11 Imp PersAge > 18 Then
MsgBox("He юноша")
End If
'Установить старшие 8 бит в 16-битном числе в 1
'и одновременно инвертировать младшие 8 бит
Dim MyMask As Integer
Dim Number As Integer
Dim Result As Integer
2.6. Логические операции
MyMask = -256 ' 1111 1111 0000 0000 => -256
Number = 4253 ' 0001 0000 1001 1101 => 4253
Result = Number Imp MyMask
' 1111 1111 0110 0010 => -158
'При другом порядке следования операндов
'результат отличается!
Result = MyMask Imp Number
' 0001 0000 1111 1111 => -158
Результатом операции Eqv является значение True, если зна-
чения обоих операндов равны, и False в противном случае.
Фактически речь идет об отрицании результата операции Хог.
Операнд 1 Операнд 2 Результат
True True True
True False False
False True False
False False True
При выполнении операции Eqv над целыми числами каждый
бит результирующего целого числа является результатом опе-
рации Eqv над соответствующими битами операндов.
Если значения этих битов равны между собой, то бит резуль-
тата будет равен 1. В противном случае бит результата будет
равен 0.
1. Операнд 0001 0000 1001 1101 (4253)
2. Операнд 0000 0101 1001 1001 (1433)
Результат 1110 1010 1111 1011 (-5381)
76
2.7. Операции сравнения
Пример
' Если значение PersAge меньше 12
'или больше 18, то не юноша
If PersAge > 11 Eqv PersAge > 18 Then
MsgBox("He юноша")
End If
'Скопировать старшие 8 бит в 16-битном числе
'в 1 и одновременно инвертировать младшие 8 бит
Dim MyMask As
Dim Number As
Dim Result As
Integer
Integer
Integer
MyMask = -256 ' 1111 1111 0000
Number = 4253 ' 0001 0000 1001
Result = Number Eqv MyMask
' 0001 0000 0110
0000 => -256
1101 => 4253
0010 => 4194
2.7. Операции сравнения
Операции сравнения используются для сравнения данных (как
числовых и строковых, так и объектных). Эти операции можно
выполнять над переменными, константами и выражениями.
Is
Like
Меньше
Меньше или равно
Больше
Больше ли равно
Равно
Не равно
Идентичность объектов или соответствие типу
Соответствие типу
2.7. Операции сравнения
77
Примечания
Операции сравнения допустимы только в отношении од-
нородных данных.
Результатом операции сравнения всегда является логичес-
кое (булево) значение.
При сравнении строк используется порядок символов в
ANSI-коде.
При сравнении плавающего значения с плавающим двой-
ной точности последнее будет округлено.
Пример
Dim VI As Integer
Dim V2 As Integer
Result As Boolean
VI = 10
V2 = 5
Result
Result
Result
Result
Result
Result
= VI < V2
= VI <= V2
= VI > V2
= VI >= V2
= VI = V2
= VI <> V2
'False
'False
'True
'True
'False
'True
te
Операция выполняется в отношении ссылок на объекты. Ре-
зультат будет равным True только в том случае, когда обе ссы-
лочные переменные указывают на один и тот же объект. Если
вторым операндом является идентификатор типа, то опера-
ция Is возвращает значение True в случае, когда объект, на ко-
торый указывает ссылочная переменная (первый операнд),
относится к указанному типу (второй операнд).
78
2.7. Операции сравнения
Пример
'Поиск ячейки, содержащей "Устройство"
Dim 01 As Object
Set 01 = Sheets("Лист1")
If 01 Is Nothing Then
MsgBoxCB данной книге нет такого листа")
Else
'Предпринять необходимые действия
End If
1 Ute
Результат — True, если строка соответствует маске, и False в
противном случае.
Примечания
С помощью оператора Option Compare Binary можно за-
дать режим бинарного сравнения операндов (т. е. сравне-
ния на основе совпадения числовых значений байтов).
Режим текстового сравнения задается с помощью опера-
тора Option Compare Text (при этом различие между за-
главными и строчными литерами не будет приниматься во
внимание).
Пример
'Поиск в строке по заданному образцу
Dim Searchvalue As String
Dim Result As Boolean
Searchvalue = "Иванов, год 1990"
Result = Searchvalue Like "Ив???в, *" 'True
Result = Searchvalue Like "*1991" 'False
Result = Searchvalue Like "*, год 199#" 'True
Result = SearchValue Like "И[вбд]ано[вк], *"
' True
Result = SearchValue Like "Ив[!ae]н[!ою]?, *"
'False
2.8. Операции объединения 79
Маскиру- ющий символ Назначение
7 Произвольный символ в данной позиции. «492-??-??» все телефонные номера, начинающие- ся с «492»
* Произвольное число произвольных символов, на- чинающихся в данной позиции. «Иван*» — фамилии «Иванов», «Иванова», «Ива- ненко» и др.
# Произвольная цифра в данной позиции. «Год 199#» - Все годы от 1990 до 1999
[список] Один из символов, содержащихся в списке. «[nP][eie][Tt][ee][rp]» - Петер, Питер, Peter и т. д.
['список] Любой символ, кроме содержащихся в списке. । «Год 199[!5-9]» - годы с 1990 по 1994
2.8. Операции объединения
Операции объединения (слияния) выполняются над строками.
Операция Описание
& Объединение строк
+ Объединение строк
Примечания
В отношении строк символы операции объединения (+ и
&) равнозначны, однако предпочтение следует отдавать
символу &, поскольку при использовании символа + в слу-
чае необъявленных или Variant-переменных может прои-
зойти арифметическое сложение.
80 2.8. Операции объединения
Символ & всегда следует отделять пробелами, чтобы он не
мог быть интерпретирован как символ краткого определе-
ния типа.
Пример
'Получаем полное имя объединением
'имени и фамилии
Dim FirstName As String
Dim SurName As String
Dim FullName As String
FirstName = "Иван"
SurName = "Иванов"
FullName = FirstName & " ” & SurName
3 Управляющие
структуры VBA
Для управления процессом выполнения программы на языке
VBA существует множество разного рода структур, с помо-
щью которых можно организовать ветвление по условию, вы-
бор из нескольких вариантов и разного рода циклы, а также
вызов подпрограммы и возврат из нее. Такие базовые конст-
рукции языка, как процедура или функция, тоже можно отнес-
ти к управляющим структурам.
Наконец, в языке VBA поддерживается самый «древний», на-
верное, способ управления программой: переход по метке.
Конечно, широкое использование оператора перехода — про-
стейший способ сделать исходный текст невразумительным,
а отладку программы практически невозможной, но в некото-
рых случаях без перехода по метке не обойтись.
3.1. Переход по метке
Gala Метка
Параметр Назначение
Метка Имя метки, на которую должно быть передано управление
Ж1Й1РОМ11Й
82 3.1. Переход по метке
GoSub ... Return
GoSub Метка!
Метка!:
Return
Параметр Назначение
Метка1 Имя метки вызова подпрограммы
Return Оператор возврата из подпрограммы
Конструкция GoSub...Return позволяет использовать фраг-
мент кода в качестве подпрограммы. По достижении операто-
ра Return управление будет передано в строку, следующую за
строкой GoSub.
On Выражение GoTo Метка 1, Метка2...
Параметр Назначение
Выражение Числовое значение от 0 до 255
Метка!... Метка перехода
Переход будет выполнен на метку, соответствующую значе-
нию выражения.
On Выражение GaSub Метка 1, Метка2...
Параметр Назначение
Выражение Числовое значение от 0 до 255
Метка!... Метка вызова подпрограммы
Переход будет выполнен на подпрограмму с меткой, соответ-
ствующей значению выражения.
3.2. Конструкции выбора
83
3.2. Конструкции выбора
Switchfyc.ioaH&t, Значение 1 [Услови&21 Значение2...])
Параметр Назначение
Условие Выражение, возвращающее булево значение
Значение Значение, которое должна вернуть конструкция в случае истинности соответствующего условия
Комментарий
Служит для присваивания одного из значений при выпол-
нении одного из условий.
Switch вернет первое значение, если истинным окажется
первое условие, и второе значение, если — второе усло-
вие и т. д.
• Если ни одно из условий не выполнится, Switch вернет
значение Null.
Проверка условий выполняется слева направо.
Пример
Dim Age As Integer
Dim MyText As String
Age = 35
Text = Switch(Age<=18, "Слишком молод",
Age<65, "O.K.")
MsgBox MyText
84
3.2. Конструкции выбора
1ЩВырзж#ми&, ЕалиИстинни, ЕслнЛожно)
Параметр Назначение
Выражение Возвращает булево значение (условие)
Если Истинно Значение, возвращаемое в случае истинности условия Выражение
ЕслиЛожно Значение, возвращаемое в случае ложности условия Выражение
Комментарий
Возвращает одно из двух значений в зависимости от логи-
ческого значения, которое примет выражение-условие.
Пример
Dim Age As Integer
Age = 35
MsgBox Ilf(Age<=18, "Слишком молод", "O.K.")
ОЬоозе(Индекс,Значен1/1е 1, Знэченме2„.)
Параметр Назначение
Индекс Выражение, возвращающее целочисленное зна- чение
Значение!.. Список значений
Комментарий
Возвращает то значение из списка, порядковый номер ко-
торого соответствует значению выражения-индекса.
3.3. Ветвление по условию
85
Пример
Dim CodeNum As Integer 'Код лица: 1-Женщина,
' 2-Мужчина, 3-Фирма
Dim CodeText As String
CodeNum = 2
CodeText = Choose(CodeNum, "Женщина",
"Мужчина", "Фирма")
3.3. Ветвление по условию
tf...Than...Elso...Bnd If
Синтаксис
If Условие Then Оператор Else Оператор
If Условие Then
Группа операторов
[Else
Группа операторов]
End If
If Условие Then
Группа операторов
Elself Условие Then
Группа операторов
[Else
Группа операторов]
End If
Параметр Назначение
Условие Выражение, возвращающее булево значение
Оператор Одиночный оператор (инструкция) языка VBA
Группа операторов Один или несколько операторов языка VBA
86
3.3. Ветвление по условию
Комментарий
Обеспечивает выполнение одного или нескольких опера-
торов в зависимости от выполнения заданного условия.
Роль условия должно играть выражение, возвращающее
логическое (булево) значение True или False.
Пример
Dim MyFlag As Boolean
Dim MyAge As Integer
MyAge = 16
'Младше 18
If MyAge < 18 Then MsgBox "молодой" Else
MsgBox "старый"
'Старше 35
If MyAge >=35 Then
MsgBox "старый"
MyFlag = True
Else
MsgBox "молодой"
MyFlag = False
End If
'Младше 18, старше 35 и от 18 до 35
If MyAge < 18 Then
MsgBox "молодой"
MyFlag = False
Elself MyAge <=36 Then
MsgBox "среднего возраста"
MyFlag = True
Else
MsgBox "старый"
MyFlag = True
End If
3.3. Ветвление по условию
87
Select Cas& End Sefect
Синтаксис
Select Case АнализируемоеВыражение
Case СписокЗначений1
Группа операторов
Case СписокЗначений2
Группа операторов
Case СписокЗначенийМ
Группа операторов
[Case Else
Группа опера торов]
End Select
Параметр Назначение
Анализируемое- Выражение Выражение, значение которого определяет выбор одной из Case-строк
СписокЗначений Значение, диапазон или список значений
Группа операторов Один или несколько операторов языка VBA
Комментарий
Конструкция Select Case «принимает решение» на основе
значения выражения.
И Список значений можно задать несколькими способами.
• С помощью символов <, >, о, <= и т.д.
• В виде интервала НачальноеЗначение То КонечноеЗна-
чение.
• Простым перечислением: Значение!, Значение2, Значе-
ниеЗ.
Будет выполнена группа операторов, следующая за той Ca-
se-строкой, в чьем списке значений окажется результат вы-
ражения, заданного в строке Select Case.
88 3.4. Циклы
После этого управление получит строка, следующая после
строки End Select.
Если ни одна из Case-строк не «сработает», произойдет
ошибка. Чтобы этого избежать, следует использовать строку
Case Else.
Пример
Dim MyAge As Integer
MyAge = 16
Select Case MyAge
Case Is < 18
MsgBox "Надежды юношей питают"
Case 18
MsgBox "В начале славных дел"
Case 19 То 25
MsgBox "Буря и натиск"
Case 30, 40, 50, 60
MsgBox "Поздравляем с юбилеем"
Case Is < 65
MsgBox "На покой нам рановато"
Case Else
MsgBox "Заслуженный отдых"
End Select
3.4. Циклы
While ... Wet nJ
While Условие
Группа операторов
Wend
3.4. Циклы 89
Параметр Назначение
Условие Выражение, возвращающее логическое значение
Группа операторов Один или несколько операторов языка VBA
Заключенная между строками While и Wend группа операто-
ров выполняется циклически до тех пор, пока выражение в
строке While возвращает значение True. Если условие не вы-
полняется уже при входе в цикл, тело цикла не будет выполне-
но ни разу.
Примечание
Описанные ниже конструкции циклов предоставляют бо-
лее широкие возможности, в связи с чем цикл While...Wend
используют редко.
Оо... Loop
Синтаксис
Do While/Until Условие
Группа операторов
Loop
Do
Группа операторов
Loop While/Until Условие
Параметр Назначение
Условие Выражение, возвращающее логическое зна- чение
Группа операторов Один или несколько операторов языка VBA
90
3.4. Циклы
Комментарий
Заключенная между строками Do и Loop группа операто-
ров выполняется циклически в зависимости от значения
выражения Условие.
• В случае While тело цикла выполняется, пока верно усло-
вие (выражение возвращает значение True).
• В случае Until тело цикла выполняется, пока условие не
станет верным (пока выражение возвращает значение
False).
Проверку выполнения условия можно поместить в начало
или в конец цикла.
Пример
'Чтение текстового файла в массив
'строк построчно
Dim DatRec(1500) As String
Dim I As Integer
1 = 1
Open "C:\adr.txt" For Input As If J
Do Until EOF(l)
Input #1, DatRec(I)
1 = 1 + 1
Loop
Close #1
Far... N&xt **
Синтаксис
For СчетчикЦикла = Старт To Стоп [Step Шаг]
Группа операторов
Next [СчетчикЦикла]
3.4. Циклы
91
Параметр Назначение
СчетчикЦикла Переменная одного из численных типов
Старт Начальное значение счетчика цикла
Стоп Конечное значение счетчика цикла
Шаг Шаг приращения значения счетчика цикла
Группа операторов Один или несколько операторов языка VBA
Комментарий
Количество проходов цикла определяется начальным и ко-
нечным значениями счетчика, а также значением шага.
Если шаг цикла не указан, то он будет принят равным 1.
Пример
Sub VolToEmpl()
Dim ActReg As Range 'Список всех дат
Dim I As Integer 'Счетчик цикла
Dim SumEmpl As Long 'Общее число сотрудников
Dim SumVol As Double 'Общий оборот
Dim EmplToVol As Double
'Оборот на одного сотрудника
'Задать область дат
Set ActReg = Range("А5").CurrentRegion
'Вычисление оборота на сотрудника
For I = 1 То ActReg.Rows.Count
SumEmpl = SumEmpl + ActReg.Cells(I, 2)
SumVol = SumVol + ActReg.Cells(I, 3)
Next
EmplToVol = SumVol / SumEmpl
'Выделение цветом значений выше
'и ниже полученного среднего
92
3.4. Циклы
With ActReg
For I = 1 To .Rows.Count
If .Cells (I, 3) / .Cells (I, 2)
< EmplToVol Then
.Cells(I, 4).Interior.Colorindex = 3
Else
.Cells(l, 4).Interior.Colorindex = 4
End If
Next
End With
End Sub
For Each ... Next
Синтаксис
For Each ИмяОбъекта In ИмяКоллекции
Группа операторов
Next
Комментарий
С помощью конструкции For...Each можно организовать пере-
бор всех объектов, принадлежащих к некоторой коллекции.
На каждом проходе переменная цикла будет содержать в
себе очередной объект коллекции.
Доступ к свойствам и методам объекта при этом становит-
ся возможным через имя переменной цикла.
Параметр 1 Назначение
ИмяОбъекта Переменная одного из объектных типов
ИмяКоллекции Имя коллекции объектов, в отношении которой выполняются действия цикла
Группа операторов Один или несколько операторов языка VBA
3.5. Досрочный выход из цикла
93
Пример
Sub ColorMark()
Dim ActReg As Range 'Область
Dim CurrObj As Object 'Переменная цикла
'Задать область дат
Set ActReg = Range("АЗ").CurrentRegion
'Выделить все отрицательные значения
'в области красным цветом
For Each CurrObj In ActReg
If CurrObj.Value < 0 Then
CurrObj.Interior.Colorindex = 3
End If
Next
End Sub
3.5. Досрочный выход из цикла
Du Events
Комментарий
Принудительно обрабатывает ожидающие обработки со-
бытия.
События мыши и клавиатуры не могут быть обработаны
Windows до того, как процедура (макрос) завершит свою
работу и вернет управление.
Чтобы элементы управления могли реагировать на дейст-
вия пользователя при выполнении процедуры (например,
занятой вычислениями большого объема и длительности),
необходимо, чтобы в коде такой процедуры вызывалась
функция DoEvents.
94
3.5. Досрочный выход из цикла
Пример
'Эта процедура выполняет интенсивные
'циклические вычисления, поэтому в ней
'производится вызов DoEvents через каждую 1000
'проходов для обновления экрана
Dim N As Double
For N = 0 To 5000
If N Mod 1000 = 0 Then DoEvents
Cells(N + 1, 1) = _
Sin((N/1000)Л5)*Cos((N/1000)Л2)
Next
End
Комментарий
Завершает выполнение программы (макроса), закрывает
все незакрытые файлы и заново инициализирует пере-
менные.
Stop
Комментарий
Прерывает выполнение программы (макроса) таким же
образом, как это делает точка останова.
Открытые файлы остаются открытыми, переменные со-
храняют значения, полученные к моменту выполнения ин-
струкции Stop.
Выполнение программы можно продолжить со следующей
инструкции.
3.6. Процедуры (Макросы)
95
3.6. Процедуры (Макросы)
Sub . . . End Sub
Синтаксис
[Private / Public][Static]
Sub ИмяПроцедуры([Параметры])
Группа операторов
End Sub
Параметр Назначение
Public Процедура доступна в рамках проекта
Private Процедура доступна в рамках модуля
Static Все переменные процедуры должны быть статическими
ИмяПроцедуры Имя процедуры
Параметры Набор параметров, передаваемых проце- дуре при ее вызове
Группа операторов Один или несколько операторов языка VBA
Синтаксис задания параметров:
[Optional][ByVal/ByRef]Переменная As Тип
[=3начение]
Параметр Назначение
Optional Параметр необязателен
ByVai Параметр передается по значению
ByRef Параметр передается по ссылке
Переменная Имя параметра в коде процедуры
96
3.6. Процедуры (Макросы)
Тип Тип данных, к которому принадлежит параметр
Значение Начальное значение параметра по умолчанию (только для необязательных параметров)
Комментарий
Процедуры наряду с функциями представляют собой ба-
зовую конструкцию языка VBA. Макросы (макрокоманды)
приложений Office также записываются в форме процедур
на языке VBA.
Для вызова процедуры необходимо указать ее имя и пара-
метры, если они предусмотрены. Можно использовать так-
же зарезервированное слово Call.
По умолчанию используется способ передачи параметров
по ссылке.
• При передаче по ссылке процедура имеет дело непо-
средственно с той переменной, которая передана ей в
качестве параметра, и может изменить ее значение.
Если этого необходимо избежать, следует использовать
зарезервированное слово ByVai.
Пример
'Простая процедура
Sub МуРгос()
End Sub
'Процедура с параметром, передаваемым по ссылке
Private Sub МуРгос(MyNumber As Integer)
End Sub
'Процедура с параметром, передаваемым
'по значению
Private Sub МуРгос(ByVai MyNumber As Integer)
End Sub
3.7. функции 97
[Call] ИмиПрацадуры[Париметры]
Параметр Назначение
ИмяПроцедуры Имя вызываемой процедуры (макроса)
Параметры Один или несколько параметров
Комментарий
Зарезервированное слово Call необязательно. Процедуру
можно вызвать просто по ее имени.
3.7. Функции
Function ... End Function
Синтаксис
[Private / Public][Static] Function _
ИмяФункции([Параметры]) As Тип
Группа операторов
ИмяФункции = Значение
End Function
Параметр Назначение
Public Функция доступна в рамках проекта
Private Функция доступна в рамках модуля
Static Все переменные функции должны быть статическими
ИмяФункции Имя функции
Параметры Набор параметров, передаваемых функции при ее вызове
4 1855
(gOlPfeWliW
98
3.7. Функции
Тип Тип значения
Группа операторов Один или несколько операторов языка VBA
Значение Значение
Синтаксис задания параметров:
[Optional][ByVal/ByRef]Переменная As Тип
[=3начение]
Параметр Назначение
Optional Параметр необязателен
By Vai Параметр передается по значению
ByRef Параметр передается по ссылке
Переменная Имя параметра в коде процедуры
Тип Тип данных, к которому принадлежит параметр
Значение Начальное значение параметра по умолчанию (только для необязательных параметров)
Комментарий
Функция отличается от процедуры лишь тем, что возвра-
щает некоторое значение в ту точку, откуда она была вы-
звана.
Вызов функции (т. е. просто ее имя) может фигурировать
только в выражении или в правой части оператора присва-
ивания, т. е. там, где могло бы фигурировать значение,
возвращаемое функцией.
Пример
'Вызов функции и выдача возвращенного
'ею значения
Sub MuProc()
3.8. Внешние ссылки
99
MsgBox Piph(3, 4)
End Sub
'Вычисление длины гипотенузы
Function Piph (a As Double, b As Double)
As Double
Piph = Sqr(аЛ2 + ЬЛ2)
End Function
3.8. Внешние ссылки
Синтаксис
[Private/Public] Declare Sub ИмяПроцедуры Lib
"ИмяБиблиотеки" [Alias "Псевдоним"] [Параметры]
[Private/Public] Declare Function ИмяФункции
Lib "ИмяБиблиотеки" [Alias "Псевдоним"]
[Параметры] As Тип
Параметр Назначение
Public Разрешает доступ во всех модулях проекта
Private Разрешает доступ только в пределах модуля
Имя- Процедуры Имя процедуры
Имяфункции Имя функции
Имя- Библиотеки Имя файла DLL-библиотеки, где содержится объ- являемая функция
Псевдоним Имя процедуры/функции в DLL-библиотеке
Параметры Набор параметров, передаваемых процеду- ре/функции при ее вызове
Комментарий
Вызов внешних процедур и функций необходим в случаях,
когда требуется получить доступ к функциям интерфейса
100 3.8. Внешние ссылки
API или другим функциям и процедурам, исполняемый код
которых размещен в DLL-библиотеках.
Синтаксис задания параметров:
[Optional][ByVal/ByRef]Переменная As Тип _
[=Значение]
Параметр Назначение
Optional Необязателен
ByVai Передается по значению
ByRef Передается по ссылке
Переменная Имя параметра в коде процедуры
Тип Тип данных, к которому принадлежит параметр
Пример
'Вызов функции GetVersion
Declare Function GetVersion Lib "Kernel32"
() As Integer
Sub ShowVersion()
Dim Ver As Integer
Dim VerS As String
Ver - GetVersion
VerS = Str(Ver And &HFF) &
VerS = VerS & Trim(Str((Ver And _
&HFF00) / 256))
MsgBox "Версия " & VerS
End Sub
3.8. Внешние ссылки
101
Примечание редактора
Некоторые процедуры и функции VBA поддерживают меха-
низм именованных параметров. Для таких процедур (функ-
ций) применимы два способа передачи значений. Предполо-
жим, процедура ИмяПроцедуры требует трех параметров: Па-
раметр^ Параметр? и Параметр?.
Предположим далее, что первые два параметра можно (или
даже нужно) опустить. Тогда обращение к процедуре должно
выглядеть следующим образом:
ИмяПроцедуры , , ЗначениеПараметраЗ
Если же процедура ИмяПроцедуры поддерживает именован-
ные параметры, то возможен и второй вариант:
ИмяПроцедуры ИмяПараметраЗ:= ЗначениеПараметраЗ
Собственно имена параметров можно без труда узнать с по-
мощью справочной системы Office. В данной книге при описа-
нии встроенных процедур и функций VBA имена параметров
не приводятся.
Вне зависимости от того, поддерживает ли описываемая
процедура (функция) именованные параметры, в описа-
нии каждый параметр обозначается конструкцией из рус-
ских слов (например, ИмяФайла, РежимДоступа и т. п.).
♦ Это делает описание полностью унифицированным.
• Смысл и назначение параметров более ясны и легче за-
поминаются.
При необходимости воспользоваться именованным парамет-
ром, как таковым, следует обратиться к описанию функции
или процедуры в справке Office.
4 Операторы
и функции VBA
Ядро VBA поддерживает наряду со структурами данных и
управляющими конструкциями множество операторов (инст-
рукций), предназначенных для решения собственно тех задач,
ради которых пишутся программы. Сюда входят как класси-
ческие операторы BASIC, так и некоторые дополнительные
элементы, которые расширяют возможности языка.
Обзор. Круг задач, решаемых операторами языка VBA
Интерфейс (см. 4.1): простейшие формы взаимодействия
с пользователем и другими программами (без OLE).
Файловые операции (см. 4.2): манипуляции с файлами раз-
ных типов.
Дата и время (см. 4.3): преобразования и вычисления со
значениями даты и времени.
Информация о среде (см. 4.4): получение информации о
среде (окружении) и доступ к системному реестру Windows.
Математика (см. 4.5, 4.6): «математические и финансовые
вычисления».
Строки (см. 4.7): редактирование и форматирование сим-
вольных строк.
OLE-Automation (см. 4.8): использование технологии OLE-
Automation.
Коллекции (см. 4.9): создание коллекций объектов и мани-
пуляции с ними.
Обработка ошибок (см. 4.10): обработка ошибок периода
выполнения и получение сведений об ошибках.
4.1. Интерфейс
103
4.1. Интерфейс
Для взаимодействия программы с пользователем в языке VBA
предусмотрены простейшие диалоги, позволяющие выдать со-
общение или запрос и предоставить пользователю возмож-
ность выбрать одну из кнопок или ввести строку.
Для взаимодействия с другим приложением VBA-программа
может воспользоваться технологией OLE. Если приложение не
поддерживает OLE, несколько возможностей в распоряжении
VBA-программы все-таки остается.
М£дВох(&зобщение[,КнопкиИЗначки, Заголовок,
„______ФаИлСпр^ики,Каи'^Кьт])
Параметр Назначение
Сообщение Строка сообщения
КнопкиИЗначки Число (сумма констант), определяющее на- бор кнопок и значков в окне сообщения, а также кнопку по умолчанию
Заголовок Титульная строка в окне сообщения
ФайлСправки Имя файла справки
Контекст Идентификатор контекста справки
Комментарий
Позволяет выдать краткое сообщение пользователю.
Если в окне сообщения будут присутствовать несколько кно-
пок, то у пользователя появится возможность выбора.
И В окне сообщения могут присутствовать кнопки OK, Yes
(Да), No (Нет), Retry (Повтор), Abort (Стоп), Cancel (От-
мена), Ignore (Пропустить).
104
4.1. Интерфейс
Набор кнопок и значков задается суммой предопределен-
ных констант VBA, переданной в качестве параметра Кноп-
киИЗначки.
Пример
MyQuest = "Вы уверены?"
MyButtons = vbYesNo + vbQuestion
+ vbDefaultButton2
If MsgBox(MyQuest, MyButtons) = vbYes Then
End If
1при)8ож(Сообщение[, Заголовок, Строка,X, Y,
' ФайлСправки, Контекст])______________
Параметр Назначение
Сообщение Строка сообщения (приглашение ввести строку)
Заголовок Титульная строка в окне сообщения
Строка Строка-заготовка, помещаемая в поле ввода при открытии окна
X, Y Координаты левого верхнего угла окна диалога
Файл Справки Имя файла справки
Контекст Контекст справки
Комментарий
Открывает окно диалога, дающее пользователю возмож-
ность ввести строку.
В окне диалога присутствуют кнопки ОК и Cancel (Отмена).
4.1. Интерфейс
105
Пример
'Получить от пользователя строку имени
MyMessage = "Введите имя:"
MyName = InputBox(MyMessage)
If MyName <> "" Then
End If
Beep
Комментарий
Выполнение этого оператора приводит к изданию звуко-
вого сигнала.
Параметры издаваемого звука зависят от конфигурации сис-
темы.
4.1.1. Взаимодействие с программной средой
DoEvents
Комментарий
Инициирует принудительную обработку ожидающих событий.
Необходимо в случаях, когда процедура не возвращает
управление в течение ощутимого времени (Windows при
этом обработает события клавиатуры, мыши др.).
Пример
'Эта процедура выполняет интенсивные
'циклические вычисления,
'поэтому в ней производится вызов
'DoEvents через каждые 1000
106
4.1. Интерфейс
'проходов для обновления экрана
Dim N As Double
For N = 0 To 5000
If N Mod 1000 = 0 Then DoEvents
Cells(N + 1, 1) = _
Sin ((N/1000)'5)*Cos((N/1000)Л2)
Next
ЗМЦИмяФайли, СтильОкн^)
Параметр Назначение
ИмяФайла Полное имя исполняемого файла и параметры командной строки
СтильОкна Числовое значение, определяющее стиль окна приложения
Комментарий
Осуществляет асинхронный запуск другого приложения.
• При этом VBA-программа после возврата значения из
функции Shell продолжает свою работу.
• VBA-программа не ожидает никакой реакции от запу-
щенного приложения.
Пример
'Запуск редактора файлов настройки Windows
Dim AppNum As Integer
On Error Resume Next
AppNum = Shell("c:\windows\system\sysedit.exe", 1)
(gOlPfeWliW
4.1. Интерфейс
107
AppActivcite 1*мм[, ФлагОжидания]
Параметр Назначение
Имя Титульная строка окна приложения или иден- тификатор процесса
ФлагОжидания Булево значение, указывающее, следует ли программе дожидаться выполнения команды
Комментарий
Делает текущим заданное окно приложения.
Пример
'После запуска редактора файлов
'настройки Windows
1 его окно делается текущим
Dim AppNum As Integer
On Error Resume Next
AppNum = Shell("c:\windows\system\sysedit.exe", 1)
AppActivate "Редактор файлов настройки". False
SendKeys Строка[, ФлагОжидания]
Параметр Назначение
Строка Строка символов, соответствующая нажатиям клавиш
ФлагОжидания Булево значение, указывающее, следует ли программе дожидаться выполнения команды
108
4.2. Файловые операции
Комментарий
Посылает нажатия клавиш активному приложению («нажа-
тия» клавиш произойдут в текущем окне).
Получившее нажатия клавиш приложение не в состоянии
отличить их от реальных нажатий клавиш на клавиатуре.
Пример
'Запустить калькулятор, сделать его окно текущим,
'вычислить факториал от значения переменной MyVal
'и поместить результат в буфер обмена
Dim MyValue As Integer
Dim AppNum As Integer
MyValue = 5
On Error Resume Next
AppNum = Shell("c:\windows\calc.exe", 1)
AppActivate "Калькулятор", True
SendKeys MyValue & "!Ac%{F4}", True
'Предполагается, что в меню "Вид" калькулятора
'выбран пункт "Инженерный", а режим клавиатуры
'по умолчанию — английский
MsgBox "Факториал числа " & Str(MyValue) & _
" помещен в буфер"
4.2. Файловые операции
VBA-программы часто имеют дело с файлами неявным обра-
зом — взаимодействуя с Word, Excel, Access или PowerPoint
они одновременно манипулируют файлами данных, принад-
лежащих этим приложениям.
4.2. Файловые операции
109
Visual Basic For Applications обладает обширным инструмента-
рием для файловых операций. Операторы, функции и проце-
дуры языка позволяют работать с дисковыми устройствами
(приводами), каталогами и собственно файлами. В отноше-
нии файлов определен ряд операций (открытие и закрытие,
чтение и запись, позиционирование и др.), однако если речь
идет о конкретном файле, многое зависит от его формата и
режима доступа, с которым открыт файл. В VBA различают три
вида файлов (или, что практически то же самое, три режима
доступа к файлу).
Обзор. Три вида файлов
Файлы последовательного доступа (см. 4.2.2).
Все текстовые файлы (ASCII-, ANSI-файлы) состоят из по-
следовательности строк символов, при этом каждая стро-
ка может иметь произвольную длину и доступ к этим стро-
кам может быть только последовательным.
110
4.2. Файловые операции
Файлы произвольного доступа (см. 4.2.3).
Файл произвольного доступа состоит из записей фиксиро-
ванной длины, поэтому местоположение записи в файле
можно вычислить умножением номера записи на ее длину.
Благодаря этому оказывается возможным позициониро-
ваться на произвольную запись.
Бинарные (двоичные) файлы (см. 4.2.4).
Бинарный файл представляет собой частный случай файла
произвольного доступа — достаточно принять длину запи-
си равной одному байту и становится возможным позици-
онироваться на произвольный байт в файле.
4.2.1. Дисковые операции общего назначения
ChDrive ИмяУстройства
Параметр Назначение
ИмяУстройства Имя дискового устройства, которое должно стать текущим
Комментарий
Делает дисковое устройство текущим.
В качестве параметра должна выступать текстовая строка,
первым символом которой должна быть литера—имя диска.
Пример
'Сделать текущим диск Е:
ChDrive "Е"
4.2. Файловые операции
111
MkDir ИмйКгГГэлога
Параметр Назначение
ИмяКаталога Имя каталога, который необходимо создать
Комментарий
Создает подкаталог с заданным именем.
Пример
'Создать каталог
MkDir "C:\TEMP\TMP"
ChDir ИмнКаталога
Параметр Назначение
ИмяКаталога Имя каталога, который необходимо сделать текущим
Комментарий
Делает текущим каталог с заданным именем.
Дисковое устройство, на котором располагается каталог,
должно быть текущим. Если это не так, то вначале следует
использовать оператор ChDrive.
Пример
'Сделать каталог C:\TEMP\TMP текущим
Dim MyPath As String
112
4.2. Файловые операции
MyPath = "C:\TEMP\TMP"
ChDrive MyPath
ChDir MyPath
RmOir ИмяКаталага
Параметр Назначение 1
ИмяКаталога Имя каталога, который необходимо удалить
Комментарий
Удаляет заданный каталог (при условии, что он существует
и пуст).
• Если каталог не пуст, произойдет ошибка выполнения.
• Задавая имя каталога, следует указывать также имя диска.
Пример
'Удалить каталог
RmDir "C:\TEMP\TMP"
CurDir (ИмяДиска)
Параметр Назначение
ИмяДиска Имя дискового устройства (при отсутствии этого параметра будет выбран текущий диск)
4.2. Файловые операции
113
Комментарий
Функция возвращает строку, содержащую полное имя ка-
талога, который является текущим на заданном (или по
умолчанию текущем) диске.
Пример
'Запомнить текущий каталог перед сменой
Dim SeekPath As String
Dim TargetPath As String
SeekPath = CurDirO
MsgBox SeekPath & " будет сохранен"
TargetPath = "C:\TEMP\TMP"
ChDrive TargetPath
ChDir TargetPath
Dir (ИмяКаталыа, Атрибуты)
Параметр Назначение
ИмяКаталога Имя каталога
Атрибуты Сумма констант, определяющих атрибуты файлов
Комментарий
Возвращает поочередно имена всех файлов заданного ка-
талога, обладающих заданным набором атрибутов.
В маске имени файлов можно использовать символы «*» и
«?» по правилам MS DOS.
При каждом вызове функции она возвращает имя очеред-
ного файла.
114
4.2. Файловые операции
Ж При первом вызове должно быть задано имя каталога (и,
если требуется, маска), затем функция вызывается без па-
раметров.
После того как имена файлов исчерпаны, функция возвра-
щает пустую строку.
Пример
'Сообщить имена всех файлов с расширением TXT
'в каталоге C:\TMP
Dim BV As String
BV = Dir ("C:\TMPV.TXT")
Do While BV <> ""
MsgBox BV
BV = Dir
Loop
Nani? СгэрзеИмя Аз НэвоеИм*
Параметр Назначение
СтароеИмя Старое имя каталога или файла
НовоеИмя Новое имя каталога или файла
Комментарий
Изменяет имя каталога или файла.
При изменении имени каталога перемещает содержащие-
ся в нем файлы.
Позволяет использовать маскирующие символы «?» и «*»
для групповых операций с файлами.
115
4.2. Файловые операции
Пример
'Переименовать и переместить файлы
Name "C:\TMP\MyText.txt" As
"C:\ARCHIVE\MyTextAr.txt"
Name "C:\TMP" As "C:\TMP\OLDFILES"
f-tleC'.itty Имн1, Имм2
Параметр Назначение
Имя1 Имя файла, подлежащего копированию
Имя2 Имя нового файла, являющегося копией файла- оригинала
Комментарий
Копирует файл с заданным именем в новый файл с задан-
ным же именем.
Использование маскирующих символов «?» и «*» недопус-
тимо.
Пример
'Скопировать файл
FileCopy "C:\TMP\MyText.txt",
"С:\TMP\MyBackUp.txt"
не
4.2. Файловые операции
Kill ИмяФайла
Параметр Назначение
ИмяФайла Имя файла, подлежащего удалению
Комментарий
Удаляет файл или группу файлов.
Позволяет применять маскирующие символы «?» и «*».
Пример
'Удалить все ТХТ-файлы в заданном каталоге
Kill "С:\ТМР\*.txt"
FilbAttr (НомерФайла, ТнпДоступа)
Параметр Назначение
НомерФайла Номер, присвоенный файлу при открытии
ТипДоступа Номер файла или тип доступа
Комментарий
Возвращает информацию о виде доступа, с которым был
ранее открыт файл с заданным номером.
Необходимо, чтобы указанный файл был уже открыт с по-
мощью оператора Open.
4.2. Файловые операции 117
Пример
'Выдать пользователю тип доступа к файлу
Open "C:\TMP\MyData.dat" For Random As 1
MsgBox FileAttr(l, 1)
Close 1
GatA 11г(ИмяФайла)
Параметр Назначение
ИмяФайла Имя файла, атрибуты которого необходимо получить
Комментарий
Возвращает числовое значение, являющееся суммой конс-
тант-атрибутов заданного файла.
Выделить конкретный атрибут из полученного значения
можно с помощью операции And.
Пример
'Проанализировать атрибуты файла
'с заданным именем
Dim MyAttr As Integer
MyAttr = GetAttr("C:\TMP\MyText.txt")
If MyAttr And vbSystem Then MsgBox _
"Это системный файл."
If MyAttr And vbReadOnly Then MsgBox _
"Файл только для чтения."
118
4.2. Файловые операции
SetAttr ИмяФайла, Атрибуты
Параметр Назначение
ИмяФайла Полное имя файла
Атрибуты Сумма всех заданных констант-атрибутов
Комментарий
Устанавливает атрибуты файла с заданным именем соот-
ветственно заданной сумме констант-атрибутов.
Пример
'Задать атрибуты файла
SetAttr "C:\TMP\MyText.txt",
vbReadOnly + vbSystem
РПе[)а1еПте(ИмяФайла)
Параметр Назначение
ИмяФайла Имя файла
Комментарий
Возвращает строку, описывающую значения даты и вре-
мени последней модификации (или создания) файла.
Пример
'Сообщить пользователю дату и время файла
MsgBox FileDateTime("С:\TMP\MyText.txt")
4.2. Файловые операции
119
Р11е1.еп(ИмиФайла)
Параметр Назначение
ИмяФайла Имя неоткрытого файла, длину которого требуется узнать
Комментарий
Возвращает длину файла с заданным именем в байтах.
Функцию нельзя использовать в отношении открытых фай-
лов, в этом случае следует применить функцию LOF.
Если в качестве параметра передано имя несуществующе-
го файла, произойдет ошибка выполнения.
Пример
'Сообщить пользователю длину файла
MsgBox FileLen("С:\TMP\MyData.dat")
ЬОР(НамсрФайлз)
Параметр Назначение
Номерфайла Номер открытого ранее файла, длину которого требуется узнать
Комментарий
Возвращает длину открытого ранее файла с заданным но-
мером в байтах.
Функцию можно использовать только в отношении откры-
тых файлов, в противном случае следует воспользоваться
функцией FileLen.
120 4.2. Файловые операции
Если в качестве параметра передано имя несуществующего
или неоткрытого файла, произойдет ошибка выполнения.
Пример
'Сообщить пользователю длину файла
Open "C:\TMP\MyData.dat" For Random As 1
MsgBox LOF(l)
Close 1
РгжРП&[(ГраницяН<эмгра) ]
Параметр Назначение
ГраницаНомера Числовое значение, обозначающее область, к которой должен принадлежать возвращаемый номер файла
Комментарий
Возвращает ближайший свободный номер, который мож-
но использовать для открытия очередного файла.
Пример
'Открыть файл и присвоить ему
'гарантированно свободный номер
Dim FileNum As Integer
FileNum = FreeFile(O)
Open "C:\TMP\MyFile.dat" For Random As FileNum
Close FileNum
4.2. Файловые операции
121
4.2.2. Файлы: последовательный доступ
Обзор
Все текстовые файлы, использующие ASCII- или ANSI-кодиро-
вание символов, относятся к файлам последовательного до-
ступа. Все они состоят из строк символов, причем строки от-
деляются друг от друга специальными символами.
Запись в такие файлы или чтение из них можно произво-
дить только построчно.
Для того чтобы модифицировать произвольную строку по-
следовательного файла, необходимо прочитать последо-
вательно все его строки, а затем заново записать их.
Определить местоположение конкретной строки в файле
невозможно.
Пример
'Скопировать в новый файл только строки,
'начинающиеся с "112"
Sub MyCopyFilell2()
Dim SourFile As Integer
Dim DestFile As Integer
Dim TempStr As String
'Открыть файл-источник для чтения
SourFile = FreeFileO
Open "C:\TEXT\MySource.txt" For Input
As SourFile
'Открыть файл для записи
DestFile = FreeFileO
Open "C:\TEXT\MyDest.txt" For Output
As DestFile
122
4.2. Файловые операции
'Прочитать все строки исходного файла
'и записать требуемые
Do While Not EOF(SourFile)
Input #SourFile, TempStr
If Left(TempStr, 3) = "112" Then
Print #DestFile, TempStr
End If
Loop
'Закрыть оба файла
Close SourFile, DestFile
End Sub
□ppn ИмяФяйла Far Р&жимДаступк As НамарФяйля
Параметр Назначение
ИмяФайла Имя файла, который необходимо открыть
РежимДоступа Одно из ключевых слов, обозначающих режим доступа к файлу
НомерФайла Номер, который будет присвоен файлу при открытии
Комментарий
Выполняет открытие файла.
Любой вид доступа к данным файла возможен только пос-
ле того, как он будет открыт.
С открытым файлом возможны только те операции, которые
допускает режим доступа, заданный при открытии файла.
Для всех дальнейших манипуляций с открытым файлом он
будет идентифицироваться присвоенным ему при откры-
тии номером.
4.2. Файловые операции
123
Пример
'Открыть файл для чтения
SourFileNum = FreeFileO
Open "C:\TEXT\MySource.txt" For Input
As SourFileNum
Input ИНамерФайла, Переменная
Параметр Назначение
НомерФайла Номер, присвоенный файлу при его открытии
Переменная Переменная (или список переменных), в кото- рую (или которые) должны читаться данные из файла
Комментарий
Читает данные из последовательного файла в указанную
переменную (переменные).
Пример
Input #1, TempStr
Line/пр.ut ИНимерФайла, Переменная
Параметр Назначение
НомерФайла Номер, присвоенный файлу при его открытии
Переменная Строковая переменная, в которую должна быть прочитана строка из файла
124 4.2. Файловые операции
Комментарий
В Осуществляет построчное считывание из последователь-
ного (текстового) файла.
Очередная строка файла при этом прочитывается в стро-
ковую переменную.
Пример
Dim TempStr As String
Line Input #1, TempStr
Print ЯНомерФайла, СписРкЗначаний
Параметр Назначение
НомерФайла СписокЗначений Номер, присвоенный файлу при его открытии Список значений, подлежащих выводу (запи- си) в файл
Комментарий
Записывает строку в последовательный файл. В отличие
от оператора Write # табулирует значения в строке.
Пример
Print #1, TempStr
(gOlPOMW
4.2. Файловые операции
125
Write ЯНамерФемля, СписакЗначений
Параметр Назначение
НомерФайла Номер, присвоенный файлу при его открытии
СписокЗначений Список значений, подлежащих выводу (запи - си) в файл
Комментарий
И Записывает строку в последовательный файл. В отличие
от оператора Print # не табулирует значения в строке.
Пример
Write #1, TempStr
Width ХНамерФайля, ДлиняСтрики
Параметр Назначение
НомерФайла Номер, присвоенный файлу при его открытии
ДлинаСтроки Длина строки в символах
Комментарий
Устанавливает длину строки для вывода в последователь-
ный файл.
При дальнейшем выводе (с помощью оператора Print #) в
файл с номером НомерФайла длина выводимых строк бу-
дет равна значению ДлинаСтроки.
126
4.2. Файловые операции
Пример
'Разбить строку на строки длиной 4 символа
Sub SeparateNumbers()
Dim I As Integer
Dim NumStr As String
NumStr = "125544785543210232165487"
Open "C:\TEXT\StrNum.txt" For Output As #1
Width #1, 4
For 1=1 To Len(NumStr)
Print #1, Mid(NumStr, I, 1);
Next I
Close #1
End Sub
8рс(К1>лич&ствиПргг6елов)
Параметр Назначение
КоличествоПробелов Количество пробелов, которые должны быть вставлены в строку
Комментарий
Используется в качестве одного из параметров оператора
Print при выводе в последовательный файл. В результиру-
ющую строку будет вставлено заданное количество про-
белов.
4.2. Файловые операции
127
Пример
'Вставить 5 пробелов между именем и фамилией
Const NumberOfNames As Integer =50
Dim N As Integer
Dim MyFirstNames(NumberOfNames) As String
Dim MySurNames(NumberOfNames) As String
Open "C:\TEXT\Names.txt" For Output As #1
For N = 1 To NumberOfNames
Print #1, MyFirstNames(N);Spc(5);MySurNames(N)
Next N
Close #1
ТаЫПогмцмя)
Параметр Назначение
Позиция Позиция табуляции (следующая позиция вывода)
Комментарий
Используется в качестве одного из параметров оператора
Print при выводе в последовательный файл. Позиция выво-
да в результирующей строке будет перенесена в соответ-
ствии со значением параметра.
Пример
'Перенести фамилию в позицию 50
Const NumberOfNames As Integer = 50
128 4.2. Файловые операции
Dim N As Integer
Dim MyFirstNames(NumberOfNames) As String
Dim MySurNames(NumberOfNames) As String
Open "C:\TEXT\Names.txt" For Output As #1
For N = 1 To NumberOfNames
Print #1, MyFirstNames(N); Tab (50);
MySurNames(N)
Next N
Close #1
ЕС)Р(НомерФайла)
Параметр Назначение
НомерФайла Номер, присвоенный файлу при его открытии
Комментарий
Функция EOF (End Of File — Конец файла) возвращает бу-
лево значение True, если при чтении достигнут конец фай-
ла с заданным номером, и False в противном случае.
Пример
'Прочитать файл до конца
Dim TempStr As String
Open "C:\TEXT\MyText.txt" For Input As #1
Do While Not EOF(l)
Input #1, TempStr
Loop
Close #1
,«ин
4.2. Файловые операции
129
С/озе НомерФайла], НомерФайла...]
Параметр Назначение
НомерФайла Номер, присвоенный файлу при его открытии
Комментарий
Закрывает один или несколько открытых ранее файлов.
Пример
Close 1 'Закрывает файл, открытый под номером 1
Close 'Закрывает все открытые файлы
Комментарий
Закрывает все открытые файлы.
Пример
Reset
4.2.3. Файлы: произвольный доступ
Обзор. Режим произвольного доступа
Сточки зрения операционной системы все файлы равны. Ког-
да говорят «последовательный файл» или «файл с произ-
вольным доступом», то имеют в виду то, каким образом про-
грамма интерпретирует данные, содержащиеся в файле. Если
речь идет о режиме произвольного доступа, то предполагает-
ся, что файл состоит из записей одинаковой (и заранее из-
5 1855
130
4.2. Файловые операции
вестной) длины. Благодаря этому становится возможным по-
местить позицию ввода или вывода на произвольную запись,
положение которой в файле можно вычислить умножением
номера записи на ее длину.
При манипуляциях с файлом произвольного доступа обычно
используют понятие текущей записи, т. е. записи, к которой
производилось обращение в последний раз (или первой за-
писи файла, если обращений не было). При этом, если при
последующем обращении номер требуемой записи не будет
указан, то по умолчанию текущей станет следующая запись, т. е.
указатель текущей записи по умолчанию перемещается по-
следовательно вперед.
Пример
'Прочитать имя и код из записи с заданным номером
'Дать пользователю возможность изменить код
'Записать модифицированную запись обратно в файл
Public Type CodeRec
Name As String * 50
Code As Integer
End Type
Sub EditCode()
Const Fil As String = "C:\MyCode.dat"
Dim TRec As CodeRec
Dim FilNum As Integer
Dim RecNum As Long
'При ошибке переходить к следующему оператору
On Error Resume Next
'Открыть файл
FilNum = FreeFileO
Open Fil For Random Access Read Write As FilNum _
Len=Len(TRec)
4.2. Файловые операции
131
'Открывать окно ввода, пока не будет
'выбрана кнопка "Отмена"
RecNum = -1
RecNum = InputBox("Введите номер записи")
Do Until RecNum = -1
Lock FilNum, RecNum
Get FilNum, RecNum, TRec
TRec.Code = InputBox("Введите новый код для" &
TRec.Name, , TRec.Code)
Put FilNum, RecNum, TRec
Unlock FilNum, RecNum
RecNum = -1
RecNum = InputBox("Введите номер записи")
Loop
'Закрыть файл
Close FilNum
End Sub
Open ИмяФаила For Handom Access ВидДостула
AsНамерФайлаЬепДлинаЗзписи
Параметр Назначение
ИмяФайла Имя дискового файла, который необходимо от- крыть или создать
ВидДоступа Вид доступа к файлу (чтение, запись)
НомерФайла Номер файла, который должен быть присвоен ему при открытии
ДлинаЗаписи Длина записи в файле (количество байт)
132
4.2. Файловые операции
Комментарий
Любой файл должен быть открыт прежде, чем произойдет
какое-либо обращение к содержащимся в нем данным.
При открытии файла в режиме произвольного доступа суще-
ствует ряд особенностей.
• В отношении записей файла возможны операции чтения
и записи (ввода и вывода), при этом речь может идти
только об одной из записей, как неделимом целом.
• Можно запретить доступ к некоторой записи для других
программ (пользователей).
• Доступ к любой записи осуществляется по ее порядко-
вому номеру в файле.
• Значение переменной, играющей роль указателя теку-
щей записи, вместе со значением длины записи в файле
дает возможность поместить позицию ввода/вывода не-
посредственно на начало требуемой записи.
Пример
Public Type CodeRec
Name As String * 50
Code As Integer
End Type
Dim TRec As CodeRec
FilNum = FreeFileO
Open "C:\DATA\Code.dat" For Random Access
Read Write As
FilNum Len=Len(TRec)
4.2. Файловые операции
133
Seufc НомерФайла[, НомерЗаписи]
Параметр Назначение
НомерФайла Номер, присвоенный файлу при его открытии
НомерЗаписи Порядковый номер записи, на которую необхо- димо позиционироваться
Комментарий
Если параметр НомерЗаписи не задан, то функция возвра-
щает номер текущей записи.
Если заданы оба параметра, то позиция ввода/вывода по-
мещается на запись с заданным номером.
• Если значение параметра НомерЗаписи превышает ко-
личество записей в файле, то позиция ввода/вывода бу-
дет помещена в конец файла.
Пример
CurrPos = Seek 1
NewPos = InputBox("Введите номер записи")
Seek 1, NewPos
Loe (НомерФайла}
Параметр Назначение
НомерФайла Номер, присвоенный файлу при его открытии
Комментарий
Возвращает номер записи, в отношении которой послед-
ний раз выполнялась операция чтения или записи.
134
4.2. Файловые операции
Пример
LastRec = Loc(l)
Qet НомерФайла, [НимерЗаПиси], Переменная •'
Параметр Назначение
НомерФайла Номер, присвоенный файлу при его открытии
НомерЗаписи Номер записи, к которой производится обращение
Переменная Имя переменной, в которую должно быть прочи- тано содержимое записи файла
Комментарий
Прочитывает содержимое записи с заданным номером в
заданную переменную.
• Если номер записи опущен, то будет прочитана текущая
запись, а указатель текущей записи переместится на сле-
дующую.
Пример
'Чтение данных и запись в таблицу
Public Type CodeRec
Name As String * 50
Code As Integer
End Type
Sub File2Table()
Const Fil As String = "C:\MyCode.dat"
Dim TRec As CodeRec
4.2. Файловые операции
135
Dim FilNum As Integer
Dim N As Long
'Открыть файл
FilNum = FreeFileO
Open Fil For Random Access Read As FilNum
Len=Len (TRec)
'Перенести все записи в таблицу
N = 1
Get FilNum, ,TRec
Do While Not EOF(FilNum)
Range("al")(N, 1) = TRec.Name
Range("bl")(N, 2) = TRec.Code
N = N + 1
Get FilNum, ,TRec
Loop
1 Закрыть файл
Close FilNum
End Sub
Put НомерФайла, [НомерЗаписи], Переменная
Параметр Назначение
НомерФайла Номер, присвоенный файлу при его открытии
НомерЗаписи Номер записи, к которой производится обращение
Переменная Имя переменной, значение которой должно быть записано в заданную или текущую запись файла
Комментарий
Записывает содержимое указанной переменной в файл.
136
4.2. Файловые операции
Если номер записи опущен, то операция будет выполнена в
отношении текущей записи (при этом текущей станет сле-
дующая по порядку).
Пример
'Запись данных в файл из таблицы
Public Type CodeRec
Name As String * 50
Code As Integer
End Type
Sub Table2File()
Const Fil As String = "C:\MyCode.dat"
Dim TRec As CodeRec
Dim FilNum As Integer
Dim TItem As Object
'Открыть файл
FilNum = FreeFileO
Open Fil For Random Access Write As FilNum
Len=Len(TRec)
'Перенести записи из таблицы в файл
For Each TItem In Range("al").Rows
TRec.Name = TItem.Cells(1, 1)
TRec.Code = TItem.Cells(1, 2)
Put FilNum, , TRec
Next
'Закрыть файл
Close FilNum
End Sub
4.2. Файловые операции
137
£ис* Нам^рФайла, Н&м&рЗэписи
Lи’£<15* '_25£5255VlZ : г ~’ыерЗалмаи2
Параметр Назначение
НомерФайла Номер, присвоенный файлу при его открытии
НомерЗаписи Номер записи, подлежащей блокировке
НомерЗаписи1 Начало диапазона номеров записей, подлежа - щих блокировке
НомерЗаписи? Конец диапазона номеров записей, подлежа - щих блокировке
Комментарий
Блокирует (переводит в режим исключительного доступа)
запись или группу записей.
Блокированные записи становятся недоступными для мо-
дификации другим приложением.
Чтобы исключить возможность одновременной модифика-
ции записи двумя приложениями (например, при работе в
локальной сети), необходимо блокировать запись перед
модификацией.
Пример
Lock 1, 15
Get 1, 15, TRec
Put 1, 15, TRec
Unlock 1, 15
138
4.2. Файловые операции
Unlock НомврФаИло, НомерЗапиом
Unlock НомерФайла, НимерЗзпиеи 1 То НомерЗапаси2
Параметр Назначение
НомерФайла Номер, присвоенный файлу при его открытии
НомерЗаписи Номер записи, которую необходимо разблоки- ровать
НомерЗаписи1 Начало диапазона номеров записей, которые необходимо разблокировать
НомерЗаписи2 Конец диапазона номеров записей, которые необходимо разблокировать
Комментарий
Отменяет режим исключительного доступа (разблокирует
запись или группу записей).
После выполнения данной операции другие приложения
получат возможность модифицировать запись/записи.
Пример
Lock 1, 15
Get 1, 15, TRec
Put 1, 15, TRec
Unlock 1, 15
4.2. Файловые операции
139
ЕОР(НомерФайла)
Параметр Назначение
НомерФайла Номер, присвоенный файлу при его открытии
Комментарий
Функция EOF (End Of File — Конец файла) возвращает бу-
лево значение True, если при чтении достигнут конец фай-
ла с заданным номером, и False в противном случае.
Пример
'Прочитать все записи файла
Open FilName For Random Access Read _
As 1 Len=Len(TRec)
Get 1, , TRec
Do While Not EOF(l)
Get 1, , TRec
Loop
Close 1
Close НомерФэйла[, НомерФайла]
Параметр Назначение
НомерФайла Номер, присвоенный файлу при его открытии
Комментарий
Закрывает один или несколько ранее открытых файлов.
140 4.2. Файловые операции
Пример
Close 1 'Закрывает файл 1
Close 'Закрывает все открытые программой файлы
Комментарий
Закрывает все открытые программой файлы.
Пример
Reset
4.2.4. Файлы: двоичный (бинарный) доступ
Обзор. Бинарный доступ
Если в файлах произвольного доступа отказаться от внутрен-
ней структуры записи и установить размер записи равным 1,
то получим файлы бинарного доступа. В этом случае позиция
ввода/вывода помещается на произвольный байт файла, а опе-
рация чтения или записи выполняется в отношении также про-
извольного числа байт.
Задача интерпретации считываемых или записываемых дан-
ных полностью ложится на программу— понятие записи и
ее структуры становится неприменимым.
Количество байт, которые подлежат записи или чтению,
зависит от размера переменной, использованной в опера-
торах Put или Get.
4.2. Файловые операции
141
Использование переменных типа Variant, строк переменной
длины и динамических массивов в данном случае пробле-
матично.
Open ИмяФэйла For Binary Access ВидДоступа
Аз НомерФайла
Параметр Назначение
ИмяФайла Имя дискового файла, который необходимо от- крыть или создать
ВидДоступа Вид доступа к файлу (чтение, запись)
НомерФайла Номер файла, который должен быть присвоен ему при открытии
Комментарий
Любой файл должен быть открыт прежде, чем произойдет
какое-либо обращение к содержащимся в нем данным.
При открытии файла в режиме двоичного (бинарного) до-
ступа существует ряд особенностей.
• Относительно данных, содержащихся в файле, возмож-
ны операции чтения и записи (ввода и вывода), при этом
операция выполняется в отношении произвольной по-
следовательности байт, начиная с произвольной пози-
ции в файле.
• Можно запретить доступ к файлу в целом для других про-
грамм (пользователей).
Пример
FilNum = FreeFileO
Open "C:\DATA\Code.dat" For Binary Access
Read Write As FilNum
142
4.2. Файловые операции
Seek НомерФайла), НомерБайта]
Параметр Назначение
НомерФайла Номер, присвоенный файлу при его открытии
НомерБайта Порядковый номер байта, на который необходи- мо позиционироваться
Комментарий
Если параметр НомерБайта не задан, то функция возвра-
щает номер текущего байта.
Если заданы оба параметра, то позиция ввода/вывода по-
мещается на байт с заданным номером.
• Если значение параметра НомерБайта превышает коли-
чество байт в файле, то позиция ввода/вывода будет по-
мещена в конец файла.
Пример
CurrPos = Seek 1
NewPos = InputBox("Введите номер байта")
Seek 1, NewPos
| hoc (НомерФайла):
Параметр Назначение
НомерФайла Номер, присвоенный файлу при его открытии
4.2. Файловые операции
143
Комментарий
Возвращает номер байта, в отношении которого послед-
ний раз выполнялась операция чтения или записи.
Пример
LastRec = Loc(l)
Get НомерФайла, [НимерВайтя], Переменная
Параметр Назначение
НомерФайла Номер, присвоенный файлу при его открытии
НомерБайта Номер байта, к которому производится обращение
Переменная Имя переменной, в которую должно производи - ться чтение из файла
Комментарий
Прочитывает содержимое файла с заданной или текущей
позиции в заданную переменную.
• Если номер байта опущен, то чтение будет начато с теку-
щей позиции.
Пример
Public Type CodeRec
Name As String * 50
Code As Integer
End Type
144
4.2. Файловые операции
Dim TRec As CodeRec
Get 1, ,TRec
Put Номерфайаа, [НрмэфБэйта], Переменная
Параметр Назначение
НомерФайла Номер, присвоенный файлу при его открытии
НомерБайта Номер байта, начиная с которого должна произ - водиться запись в файл
Переменная Имя переменной, значение которой должно быть записано в заданную или текущую позицию в файле
Комментарий
Записывает содержимое указанной переменной в файл.
Если номер байта опущен, то операция будет выполнена,
начиная с текущей позиции.
Пример
Public Type CodeRec
Name As String * 50
Code As Integer
End Type
Dim TRec As CodeRec
Put 1, , TRec
4.2. Файловые операции
145
Lack НамерФайла, НомерБайта
Lock НомерФайла, НамерБайта 1 Та НомерБэйтэЗ
Комментарий
Блокирует (переводит в режим исключительного доступа)
байт или последовательность байт в файле.
Блокированные байты становятся недоступными для мо-
дификации другим приложением.
Параметр Назначение
НомерФайла Номер, присвоенный файлу при его открытии
НомерБайта Номер байта, подлежащего блокировке
НомерБайта1 Начальная позиция блокировки
НомерБайта2 Конечная позиция блокировки
Пример
Lock 1, 15
Get 1, 15, TRec
Put 1, 15, TRec
Unlock 1, 15
Unlock НомерФайла, НомерБайга
Unlock НомерФайла, НомерБайта 1 To НомерБайта2
Комментарий
Отменяет режим исключительного доступа (разблокирует)
заданные байты файла.
146
4.2. Файловые операции
После выполнения данной операции другие приложения
получат возможность модифицировать файл в данных по-
зициях.
Параметр Назначение
НомерФайла Номер, присвоенный файлу при его открытии
НомерБайта Номер байта, который необходимо разблокировать
НомерБайта1 Начальная позиция отмены блокировки
НомерБайта2 Конечная позиция отмены блокировки
Пример
Lock 1, 15
Get 1, 15, TRec
Put 1, 15, TRec
Unlock 1, 15
EOF( НомерФайла)
Параметр Назначение
НомерФайла Номер, присвоенный файлу при его открытии
Комментарий
Функция EOF (End Of File — Конец файла) возвращает бу-
лево значение Тrue, если при чтении достигнут конец фай-
ла с заданным номером, и False в противном случае.
4.2. Файловые операции
147
Пример
'Прочитать файл до конца
Open FilName For Binary Access Read As 1
Get 1, , TRec
Do While Not EOF(l)
Get 1, , TRec
Loop
Close 1
C/ose Нс-мярФуйла[, НомерФайла]
Параметр Назначение
НомерФайла Номер, присвоенный файлу при его открытии
Комментарий
Закрывает один или несколько ранее открытых файлов.
Пример
Close 1 'Закрывает файл 1
Close 'Закрывает все открытые программой файлы
4es"t
Комментарий
Закрывает все открытые программой файлы.
148
4.3. Дата и время
Пример
Reset
4.3. Дата и время
Значения даты и времени представляются в приложениях Offi-
ce в форме так называемого кода дата-время (называемом
также датой_в_числовом_формате). Код дата-время представ-
ляет собой число, целая часть которого кодирует дату (день), а
дробная — время.
Формат ввода и представления значений даты и времени за-
висит от конфигурации системы и от локализации конкретной
версии Windows.
Обзор. Значения времени
Промежутку времени, равному 24 часам, соответствует чис-
ло 1 (оно же соответствует одному дню в значениях даты).
Полудню (12:00) соответствует значение 0.5, шести часам
вечера (18:00) — 0.75 и т. д.
Отсюда легко получить дробные числа, соответствующие
элементарным промежуткам времени: 1 час — 1/24, 1 ми-
нута — 1/1440 и 1 секунда — 1/8640.
Обзор. Значения даты
Значения даты представляют собой целое число, обозна-
чающее количество дней, отсчитанных от так называемой
первой даты.
В разных системах дат используются разные «первые да-
ты» (т. е. даты, которым соответствует код дата-время, рав-
ный 1). По умолчанию приложения Office используют Сис-
тему дат 1900. Кроме того, Office может работать в Систе-
ме дат 1904, именуемой также «Системой дат XXI века».
4.3. Дата и время
149
В среде VBA существует небольшое отличие для «Систе-
мы дат 1900» — в качестве первой даты VBA использует 31
декабря 1899 года, в то время как компоненты Office —
1 января 1900 года.
Для дат позднее 29 февраля 1900 года описанное выше
различие не существует.
Оа1е8аг1э1(Г<лды, Месяцы, Дни)_________
Параметр Назначение
Годы Число лет
Месяцы Число месяцев
Дни Число дней
Комментарий
Возвращает дату в числовом формате для указанных зна-
чений года, месяца и числа.
Пример
'Способы задания дат
Dim MyDate As Date
MyDate = DateSerial(5, 10, 11) '11.10.2005
MyDate = DateSerial(1996, 15, 6) '06.03.1997
MyDate = DateSerial(1996, 15, 45)'14.04.1997
MyDate = DateSerial (2035, 2, 3) '03.02.2035
150
4.3. Дата и время
DateValue (Дата)
Параметр Назначение
Дата Строковое значение, описывающее дату
Комментарий
Преобразует строку, описывающую дату, в значение даты.
Обеспечивает известную гибкость в интерпретации стро-
ковых значений.
Пример
1 Способы задания дат
Dim MyDate As Date
MyDate = DateValue("11/10/2005") '11.10.2005
MyDate = DateValue("6 марта 1997")'06.03.1997
MyDate = DateValue("14 Anp 97") '14.04.1997
MyDate = DateValue("3.2.2035") '03.02.2035
Примечание
Формат строкового значения даты зависит от настроек
вкладки Дата диалога Свойства: язык и стандарты (Пуск/
Настройка/Панель управления/Язык и стандарты). Под-
ходящий вариант можно выбрать с помощью списков Крат-
кий формат даты и Полный формат даты. В примерахдан-
ной главы предполагается, что выбраны форматы дд.ММ.гт
и дд ММММ гггг ’г.’ соответственно.
4.3. Дата и время 151
TimeSerialfHacu, Минуты, Секунды)
Параметр Назначение
Часы Число часов
Минуты Число минут
Секунды Число секунд
Комментарий
Возвращает значение времени в формате «код дата-вре-
мя» для указанных значений часов, минут и секунд.
Пример
'Способы задания времени
Dim MyTime As Date
MyTime = TimeSerial (12, 8, 5) '12:08:05
MyTime = TimeSerial(14, 80, 6) '15:20:06
MyTime = TimeSerial(8, 85, 95) '9:26:35
MyTime = TimeSerial(36, 85, 95) '31.12.1899
' 13:26:35
TimeValue(apeMa)
Параметр Назначение
Время Строковое значение, описывающее время
Комментарий
Преобразует строку, описывающую время, в значение вре-
мени в формате «код дата-время».
Допускает известную гибкость в интерпретации строк.
152
4.3. Дата и время
Пример
'Способы задания времени
MyTime As Date
MyTime = TimeValue("12:08:05") '12:08:05
MyTime = TimeValue("3:20:06pm") '15:20:06
MyTime = TimeValue("9:26:35 AM") '9:26:35
Data = Дата : : :
Параметр Назначение
Дата Строковое значение, описывающее дату, или дата в числовом формате
Комментарий
Функция возвращает значение текущей системной даты в
числовом формате.
Присваиванием значения функция позволяет задать сис-
темную дату.
Пример
'Вычислить значение даты 30 дней вперед
'от сегодняшней
Dim MyDate As Date
MyDate = Date + 30
4.3. Дата и время
153
Now
Комментарий
Возвращает текущие значения системной даты и систем-
ного времени в формате «код дата-время» (дата_в_число-
вом_формате).
Пример
'Получить текущие значения даты и времени
Dim TimeStamp As Date
TimeStamp — Now
Time - Время
Параметр Назначение
Время Строковое значение, описывающее время или время в формате «код дата-время»
Комментарий
Функция возвращает текущее значение системного вре-
мени.
Присваиванием значения функция позволяет задать сис-
темное время.
Пример
'Вычислить значение времени "2 часа вперед
'от текущего"
Dim NewTime As Date
NewTime = Time + (2/24)
154
4.3. Дата и время
DateAJdfHHTt/peajt, Количество, Дата)
Параметр Назначение
Интервал Единичный интервал времени
Количество Число единичных интервалов
Дата Исходная дата
Комментарий
Функция возвращает дату, получаемую добавлением задан-
ного количества единичных интервалов к заданной дате.
Пример
'Вычисление даты
Dim MyDate As Date
MyDate = DateAdd("yyyy", 5, "01.01.1997")
•01.01.2002
MyDate = DateAdd("q", 2, "01.01.1997")
'01.07.1997
MyDate = DateAddfm", 2, "01.01.1997")
'01.03.1997
MyDate = DateAdd("ww", 5, "01.01.1997")
29.01.1997
DateQiff(Интераал, Дата1, Дата2 (,ПераыиДе:ньНедели
'_________ L ПерааяНеделяГода]]) ;
Комментарий
Возвращает количество единичных интервалов между дву-
мя заданными датами.
Позволяет учесть поправки, вытекающие из несовпадения
начала и конца отсчета с началом недели или года.
4.3. Дата и время
155
Параметр Назначение
Интервал Единичный интервал времени
Дата1 Первая дата
Дата? Вторая дата
ПервыйДеньНедели Константа, определяющая день недели, ко- торый должен считаться первым
ПерваяНеделяГода Константа, определяющая, которую из не- дель конца/начала года следует считать первой в году
Пример
'Вычисление количества интервалов между
'двумя датами
Dim Num As Long
Num = DateDiff("yyyy","01.01.1992",
"31.12.1997") '5
Num = DateDiff("q", "01.01.1995",
"31.05.1996") '5
Num = DateDiff("m","15.04.1995",
"01.01.1997”) '21
Num = DateDiff("ww","01.01.1997",
"30.11.1997",vbSunday)'48
Num = DateDiff("ww","01.01.1997",
"30.11.1997",vbMonday)'47
156
4.3. Дата и время
DatePartfИнтераал, Дата [,ПервыиДеньНедели[,
- .______ПерааяНвдьляГида]])
Параметр Назначение
Интервал Единичный интервал времени
Дата Строка, описывающая дату
ПервыйДеньНедели Константа, определяющая день недели, который должен считаться первым
ПерваяНеделяГода Константа, определяющая, которую из не- дель конца/начала года следует считать первой в году
Комментарий
Возвращает порядковый номер заданного интервала, к ко-
торому принадлежит указанная дата.
С помощью этой функции можно определить, например, к
какому кварталу, месяцу или календарной неделе относит-
ся заданная дата.
Пример
'Определение интервала
Dim Num As Long
Num = DatePart("yyyy", "01.01.1992") '1992
Num = DatePart("q", "12.08.1995") '3
Num = DatePart("m", "15.04.1995") '4
Num = DatePart("ww", "01.06.1997", vbSunday)'23
Num = DatePart("ww", "01.06.1997", vbMonday)'22
4.3. Дата и время 157
Уеаг(Датэ)
Параметр Назначение
Дата Значение даты
Комментарий
Возвращает значение типа Integer, соответствующее году
в дате-параметре.
Пример
'Получить значение текущего года
YearNum = Year(Now)
Monthfffara)
Параметр Назначение
Дата Значение даты
Комментарий
Возвращает значение типа Integer, соответствующее ме-
сяцу в дате-параметре.
Пример
'Получить значение текущего месяца
MonthNum = Month(Now)
(gOlPfeWliW
158
4.3. Дата и время
Оау(Дэ1а)
Параметр Назначение
Дата Значение даты
Комментарий
Возвращает значение типа Integer, соответствующее дню
месяца в дате-параметре.
Пример
'Получить сегодняшнее число
DayNum = Day(Now)
Waekd 'а у (Да ra[, ПервыйДеньНедели})
Параметр Назначение
Дата Значение даты
ПервыйДеньНедели День недели (константа Visual Basic), при- нимаемый за начало недели
Комментарий
Возвращает номер дня недели, соответствующего дате-
параметру.
С помощью параметра ПервыйДеньНедели можно опре-
делить день, с которого начинается неделя при расчете.
4.3. Дата и время
159
Пример
1 Определить дни недели
Dim MyDyOfWeek As Integer
MyDyOfWeek = Weekday("14.01.1997") '3
MyDyOfWeek = Weekday("14.01.1997", vbSunday)'3
MyDyOfWeek = Weekday("14.01.1997", vbMonday)'2
Huurf Зрамя)
Параметр Назначение
Время Значение времени
Комментарий
Возвращает значение типа Integer, соответствующее ча-
сам в значении времени, переданном функции в качестве
параметра.
Пример
'Определить час
MyHour = Hour(Now)
Minutt-(Bpi-'Mfi)
Параметр Назначение
Время Значение времени
160
4.3. Дата и время
Комментарий
Возвращает значение типа Integer, соответствующее ми-
нутам в значении времени, переданном функции в качест-
ве параметра.
Пример
'Определить минуту
MyMinute = Minute(Now)
Параметр Назначение
Время Значение времени
Комментарий
Возвращает значение типа Integer, соответствующее се-
кундам в значении времени, переданном функции в каче-
стве параметра.
Пример
'Определить секунду
MySecond = Second(Now)
Комментарий
Возвращает значение типа Long, соответствующее числу
секунд, прошедших с последней полуночи.
4.4. Информация о среде 161
Пример
'Сколько секунд исполнилось текущим суткам?
DayAge = Timer
4.4. Информация о среде
Имеющиеся в языке VBA возможности в плане информации о
среде (окружении) немногочисленны. Сюда относятся опера-
торы, которые реализуют некоторые API-вызовы Windows и
предназначенные для получения доступа к переменным среды
и значениям, содержащимся в системном реестре Windows.
Епу1гоп(СтрокяИмя)
ЕпУ1г<»п(НимерСтр<}ки)
Параметр Назначение
СтрокаИмя Имя переменной среды (строка)
НомерСтроки Номер строки в таблице переменных среды (число)
Комментарий
Я Возвращает строку из таблицы переменных окружения или
пустую строку.
Я Если в качестве параметра задано строковое значение (имя
переменной), то функция вернет ее значение (т. е. строку
символов после знака равенства '=').
Если в качестве параметра задан номер строки в таблице
переменных среды (окружения), то функция вернет задан-
ную строку полностью, т. е. вместе с именем переменной
и знаком равенства '='.
6 1855
162 4.4. Информация о среде
Пример
'Получить строку "РАТН=..."
'из таблицы переменных среды
Dim PathStr As String
Dim N As Integer
n’= 1
Do
'Получить очередную строку
'из таблицы переменных среды
PathStr = Environ(N)
'Если это строка "РАТН=...", то сообщить
If Left(PathStr, 5) = "РАТН=" Then
MsgBox PathStr
Exit Do
Else
N = N + 1
End If
Loop Until PathStr = ""
ЯйВ(Красный, Зеленый, Синий)
Параметр Назначение
Красный Значение красной компоненты (0..255)
Зеленый Значение зеленой компоненты (0..255)
Синий Значение синей компоненты (0..255)
Комментарий
Функция возвращает RGB-значение цвета, полученное на
основе значений трех компонентов.
4.4. Информация о среде
163
Пример
'Несколько простых цветовых тонов
Dim ResColor As Long
ResColor = RGB(255, 0, 0) 'чистый красный
ResColor = RGB(0, 255, 0) 'чистый зеленый
ResColor = RGB(0, 0, 255) 'чистый синий
ResColor = RGB(255, 255, 0) 'желтый
ResColor = RGB(255, 255, 255) 'белый
ResColor = RGB(0, 0, 0) 'черный
Обзор. Работа с системным реестром Windows
Всю необходимую информацию о приложениях, программной
и аппаратной среде Windows хранит в системном реестре. Ре-
естр имеет иерархическую структуру—часть реестра, относя-
щаяся к некоторому приложению, состоит из разделов, каж-
дый из которых представляет собой набор параметров и со-
ответствующих им значений. Кроме того, раздел может со-
держать подразделы и т. д. Значение каждого параметра
можно прочитать и модифицировать, параметр можно также
удалить.
Примечания
Системный реестр Windows играет исключительно важную
роль в функционировании этой операционной системы, и
любые манипуляции с ним требуют осторожности — при
наличии серьезных нарушений загрузка Windows будет
связана с проблемами.
Результаты работы приведенных ниже примеров можно
увидеть с помощью Редактора реестра Windows.
164
4.4. Информация о среде
Пример
'Чтение, запись и удаление параметров
Dim LUName As String
Dim LUDate As Date
'Запись параметров в реестр
SaveSetting "МуАрр", "LastUser”, "Name",
"Петер"
SaveSetting "МуАрр", "LastUser", "Date", Now
'Чтение параметров из реестра
LUName = GetSetting("МуАрр", "LastUser",
"Name", "")
LUDate = GetSetting("МуАрр”, "LastUser", _
"Date",
'Удаление параметров
DeleteSetting "МуАрр", "LastUser"...
SaveSetting Приложение, Раздел, Параметр, Значение
Комментарий
Записывает в реестр параметр и его значение.
Функция требует наличия всех четырех своих параметров
Параметр Назначение
Приложение Имя приложения, к которому относится требуе- мый раздел
Раздел Имя раздела
Параметр Имя параметра
Значение Значение параметра
4.4. Информация о среде 165
Пример
SaveSetting "МуАрр", "LastUser", "Name", "Петер"
SaveSetting "МуАрр", "LastUser", "Date", Now
Раздал, Параметр
ЗначаниеПаУмсычаннк*)
Параметр Назначение
Приложение Имя приложения, к которому относится требуе- мый раздел
Раздел Имя раздела
Параметр Имя параметра
ЗначениеПо- Умолчанию Значение параметра, которое функция вернет в случае ошибки (заданный параметр в реестре не найден)
Комментарий
И Возвращает значение заданного параметра в реестре Win-
dows.
И Если требуемый параметр в реестре не найден, функция
вернет ЗначениеПоУмолчанию.
Функция возвращает значение типа Variant.
Пример
Dim LUName As String
Dim LUDate As Date
LUName = GetSetting("МуАрр", "LastUser",
"Name", "")
166 4.4. Информация о среде
LUDate = GetSetting("МуАрр", "Lastuser",
"Date", "")
GetAUS&ttings(npnnojK^HHe, Раздал)
Параметр Назначение
Приложение Имя приложения, к которому относится требуе- мый раздел
Раздел Имя раздела
Комментарий
Возвращает значения всех параметров в заданном разде-
ле реестра.
Значение, возвращаемое функцией, относится к типу Vari-
ant и представляет собой двумерный массив строк. Мас-
сив содержит список имен параметров и соответствую-
щие им значения из заданного раздела реестра.
Пример
'Получить значения всех параметров раздела
Dim LUA11 As Variant
LUA11 = GetAllSettings("МуАрр", "LastUser")
For N = 0 To UBound(LUA11)
MsgBox LUA11(N, 0) & " " & LUA11(N, 1)
Next
4.5. Финансовые вычисления
167
DelvteSetting Приложение, Раздел, Параметр
Параметр Назначение
Приложение Имя приложения, к которому относится требуе- мый раздел
Раздел Имя раздела
Параметр Имя параметра, подлежащего удалению
Комментарий
Удаляет заданный параметр.
Если имя параметра не указано, будет удален весь раздел.
Пример
DeleteSetting "МуАрр", "LastUser"
4.5. Финансовые вычисления
Кроме функций, предназначенных для чисто математических
вычислений, VBA располагает финансовыми функциями. Они
аналогичны финансовым функциям Excel и Access.
При обращении к этим функциям в качестве параметров для
достижения наибольшей точности вычислений следует ис-
пользовать значения типа Double.
168
4.5. Финансовые вычисления
ООВ((Зтиимость, ОстапзчнаяСтиимоатъ
Длительность, Период, Фактор) -
Параметр Назначение
Стоимость Первоначальная стоимость фондов
ОстаточнаяСтоимость Стоимость фондов в конце периода амортизации
Длительность Длительность периода амортизации
Период Период времени, используемый в каче- стве единичного при расчете
Фактор Фактор уменьшения стоимости
Комментарий
Вычисляет амортизацию фондов в течение заданного ин-
тервала времени.
SLN( Стоимость, ОстаточнаяСтоимость, Длительность)
Параметр Назначение
Стоимость Первоначальная стоимость фондов
ОстаточнаяСтоимость Стоимость фондов в конце периода амортизации
Длительность Длительность периода амортизации
Комментарий
Вычисляет величину амортизации фондов за период с по-
мощью линейного метода.
4.5. Финансовые вычисления
169
ЗУО(Стоимость, ОстаточнаяОт&имость,
Длительность, П&рицд)
Параметр Назначение
Стоимость Первоначальная стоимость фондов
ОстаточнаяСтоимость Стоимость фондов в конце периода амортизации
Длительность Длительность периода амортизации
Период Период времени, используемый в качест- ве единичного при расчете
Комментарий
Вычисляет величину амортизации фондов за определен-
ный период с помощью арифметического дегрессивного
метода.
(^(Ставка, ЧислоПвриодов, -Взнос-;.
_____[,ПриведеннаяСтоимасть[, Тип]])
Параметр Назначение
Ставка Процентная ставка
ЧислоПериодов Число периодов в аннуитете
Взнос Размер (сумма) регулярного взноса
ПриведеннаяСтоимость Стоимость аннуитета, приведенная к началу временного периода
Тип Тип выплат (в начале или в конце каждого периода)
170 4.5. Финансовые вычисления
Комментарий
Вычисляет будущую стоимость при известном размере ре-
гулярного взноса и постоянной процентной ставке.
ЯШе/ЧислоПариоров, взнос, ПриведеннаяСтаимостъ
_____[, БудущаяСтоимость], Тип], Оценка]]})___
Параметр Назначение
ЧислоПериодов Число периодов в аннуитете
Взнос Размер (сумма) регулярного взноса
ПриведеннаяСтоимость Стоимость аннуитета, приведенная к началу временного периода
БудущаяСтоимость Расчетная конечная стоимость аннуите- та
Тип Тип выплат (в начале или в конце каж- дого периода)
Оценка Приблизительная оценка предполагае- мого результата
Комментарий
И Вычисляет процентную ставку, необходимую для получе-
ния заданной приведенной стоимости при известном пе-
риоде выплат и размере взноса.
/ЯЯ (Платежи])], Оценки])_______* - Wf
Комментарий
Вычисляет внутреннюю норму доходности при известной
последовательности выплат и поступлений.
4.5. Финансовые вычисления
171
Параметр Назначение
Платежи () Массив значений типа Double, описывающий дина - мику денежных потоков - по меньшей мере одно отрицательное значение (платеж) и ряд положите- льных (поступления)
Оценка Приблизительная оценка предполагаемого результата
М1ЯЯ(Платежн{), финСтаака, РеинСтаака)
Параметр Назначение
Платежи () Массив значений типа Double, описывающий ди - намику денежных потоков — по меньшей мере одно отрицательное значение (платеж) и ряд по- ложительных (поступления)
ФинСтавка Ставка финансирования
РеинСтавка Ставка реинвестирования
Комментарий
И Вычисляет модифицированную внутреннюю норму доход-
ности при известной последовательности выплат и поступ-
лений.
НРег(Ставка, Ванос, ПриведеннаяСтоимость
f, Будущ зиСтоймостг. [, Тип}])
Комментарий
Я Устанавливает количество периодов времени, требующих-
ся для достижения заданной приведенной стоимости при
постоянном размере выплат и постоянной процентной
ставке.
(gOlPfeWliW
172
4.5. Финансовые вычисления
Параметр Назначение
Ставка Ставка доходности
Взнос Размер (сумма) регулярного взноса
ПриведеннаяСтоимость Стоимость аннуитета, приведенная к началу временного периода
БудущаяСтоимость Расчетная конечная стоимость аннуитета
Тип Тип выплат (в начале или в конце каж- дого периода)
/РтЦСгазка, Период, ЧислоПериодов,
ПриаеденнияСтоимость[, БудущаяСтоимость[,
Тип]]) < ••________ .
Параметр Назначение
Ставка Ставка доходности
Период Период времени, используемый в качестве единичного при расчете
ЧислоПериодов Число периодов в аннуитете
Приведенная- Стоимость Стоимость аннуитета, приведенная к нача- лу временного периода
БудущаяСтоимость Расчетная конечная стоимость аннуитета
Тип Тип выплат (в начале или в конце каждого периода)
Комментарий
Вычисляет стоимость аннуитета при известном размере
регулярного взноса и постоянной процентной ставке.
4.5. Финансовые вычисления
173
РтЦСтавка, ЧислоПериодов, ПриааденнаяСтоимос.п
_____[, БудущаяСтоимость [, Тиа]]}_______
Параметр Назначение
Ставка Ставка доходности
ЧислоПериодов Число периодов в аннуитете
ПриведеннаяСто- имость Стоимость аннуитета, приведенная к началу временного периода
БудущаяСтоимость Расчетная конечная стоимость аннуитета
Тип Тип выплат (в начале/конце каждого периода).
Комментарий
Вычисляет величину постоянного взноса, который необхо-
димо вносить или выплачивать для достижения опреде-
ленной стоимости аннуитета при постоянной процентной
ставке.
РРтЦСгаака, Период, ЧислоПериодов,
ПриаеденнаяСтоимость], БудущаяСтоимость],
Т*П]]) __________
Параметр Назначение
Ставка Ставка доходности
Период Период времени, используемый в качестве единичного при расчете
ЧислоПериодов Число периодов в аннуитете
Приведенная- Стоимость Стоимость аннуитета, приведенная к началу временного периода
БудущаяСтоимость Расчетная конечная стоимость аннуитета
Тип Тип выплат (в начале/конце каждого периода)
174
4.6. Математические вычисления
Комментарий
Вычисляет полную сумму аннуитета, исходя из размера
постоянного взноса, числа периодов и процентной ставки.
PV(Cth3kh, ЧислоПарис1Дои, Взнис[, БудущзяСтоимиа
[, Тип]])__________________________________'.,А
Параметр Назначение
Ставка Ставка доходности
ЧислоПериодов Число периодов в аннуитете
Взнос Размер (сумма) регулярного взноса
БудущаяСтоимость Расчетная конечная стоимость аннуитета
Тип Тип выплат (в начале или в конце каждого периода)
Комментарий
в Вычисляет приведенную стоимость при известном и по-
стоянном размере взноса, периоде выплат и постоянной
процентной ставке.
4.6. Математические вычисления
Для математических вычислений VBA располагает рядом со-
ответствующих функций. Набор этих функций не слишком об-
ширен, однако покрывает все элементарные потребности.
Atn/Значение)
Параметр Назначение
Значение Числовое значение
4.6. Математические вычисления 175
Комментарий
Возвращает выраженный в радианах арктангенс от задан-
ного значения.
Результат, возвращаемый функцией, находится в диапа-
зоне от -PI/2 до PI/2.
Чтобы выразить результат в градусах, достаточно умно-
жить его на 180/PI.
Пример
MsgBox Atn(l) * (180/3.14) '45 градусов
Сеа( Значение)
Параметр Назначение
Значение Угловое значение, выраженное в радианах
Комментарий
Возвращает косинус от заданного углового значения.
Результат находится в диапазоне от -1 до 1.
Чтобы выразить результат в градусах, достаточно умно-
жить его на 180/PI.
Пример
MsgBox Cos(1.1) '0.45
176
4.6. Математические вычисления
Sin (Значение}
Параметр Назначение
Значение Угловое значение, выраженное в радианах
Комментарий
Возвращает синус от заданного углового значения.
Результат находится в диапазоне от -1 до 1.
Чтобы выразить результат в градусах, достаточно умно-
жить его на 180/PI.
Пример
MsgBox Sin (1.1) '0.89
Тап(Зничение)
Параметр Назначение
Значение Угловое значение, выраженное в радианах
Комментарий
Возвращает тангенс от заданного углового значения.
Чтобы выразить результат в градусах, достаточно умно-
жить его на 180/PI.
Пример
MsgBox Tan(1.1) '1.96
4.6. Математические вычисления
177
Ехр(Знэччнив)
Параметр Назначение
Значение Числовое значение
Комментарий
Возвращает экспоненту от заданного значения.
Пример
MsgBox Ехр(З) '20.09
1.оу(3начение)
Параметр Назначение
Значение Числовое значение
Комментарий
Возвращает натуральный логарифм от заданного значения.
Для получения логарифма по основанию, отличному от
основания натуральных логарифмов (числа е), необходимо
разделить результат на натуральный логарифм основания.
Пример
'Вычислить количество знаков до запятой
'в числе-параметре
Function NumSigns(MyValue As Double) As Integer
4.6. Математические вычисления
NumSigns = Int(Log(MyValue) / Log(10)) + 1
End Function
Параметр
Значение
Назначение
Числовое значение
Комментарий
Возвращает корень квадратный от заданного значения.
Пример
MsgBox Sqr(9) '3
Параметр
Значение
Назначение
Числовое значение
Комментарий
Возвращает абсолютное значение числа-параметра.
Результат принадлежит к тому же типу, что и параметр.
Пример
MsgBox Abs(-45) '45
MsgBox Abs(45) '45
4.6. Математические вычисления
179
Randomize Значение
Параметр Назначение
Значение Стартовое значение
Комментарий
Выполняет предустановку генератора случайных чисел на
различные участки псевдослучайной последовательности.
Пример
Randomize Now
ЯпсЦЗначение)
Параметр Назначение
Значение Необязательный параметр, определяющий значе- ние, которое вернет функция
Комментарий
Функция возвращает случайное (в статистическом смыс-
ле) число в диапазоне от 0 до 1.
С помощью параметра можно управлять значением, кото-
рое возвращает функция.
Пример
MsgBox Rnd(l)
180 4.7. Строки
5дп(3начениа)
Параметр Назначение
Значение Числовое значение
Комментарий
Функция возвращает знак числа-параметра.
Для отрицательных значений параметра функция возвра-
щает -1, а для положительных +1. Для параметра, равного
0, функция вернет 0.
Пример
MsgBox Sgn(-15)
4.7. Строки
Функции и операторы, предназначенные для манипуляций с
символьными строками, имелись уже в первых версиях BA-
SIC. Конечно, не обошелся без таких инструментов и Visual
Basic For Applications.
StrCampfCrpoKJl, Ст(юка2. КонстРежим) кч
Параметр Назначение
Строка1 Первая сравниваемая строка
Строка2 Вторая сравниваемая строка
КонстРежим Константа, определяющая режим, в котором бу- дут сравниваться строки
4.7. Строки
181
Комментарий
Возвращает целочисленное значение, характеризующее ре-
зультат сравнения двух заданных строк в заданном режиме.
Пример
'Сравнить две строки в разных режимах
Dim Res As Integer
Res = StrComp("Meyer", "meyer",
vbBinaryCompare) '-1
Res = StrComp("Meyer", "meyer", _
vbTextCompare) '0
Res = StrComp("meyer", "Meyer", _
vbBinaryCompare) '1
Res = StrComp("meyer", "meyer",
vbBinaryCompare) '0
lnStr(Ha4ano, Строка 1, Стрика2, КонстРежим)
lnStrB(Ha4aao, Строка!, Строка2, КонстРежим}
Параметр Назначение
Начало Позиция начала поиска подстроки в строке
Строка! Строка, в которой производится поиск подстроки
Строка? Подстрока, являющаяся предметом поиска
КонстРежим Константа, определяющая режим, в котором будут сравниваться символы строк
Комментарий
В случае безуспешности поиска функция возвращает значе-
ние 0.
182
4.7. Строки
Выполняет поиск заданной подстроки в заданной же стро-
ке и возвращает позицию начала найденной подстроки
(поиск производится только до первого обнаруженного
вхождения).
Если строка содержит двоичные данные, то аналогичную
задачу можно решить с помощью функции InStrB.
Пример
'Выделить фамилию из строки вида "фамилия, имя"
Dim FullName As String
Dim LastName As String
FullName = "Шмидт, Сюзанна"
LastName = Left(FullName,
InStr(FullName, ",") - 1)
*.* ase(C ~ok.u)
Параметр Назначение
Строка Строка, подлежащая преобразованию в нижний ре- гистр
Комментарий
Преобразует строку-параметр в нижний регистр (заглав-
ные и строчные буквы становятся строчными).
Возвращает строку-результат.
Пример
SmallChr = LCase("Произвольный Текст")
4.7. Строки 183
иСазе(Строкз)
Параметр Назначение
Строка Строка, подлежащая преобразованию в верхний
регистр
Комментарий
Преобразует строку-параметр в верхний регистр (заглав-
ные и строчные буквы становятся заглавными).
Возвращает строку-результат.
Пример
CapChr = UCase("Произвольный Текст")
5рэсе(КаличестнаПробе/к>в)
Параметр Назначение
КоличествоПробелов Число, задающее количество пробелов в результирующей строке
Комментарий
Возвращает строку, состоящую из заданного числа про-
белов.
Пример
FullName = FirstName & Space (15) & LastName
184
4.7. Строки
5(ппд(Количк-отвоСымаолоа, Символ}
Параметр Назначение
Количество- Символов Число, задающее количество символов в резу- льтирующей строке
Символ Код символа или строка, первым символом ко- торой определяется вид символов в строке-ре- зультате
Комментарий
Возвращает строку, состоящую из заданного числа задан-
ных символов.
Пример
'Снабдить строку ведущими пробелами
Const MyCurrStrLen As Integer = 20
Dim MyCurrSum As Currency
Dim MyCurrStr As String
Dim MyResStr As String
MyCurrSum = 15.8
MyCurrStr = Format(MyCurrSum, "Currency")
MyResStr = String(MyCurrStrLen - _
Len(MyCurrStr), " ")
MsgBox MyResStr
4.7. Строки
185
L&n(Crp<jK3)
LenffTeptf мерная)
LanB(Crpaica)
^аВ(Пуреманняя)
Параметр Назначение
Строка Строковое значение
Переменная Произвольная переменная
Комментарий
Если в качестве параметра функции передано строковое
значение, то она вернет длину строки в символах.
Если параметром окажется переменная (например, принад-
лежащая к определяемому пользователем типу), то функция
вернет размер переменной в байтах.
В варианте LenB функция возвращает число байт в памя-
ти, использованных для размещения строки или соответ-
ственно объем памяти, фактически расходуемый на пред-
ставление переменной пользовательского типа.
Пример
'Определить размер переменной
'при открытии файла
Public Type PhoneNum
Name As String * 50
PhNumber As Integer
End Type
Sub OpenPhoneFile()
186
4.7. Строки
Dim CrRec As PhoneNum
'Открыть файл в режиме произвольного доступа
Open Fil For Random Access Read Write _
As 1 Len = Len(CrRec)
-LSet Строка 1 = Строка2
Параметр Назначение
Строка) Строковая переменная
Строка2 Строковое значение, подлежащее передаче в гере - менную
Комментарий
Копирует (загружает) строковое значение Строка2 в стро-
ковую переменную Строка1 с левым выравниванием, т. е.
так, что значение Строка2 занимает крайнюю левую часть
строки Строка 1, а оставшееся место заполняется пробе-
лами.
Пример
Dim MyString As String * 10
MyString = "0123456789"
'MyString содержит "0123456789"
LSet MyString = "Привет"
'MyString содержит "Привет "
4.7. Строки
187
RSef Строка 1 = Строка2
Параметр Назначение
Строка1 Строковая переменная
Строка2 Строковое значение, подлежащее передаче в пе- ременную
Комментарий
Копирует (загружает) строковое значение Строка2 в строко-
вую переменную Строка 1 с правым выравниванием, т. е. так,
что значение Строка2 занимает крайнюю правую часть стро-
ки Строка1, а оставшееся место заполняется пробелами.
Пример
Dim MyString As String * 10
MyString = "0123456789"
'MyString содержит "0123456789"
RSet MyString = "Привет"
'MyString содержит " Привет"
ГопшМ(Выражони<э[. Формат
[, Пераы*ДеньНедели[, ПерааяНеделяГода]]])
Комментарий
Возвращает строку, отформатированную в соответствии с
заданными параметрами.
Для форматирования, как числовых значений, так и значе-
ний даты-времени можно использовать предопределенные
форматы VBA, а также пользовательские форматирующие
строки.
Если формат не определен, то функция вернет строку.
188
4.7. Строки
Параметр Назначение
Выражение Выражение, возвращающее числовое зна- чение или значение даты-времени
Формат Строка форматирования или имя формата
ПервыйДеньНедели Константа, определяющая день недели, ко- торый должен считаться первым
ПерваяНеделяГода Константа, определяющая, которую из не- дель конца/начала года следует считать первой в году
Пример
'Разные виды форматирования строк
Dim MySum As Double
Dim MyNum As Long
Dim MyEnabled As Boolean
Dim MyControl As Single
Dim MyDate As Date
Dim Res As String
MySum = 1856.87
Res = Format(MySum,"Currency") ' $1'856.87
Res = Format(MySum,"Fixed") ' 1856.87
Res = Format(MySum,##0.0000") ' 1'856.8700
MyNum = 14512201
Res = Format(MyNum,"000 000 00")' 145 122 01
MyControl = 0.15
Res = Format(MyControl,"Percent")' 15.00%
MyEnabled = True
Res = Format(MyEnabled,"Yes/No”)' Да
MyDate = "1.9.98"
Res = Format(MyDate,"Long Date")
4.7. Строки 189
' 01 сентября 1998г.
Res = Format(MyDate,"ww. ""Week""") '36.Week
Res = Format(MyDate,"ww. ""Week""",,
vbFirstFullWeek) '33.Week
Res = Format(MyDate,"w. ""Day""") '3.Day
Res - Format(MyDate,"w. ""Day""", vbMonday)
'2.Day
Lt- ftfCrpoKu, Длина)
Lcffti'Страк j . Длина) . ~ t 1
Параметр Назначение
Строка Исходная строка
Длина Количество символов (байт), подлежащих выделе- нию в подстроку
Комментарий
Возвращает подстроку, состоящую из Длина символов ис-
ходной строки, начиная с первого.
Если строка содержит двоичные данные, то следует испо-
льзовать функцию LeftB. В этом случае параметр Длина
задает число байт.
Пример
'Выделить фамилию из строки вида "фамилия, имя"
Dim FullName As String
Dim LastName As String
FullName = "Шмидт, Сюзанна"
LastName = Left(FullName, InStr(FullName, ",") - 1)
190
4.7. Строки
Riyht(Crp<3Ka, Длина)
RightB(CrpoKa, Длина)
Параметр Назначение
Строка Исходная строка
Длина Количество символов (байт), подлежащих выделе- нию в подстроку
Комментарий
Возвращает подстроку, состоящую из Длина символов ис-
ходной строки, кончая последним.
Если строка содержит двоичные данные, то следует ис-
пользовать функцию RightB. В этом случае параметр Дли-
на задает число байт.
Пример
'Выделить имя из строки вида "фамилия, имя"
Dim FullName As String
Dim FirstName As String
FullName = "Шмидт, Сюзанна"
FirstName = Right(FullName, Len(FullName) -
InStr(FullName, ",") - 1)
%
МШ(С»г'^ака, Начали,,
ина)
MidSfCrpoKa, Начала, Длина)
Комментарий
Возвращает подстроку, состоящую из Длина символов ис-
ходной строки, начиная с символа Начало.
4.7. Строки 191
Если строка содержит двоичные данные, то следует ис-
пользовать функцию MidB. В этом случае параметр Длина
задает число байт.
Параметр Назначение
Строка Исходная строка
Начало Начальная позиция выделяемой подстроки в ис- ходной строке
Длина Количество символов (байт), подлежащих выде- лению в подстроку
Пример
'Выделить пятый и шестой символы в строке
Dim MyString As String
Dim MySubString As String
MyString = "12440512"
MySubString = Mid(MyString, 5, 2)
Тгнл(Строка) ___________________________
Параметр Назначение
Строка Исходная строка
Комментарий
Возвращает строку, полученную из исходной путем удале-
ния ведущих и замыкающих пробелов.
Пример
Dim MyFirstName As String * 20
Dim MyLastName As String * 20
192
4.7. Строки
Dim MyFullName As String
MyFirstName = "Генрих"
MyLastName = "Мейер"
MyFullName = Trim(MyFirstName) & " " &
Trim(MyLastName)
Rlrim(GrpaKJi)
Параметр Назначение
Строка Исходная строка
Комментарий
Возвращает строку, полученную из исходной путем удале-
ния замыкающих пробелов.
Пример
Dim MyFirstName As String * 20
Dim MyFullName As String
MyFirstName = "Генрих"
MyFullName = RTrim(MyFirstName)
LTrfm(CrpoKa) s
Параметр Назначение
Строка Исходная строка
Комментарий
Возвращает строку, полученную из исходной с помощью
удаления ведущих пробелов.
4.7. Строки
193
Пример
Dim MyFirstName As String * 20
Dim MyLastName As String * 20
Dim MyFullName As String
MyFirstName = ""
MyLastName = "Мейер"
MyFullName = RTrim(LTrim(MyFirstName &
MyLastName))
Л->сВ(Строка)
AscW(CrpoKa)
Параметр Назначение
Строка Строковое значение
Комментарий
Возвращает код первого символа строки-параметра.
Если строка-параметр содержит двоичные данные, то сле-
дует использовать функцию AscB (возвращает первый
байт строки), а для Unicode-кодировки или AscW (возвра-
щает шестнадцатиразрядное слово — Unicode-код симво-
ла).
Пример
MsgBox Asc("A") '65
7 1855
(gOlPfeWliW
194
4.8. OLE
Chr(Kvu Сюйвйла)
\ СЬгВ(КидС»м90ЛЭ)
СЬгУУ{КимСиыиила)
Параметр Назначение
КодСимвола Целочисленное значение, обозначающее код символа в коде ASCII или Unicode
Комментарий
Возвращает строку, состоящую из одного символа, код ко-
торого задан параметром.
Если строка должна содержать двоичные данные, то сле-
дует воспользоваться функцией ChrB.
Если необходимо получить символ в коде Unicode, следует
воспользоваться функцией ChrW (если система не поддер-
живает Unicode, то функция действует аналогично Chr).
Пример
MsgBox Chr(65) 'А
4.8. OLE
Технология OLE, позволяющая приложениям Windows управ-
лять друг другом и пользоваться данными и функциональными
возможностями друг друга, широко поддержана всеми компо-
нентами Office.
Обзор. OLE
Технология OLE основывается на доступе к объектам.
4.8. OLE 195
Объекты порождаются классами. Класс является шабло-
ном объекта и позволяет создать его экземпляр.
Каждое приложение, поддерживающее OLE, располагает
рядом определенных классов.
Непосредственный доступ к объектам осуществляется с по-
мощью функций GetObject и CreateObject.
И Иерархию классов, принадлежащих приложениям Windows,
можно увидеть в системном реестре (раздел HKEY_CLAS-
SES_ROOT).
Чтобы VBA-программа смогла получить доступ к внешним
объектам, необходимо включить в ее состав соответству-
ющие библиотеки и ссылки (команда References... меню
Tools).
4.8.1. Доступ к OLE-объекту
ваО1лесЦ[ИмяФийлз][, Класс])
Параметр Назначение
ИмяФайла Полное имя файла, содержащего в себе требуемый объект. Если этот необязательный параметр опу- щен, то второй параметр становится обязательным
Класс Имя класса, к которому относится требуемый объект
Комментарий
Если задано имя файла, то функция возвращает ссылку на
объект, размещенный в этом файле.
• Параметр ИмяФайла должен при этом содержать пол-
ное (включая имя диска и путь) имя файла.
• Файл будет открыт посредством связанного с ним при-
ложения, и функция вернет ссылку на активизированный
таким образом объект.
196
4.8. OLE
Если имя файла опущено, то должно быть указано имя клас-
са, к которому принадлежит требуемый объект.
• В этом случае будет создан новый экземпляр.
• Указанный класс должен присутствовать в системном ре-
естре Windows (раздел HKEY CLASSES ROOT).
Возвращаемое функцией значение должно быть присвое-
но переменной объектного типа.
Пример
'Открыть презентацию PowerPoint из среды Excel
Sub CallPowerPointFromExcel()
'Файл презентации
Const FilName = "C:\FILES\MyPres.ppt"
'Переменные для объектов PowerPoint
Dim PR As Presentation 'Презентация
Dim SL As Slide 'Слайд
'Открыть презентацию
Set PR = GetObject(FilName)
'Создать новый слайд
Set SL = PR.Slides.Add(PR.Slides.Count + 1,
ppLayoutTitleOnly)
'Присвоить заголовку слайда презентации
'имя листа рабочей книги
SL.Shapes(1).TextFrame.TextRange.Text = _
Sheets(1).Name
'Сохранить презентацию
PR.Save
'Закрыть окно PowerPoint
PR.Application-Quit
'Обнулить ссылку
Set PR = Nothing
End Sub
4.8. OLE
197
,иим
CresteObjttut(K;ncc)
Параметр Назначение
Класс Параметр вида ИмяПриложения.ИмяКласса, опре- деляющий класс, к которому должен принадлежать создаваемый объект
Комментарий
1 Создает объект (экземпляр) заданного класса.
• Объект будет создан и активизирован с помощью свя-
занного с ним приложения.
• Указанный класс должен присутствовать в системном
реестре Windows (раздел HKEY_CLASSES_ROOT).
М Возвращаемое функцией значение должно быть присвое-
но переменной объектного типа.
Пример
Sub MySQLQueryO
Const SQLString = "SELECT ANName,Land " & _
"FROM Authors ORDER BY Land"
Dim MyServer As SQLOLE.SQLSERVER
'Создать переменную для доступа к SQL-серверу
Set MyServer = CreateObject_
("sqlole.SQLServer")
'Соединиться и передать запрос
MyServer.Connect "MySrv", "SA", "Geheim"
Set MyResult = _
MyServer1Verleger.ExecuteWithResults(SQLString)
'Записать результат в рабочую книгу
For I = 1 То MyResult.Rows
ActiveSheet.Cells(i, 1).Value = _
MyResult.GetColumnString(i, 1)
198 4.9. Коллекции
ActiveSheet.Cells(i, 2).Value =
MyResult.GetColumnString(i, 2)
Next
'Завершить соединение
MyServer.Close
End Sub
4.9. Коллекции
Коллекция представляет собой совокупность объектов, но в
то же время сама является объектом. Объект можно включить
в состав коллекции или исключить из ее состава. Механизм
коллекций позволяет выполнять групповые операции с объек-
тами.
Среди конструкций языка VBA есть цикл специального вида,
позволяющий обратиться ко всем объектам, входящим в со-
став некоторой коллекции (цикл For Each Object In Collection).
Коллекции могут включать в себя однотипные объекты, а так-
же объекты определяемых пользователем типов. В состав
коллекций могут входить также классы.
В приведенном ниже примере (упрощенная библиотека для
операций с лицевыми счетами) показана техника работы с
коллекциями.
Пример
'В модуле класса: определить класс Counts
Public CountNumber As Long 'номер счета
Public CountName As String 'название счета
Public CountSaldo As Double 'исходящий остаток
Dim LastCred As Date
'дата последнего кред.оборота
Dim LastDeb As Date
'дата последнего дебет.оборота
4.9. Коллекции
199
'Проводка по кредиту счета
Sub Credit(Sum As Double)
CountSaldo = CountSaldo + Sum
LastCred = Now
End Sub
'Проводка по дебету счета
Sub Debet(Sum As Double)
CountSaldo = CountSaldo - Sum
LastDeb = Now
End Sub
'Дата последнего кредитового оборота по счету
Function LastCredit() As String
Lastcredit = Format(LastCred, "Short Date")
End Function
'Дата последнего дебетового оборота по счету
Function LastDebetO As String
LastDebet = Format(LastDeb, "Short Date")
End Function
Пример
'В программном модуле, использующем класс Counts
Dim CountsCol As New Collection 'создать коллекцию
Sub CountRun()
'Объявить переменные
Dim CountObj As Object
Dim Nlst As String
Dim I As Integer
'Создать три новых счета
AddCount "Герда Мюллер", 123, 25000
AddCount "Ганс Шмидт", 554, 1000
AddCount "Клаус Кримц", 887, 80000
'Выдать сообщение о состоянии всех счетов
200
4.9. Коллекции
For Each CountObj In CountsCol
Nlst = Nlst & CountObj.CountName & " " _
& CountObj.CountSaldo & Chr(13)
Next
MsgBox "Всего " & CountsCol.Count & "Счета:" &
vbCr &Nlst
'Проводки по счету 123
CountsCol("123").Credit 10000
CountsCol("123").Debet 2000
1 Дата последнего движения
With CountsCol("123")
MsgBox "Последнее движение по кредиту: " &
.LastCredit & vbCr & "Исходящий остаток ” _
& Space(14) & " & Format(.CountSaldo,
"Currency")
End With
'Удалить все счета
For I = 1 To CountsCol.Count
CountsCol.Remove I
Next
End Sub
'Создать объект "счет" и включить его
'в коллекцию "счета"
Sub AddCount(Name As String, Number As Long,
Saldo As Double)
'Создать новый экземпляр объекта "счет"
Dim TempCount As New Counts
'Обнулить указатель
Set TempCount = Nothing
'Заполнить поля объекта
With TempCount
.CountName = Name
.CountNumber = Number
4.9. Коллекции
201
.CountSaldo = Saldo
End With
'Включить новый объект в коллекцию
CountsCol.Add TempCount,
CStr(TempCount.CountNumber)
End Sub
□tyecf. Count
Параметр Назначение
Object Имя объекта-коллекции
Комментарий
Возвращает количество объектов в коллекции (значение
типа Long).
Пример
'Удалить все счета
For I = 1 То CountsCol.Count
CountsCol.Remove I
Next
Qbj^tt.Add а&ъ»кт[, Ктич[, ОйъаггДоГ, ОбъектПас/iti}]]
Комментарий
И Включает объект в состав коллекции. При этом включаемо-
му объекту можно присвоить строковый «ключ», т. е. иден-
тификатор, который позволит обращаться к объекту в со-
ставе коллекции не только по порядковому номеру.
(gOlPfeWliW
202
4.9. Коллекции
Параметр ОбъектДо или ОбъектПосле, если это необходи-
мо, дает возможность указать место в коллекции, куда сле-
дует включить новый объект. Использовать можно только
один из этих параметров (при этом необходимо указать
либо порядковый номер, либо идентификатор соответст-
вующего объекта).
Параметр Назначение
Object Имя объекта-коллекции
Объект Имя объекта, подлежащего включению в состав коллекции
Ключ Строка-идентификатор («ключ»), которая позво- лит впоследствии обращаться к объекту внутри коллекции «по имени»
ОбъектДо Номер или строка-идентификатор объекта, пред- шествующего включаемому
ОбъектПосле Номер или строка-идентификатор объекта, сле- дующего за включаемым
Пример
'Включить новый объект в коллекцию
CountsCol.Add TempCount,
CStr(TempCount.CountNumber)
Object.Hemove Индекс
Параметр Назначение
Object Имя объекта-коллекции
Индекс Порядковый номер объекта в коллекции или его ключ-идентификатор
4.10. Обработка ошибок
203
Пример
'Удалить все счета
For I = 1 То CountsCol.Count
CountsCol.Remove I
Next
Комментарий
Исключает указанный объект из состава коллекции.
OUjsot. Пот(Индяка)
Параметр Назначение
Object Имя объекта-коллекции
Индекс Порядковый номер объекта в коллекции или его ключ - идентификатор
Комментарий
Возвращает объект, входящий в состав коллекции.
Пример
'Проводки по счету 123
CountsCol("123").Credit 10000
CountsCol("123").Debet 2000
4.10. Обработка ошибок
При выполнении программы могут возникнуть разного рода
ситуации, ведущие к ошибкам периода выполнения. Напри-
мер, может произойти обращение к несуществующему или
недоступному в данный момент дисковому файлу. Если обра-
204
4.10. Обработка ошибок
ботка такой ошибки не предусмотрена программистом, то вы-
полнение программы будет прервано аварийно. Чтобы этого
избежать, необходимо предусмотреть обработку ошибок, ко-
торые могут возникнуть при выполнении программы.
Язык VBA располагает рядом операторов, предназначенных
для работы с ошибками, а также объектом Error, чьи методы и
свойства позволяют получать сведения о возникшей ошибке,
а также управлять процессом ее обработки.
On Error 9ato Мотка
On Error Resume Next
On Error GoTo 0
Параметр Назначение
GoTo Метка При возникновении ошибки переход на метку
Resume Next При возникновении ошибки продолжить со сле- дующего оператора
GoTo 0 При возникновении ошибки перезапустить про- грамму
Комментарий
Включает обработку ошибок в текущей процедуре (макросе).
В первом случае при возникновении ошибки управление
будет передано на строку Метка (речь идет о строке внут-
ри текущей процедуры). С метки должен начинаться код
обработчика ошибок в данной процедуре.
Во втором случае выполнение программы будет продол-
жено с оператора, следующего за тем, при выполнении ко-
торого возникла ошибка.
Третий вариант предусматривает «сброс» программы с ини-
циализацией всех переменных и запуск ее с начала.
4.10. Обработка ошибок 205
Пример
'Обработчик ошибок в процедуре:
'файл не существует
Sub TestPGM
'В случае ошибки выполнения перейти по метке
On Error GoTo ErrorLabell
Open "C:\test.txt" For Input As 1
Exit Sub
ErrorLabell:
'Обработка ошибки открытия файла
End Sub
Resume Next
Resume tl
Resume Метка
Параметр Назначение
Next Продолжить выполнение со следующего операто- ра
0 Продолжить выполнение с того оператора, где возникла ошибка.
Метка Перейти по метке.
Комментарий
Оператор Resume определяет, что в случае возникновения
ошибки выполнение программы должно быть продолжено.
Обычно Resume используют в коде обработчика ошибок.
206
4.10. Обработка ошибок
В первом варианте оператора выполнение программы бу-
дет продолжено со следующего оператора.
Во втором варианте программа вновь попытается выпол-
нить «ошибочный» оператор и так будет продолжаться до
тех пор, пока ошибка не исчезнет или, если ошибка возни-
кает вновь и вновь, бесконечно.
Если задана метка, то при ошибке управление будет пере-
дано на строку с меткой.
Пример
'Обработчик ошибок в процедуре: деление на нуль
Sub TestPGM
Dim Res As Double
'В случае ошибки выполнения перейти по метке
On Error GoTo ErrorLabell
Res =15/0
Exit Sub
ErrorLabell:
'Обработка ошибки
If Err = 11 Then
MsgBox "Ошибка выполнения: деление на нуль!"
Resume Next
End If
End Sub
4.10.1. Объект Err
Объект Err содержит сведения о случившейся ошибке вы-
полнения. Анализ содержимого свойств этого объекта по-
зволяет распознать вид ошибки и принять соответствую-
щее решение. Кроме того, объект Err позволяет сгенери-
ровать ошибку периода выполнения с заданными атрибу-
тами.
4.10. Обработка ошибок
207
Пример
'Использовать объект Err
'для распознавания вида ошибки
Dim ErrMessage As String
On Error GoTo ErrorLabell
Err.Clear
Err.Raise 6, "Тестовая программа",
"Деление на нуль!"
ErrorLabell:
If Err.Number <> 0 Then
ErrMessage = "Произошла ошибка номер "
& Err.Number _
& vbCr & "Источник: " & Err.Source _
& vbCr & "Описание: " & Err.Description
MsgBox ErrMessage
End If
Err. Raise Номер, Источник, Описание,
______ФиилСпрааки, КонтькстОпраики
Параметр Назначение
Номер Номер ошибки
Источник Имя приложения или объекта-источника ошибки
Описание Описание ошибки
ФайлСправки Полное имя файла справки
КонтекстСправки Идентификатор контекста в файле справки
208
4.10. Обработка ошибок
Комментарий
Генерирует ошибку периода выполнения с заданными па-
раметрами.
Пример
Err.Raise 6, "Тестовая программа", _
"Деление на нуль!"
Err. Clear
Комментарий
Очищает свойства объекта Err.
Метод вызывается автоматически при выполнении опера-
торов Resume или On Error.
Пример
Err.Clear
Err.Raise 6, "Тестовая программа",
"Деление на нуль!"
5 Меню, панели
инструментов,
экранные формы
Такие компоненты Office, как Word, Excel и PowerPoint, позво-
ляют стандартным (с точки зрения VBA) образом оснастить
свои объекты дополнительными пунктами меню, панелями ин-
струментов, а также экранными формами. Исключение состав-
ляет Access — связанные с этим приложением особенности
будут рассмотрены в главе 9.
5.1. Меню и панели инструментов
Панели меню и панели инструментов представляются в сре-
де Office как объект типа CommandBar и, таким образом,
существенного различия между ними нет.
Меню представляет собой частный случай панели инстру-
ментов (панель, где отсутствуют командные кнопки, а есть
только текстовые элементы).
• Объекты типа CommandBar являются составной частью
стандартных библиотек Office.
Ссылки на стандартные библиотеки Office автоматически
включаются в состав каждого проекта, и нет необходимос-
ти указывать их явным образом.
Командные кнопки, как и команды меню, могут распола-
гаться только на панели (которую именуют соответственно
панелью инструментов или панелью меню).
• Панель является носителем элементов управления
(командных кнопок, команд меню и др.) и не выполняет
никаких самостоятельных функций.
210
5.1. Меню и панели инструментов
Обзор. Объектная модель панели инструментов (меню)
Объект Назначение
Com ma nd Bars Коллекция объектов типа CommandBar
CommandBar Панель инструментов/меню (объект типа CommandBar)
CommandBarControls Коллекция объектов типа CommandBar- Control
CommandBarControl Элемент управления (одного из несколь- ких типов), предназначенный для поме -1 щения на панель инструментов (меню) I
CommandBarButton Командная кнопка с точечным рисун- ком (значок), предназначенная для по- мещения на панель инструментов
CommandBarComboBox Текстовое поле, поле списка или ком- бинированное поле, предназначенное для помещения на панель инструментов
CommandBarPopup Команда (элемент) меню, предназна- ченная для помещения на панель меню
5.1. Меню и панели инструментов
211
5.1.1. Коллекция CommandBars —
панели инструментов
Свойства
AaHv&Mi-nuBar
Возвращает текущую панель инструментов.
Пример
'Получить имя текущей панели инструментов
MsgBox CommandBars.ActiveMenuBar.Name
AdnpttveMisnua
Возвращает/устанавливает состояние настраиваемых меню.
Пример
'Разрешить настраиваемые меню
CommandBars.AdaptiveMenus = True
DisplayTooltips
Определяет наличие всплывающих подсказок у элементов
управления, помещенных на панель инструментов.
Пример
'Отключить всплывающие подсказки
CommandBars.DisplayTooltips = False
212
5.1. Меню и панели инструментов
Ldrg&Buttuns
Разрешает или запрещает режим «крупных значков» (кно-
пок).
Пример
'Крупные значки
CommandBars.LargeButtons = True
Count
Число объектов в коллекции.
Пример
'Сообщить число панелей меню и инструментов
MsgBox CommandBars.Count
Методы
Add (Имя. Позиция, ПпнельМеню, ВременныйСтатус)
Параметр Назначение
Имя Имя новой панели инструментов (меню) — строковое значение
Позиция Позиция новой панели
ПанельМеню Булево значение, определяющее, должна ли новая панель (True) быть панелью меню
ВременныйСтатус Булево значение, определяющее, должно ли (True) окно новой панели закрываться после закрытия окна приложения
5.1. Меню и панели инструментов
213
Комментарий
Создает новую панель инструментов (меню) с заданными
параметрами и включает ее в состав коллекции.
• Вновь созданная панель первоначально пуста, для по-
мещения на нее тех или иных элементов управления не-
обходимо предпринять соответствующие действия.
• Если параметру ВременныйСтатус будет задано значе-
ние False, то окно вновь созданной панели останется на
рабочей поверхности после закрытия окна приложения.
• Попытка создать еще одну панель с тем же именем вы-
зовет ошибку периода выполнения.
• Вновь созданная панель инструментов (меню) невиди-
ма. Для отображения ее на экране требуется предпри-
нять соответствующие действия.
Пример
Dim MyCmdBar As CommandBar
'Создать новую панель инструментов
Set MyCmdBar = CommandBars.Add("Моя Панель",
msoBarFlDating)
5.1.2. Панель инструментов (меню) —
объект CommandBar
Свойства
Возвращает коллекцию элементов управления, размещен-
ных на данной панели (объекты CommandBarControl).
214 5.1. Меню и панели инструментов
Пример
Dim MyCmdBar As CommandBar
Dim MyBtn As CommandBarControl
'Создать новую панель инструментов
Set MyCmdBar = CommandBars.Add("Моя Панель",
msoBarFloating)
'Создать командную кнопку,
'как объект в коллекции Controls
Set MyBtn = MyCmdBar.Controls.Add
(msoControlButton)
MyCmdBar.Visible = True
Visible
Определяет видимость (True) или невидимость (False) объ-
екта.
Пример
Dim MyCmdBar As CommandBar
'Создать новую панель инструментов и сделать ее
видимой
Set MyCmdBar = CommandBars.Add("Моя Панель",
msoBarFloating)
MyCmdBar.Visible = True
Методы
В&1е(е[(ВременныйСтатус) ]
Комментарий
Удаляет объект и исключает его из состава коллекции.
5.1. Меню и панели инструментов
215
Параметр Назначение
ВременныйСтатус Булево значение, определяющее, должно ли (False) удаление объекта сохранить силу по- сле нового запуска приложения
Пример
Dim MyCmdBar As CommandBar
'Создать новую панель инструментов
'и сделать ее видимой
Set MyCmdBar = CommandBars.Add("Моя Панель",
msoBarFloating)
MyCmdBar.Visible = True
'Удалить панель инструментов
MyCmdBar.Delete
5.1.3. Элемент управления ConimandBarControl
Обзор.
Все элементы управления, предназначенные для помеще-
ния на панель инструментов, основываются на объекте типа
CommandBarControl. Все свойства и методы этого объекта
автоматически наследуются элементами управления, для
которых он служит основой.
Свойства
Co'.'ct
Число объектов в составе коллекции CommandBarControls.
(gOlPfeWliW
216
5.1. Меню и панели инструментов
Пример
'Сообщить число кнопок на панели инструментов
MsgBox CommandBars("Standard").Controls.Count
On Action
Имя макроса (процедуры), подлежащего выполнению при
щелчке на данном элементе управления.
Пример
'Создать кнопку на панели инструментов и назна-
чить ей процедуру
Set MyBtn = MyCmdBar.Controls.Add _
(msoControlButton)
MyBtn.OnAction = "MakeDiag"
JoottipText
Текст всплывающей подсказки, связанной с элементом.
Пример
'Создать кнопку на панели инструментов
'и назначить ей текст
Set MyBtn = MyCmdBar.Controls _
.Add(msoControlButton)
MyBtn.TooltipText = "Создание диаграммы"
Enabled V
Булево значение, разрешающее (True) или запрещающее
(False) объекту реагировать на действия пользователя
5.1. Меню и панели инструментов
217
Пример
'Создать кнопку на панели инструментов
'и "отключить" ее
Set MyBtn = MyCmdBar.Controls.Add _
(msoControlButton)
MyBtn.Enabled = False
Методы
A(!d(Tnn[, ID[, n&paMarpf, Позиция [,
Яр^менныйСт^тус]]]])
Комментарий
Создает новый объект типа CommandBarControl в составе
коллекции CommandBarControls.
Параметр Назначение
Тип Константа, определяющая тип создаваемого эле- мента управления
ID Идентификатор объекта
Параметр Параметр для передачи процедуре (макросу), связанной с объектом CommandBarControl
Позиция Позиция объекта в коллекции
Временный- Статус Булево значение, определяющее, должен ли (True) объект CommandBarControl быть удален после закрытия окна приложения
Пример
Dim MyCmdBar As CommandBar
Dim MyBtn As CommandBarControl
218
5.1. Меню и панели инструментов
'Создать новую панель инструментов
Set MyCmdBar = CommandBars.Add("Моя панель",
msoBarFloating)
MyCmdBar.Visible = True
'Создать кнопку
Set MyBtn = MyCmdBar.Controls.Add _
(msoControlButton)
MyBtn.FacelD = 17
Exeoute
Комментарий
Выполняет процедуру (макрос), связанную с кнопкой.
Пример
MyBtn.Execute
(Вр&м&нныйСтхтус) ]
Параметр Назначение
ВременныйСтатус Булево значение, определяющее, должно ли (False) удаление объекта сохранить силу пос- ле нового запуска приложения ,
Комментарий
Удаляет объект и исключает его из состава коллекции.
5.1. Меню и панели инструментов
219
Пример
'Создать кнопку и удалить ее
Set MyBtn = MyCmdBar.Controls
-Add(msoControlButton)
MyBtn.Delete False
5.1.4. CommandBarButton — кнопка с рисунком
(значок)
Элемент управления типа CommandBarButton представляет
собой командную кнопку, на поверхность которой можно по-
местить точечный рисунок или надпись. Объект CommandBar-
Button обладает всеми методами и свойствами своего «базо-
вого» объекта — CommandBarControl (см. 5.1.3).
Свойства
style
Определяет стиль кнопки.
• На поверхности кнопки могут быть размещены рисунок,
надпись или и то, и другое.
• Свойства Caption и FacelD можно использовать только
в соответствии с выбранным стилем.
Пример
'Создать кнопку с надписью
Set MyBtnl = MyCmdBar.Controls.Add
(msoControlButton)
MyBtnl.Style = msoButtonCaption
MyBtnl.Caption = "Пуск"
220
5.1. Меню и панели инструментов
'Создать кнопку с точечным рисунком
Set MyBtn2 = _
MyCmdBar.Controls.Add(msoControlButton)
MyBtn2.Style = msoButtonlcon
MyBtn2.FacelD = 17
Caption
Определяет текст надписи на кнопке.
• Свойство Style должно при этом содержать константу
msoButtonCaption.
Пример
'Создать кнопку с надписью
Set MyBtn = _
MyCmdBar.Controls.Add(msoControlButton)
MyBtn.Style = msoButtonCaption
MyBtn.Caption = "Пуск"
Face/O
Должно содержать порядковый номер точечного рисунка
(0, если речь идет о пользовательском рисунке)
• Свойство Style должно при этом содержать константу
msoButtonlcon.
Пример
'Создать кнопку с точечным рисунком
Set MyBtn = _
MyCmdBar.Controls.Add(msoControlButton)
MyBtn.Style = msoButtonCaption
MyBtn.FacelD - 17
5.1. Меню и панели инструментов
221
Отражает состояние кнопки (нажата/не нажата) и позволя-
ет им управлять.
Пример
'Создать кнопку с рисунком
'и "нажать" ее программно
Set MyBtn = _
MyCmdBar.Controls.Add(msoControlButton)
MyBtn.FacelD = 17
MyBtn.Style = msoButtonCaption
MyBtn.State = msoButtonDown
5.1.5. CommandBarComboBox —
комбинированное поле
Объект типа CommandBarComboBox представляет собой уни-
версальное поле ввода, сочетающее в себе возможности текс-
тового поля и поля списка.
Метод Add коллекции CommandBarControls позволяет создать
несколько разновидностей комбинированного поля — наиболее
часто используют список (msoControlDropDown) и поле ввода со
списком (msoControlCom- ЬоВох).
Объекты типа CommandBarComboBox обладают всеми свой-
ствами и методами CommandBarControl.
Свойства
OrofiDownLinet;
И Содержит число видимых элементов списка при его раз-
вертывании.
222
5.1. Меню и панели инструментов
Пример
'Создать комбинированное поле
Set MyCombo = _
MyCmdBar.Controls.Add(msoControlComboBox)
MyCombo.DropDownLines = 3
DropDawnWldth
Определяет ширину окна списка.
Пример
'Создать комбинированное поле
Set MyCombo = _
MyCmdBar.Controls.Add(msoControlComboBox)
MyCombo.DropDownWidth = 200
Инде tec)
Возвращает элемент списка с порядковым номером Ин-
декс.
Пример
'Получить 2-й элемент списка
MyMessage = MyCombo.List(2)
UstCQunt
Число элементов списка.
5.1. Меню и панели инструментов
223
Пример
Dim MyMessage As String
For I = 1 To MyCombo.ListCount
MyMessage = MyMessage & MyCombo.List(I)
& vbCr
Next
MsgBox MyMessage
Listlnsiex
Возвращает и позволяет задать номер выделенного эле-
мента списка.
Пример
'Выбрать сообщение
MyCombo.ListIndex = 1
'Прочитать в строку
MyMessage = MyCombo.List(MyCombo.Listindex)
Text
Содержит текст, отображающийся в поле ввода.
Пример
MsgBox MyCombo.Text
224
5.1. Меню и панели инструментов
Методы
Параметр Назначение
Строка Строковое значение, добавляемое в список
Индекс Номер элемента списка
Комментарий
Включает в список новый элемент.
Пример
'Создать комбинированное поле
'и заполнить список
Set MyCombo = MyCmdBar.Controls.Add _
(msoControlComboBox)
MyCombo.Additem "Уважаемые господа, "
MyCombo.Additem "Дорогие друзья, "
MyCombo.Additem "Дамы и господа, "
Параметр Назначение
Индекс Номер элемента списка
Комментарий
Исключает из списка элемент с указанным номером
5.1. Меню и панели инструментов
225
Пример
'Удалить второй элемент
MyCombo.RemoveItern 2
5.1.6. Меню и подменю — CommandBarPopup
Объекты типа CommandBarPopup являются основным «строи-
тельным материалом» для создания меню и подменю на пане-
лях инструментов.
Каждый такой объект представляет собой элемент меню — пункт
меню или заголовок подменю. Кроме общих для всех Command-
BarControl-объектов свойств (см. 5.1.3) следует остановиться на
двух свойствах объекта CommandBarPopup.
Свойства
Caption
Текст надписи на элементе меню.
Пример
'Создать меню "Файл"
Set MyMenu = MyCmdBar.Controls. _
Add(msoControlPopup)
MyMenu.Caption = "Файл"
Controls
Возвращает коллекцию объектов CommandBarControl, со-
держащую в себе элементы меню, связанные с данным.
X I855
(gOlPOMW
226
5.2. Экранная форма
Пример
'Создать меню
Set MyMenu = MyCmdBar.Controls.
Add(msoControlPopup)
With MyMenu.Controls
.Add msoControlButton, 3
.Add msoControlButton, 4
End With
5.2. Экранная форма
В среде таких компонентов Office, как Excel, Word и PowerPo-
int, наряду с панелями инструментов можно создавать также
экранные формы (мы будем называть их просто формами).
Обзор. Форма
Форма входит в состав проекта как полноправный его эле-
мент (наряду с модулями, листами, документами и т. д.).
Для создания и модификации форм используют редактор
форм, полностью интегрированный в среду разработки со-
ответствующего компонента Office.
Форма является объектом и обладает собственными свой-
ствами, методами и событиями.
На форму можно поместить как стандартные управляющие
элементы, так и дополнительные элементы, созданные на
основе технологии ActiveX (ActiveX-элементы).
Пример
'Доступ к элементу на форме в коде
Dim Name As String
DlgAddress.InName = "Иван" 'Заготовка имени
'в поле ввода
5.2. Экранная форма
227
DlgAddress.Show 'Вывод формы на экран
Name = DlgAddress.InName 'Получить введенное имя
Процедура. Включение новой формы в состав проекта
1. Insert/UserForm или щелкнуть на кнопке Insert UserForm.
Процедура. Редактирование экранной формы
1. Открыть панель Project.
2. Выполнить двойной щелчок на имени формы, которую тре-
буется отредактировать.
Процедура. Добавление элементов управления
- на форму
1. Найти в окне Toolbox значок необходимого элемента управ-
ления и поместить на него указатель мыши.
2. Нажать (и удерживать) левую кнопку мыши.
3. Переместить указатель мыши на форму.
4. Отпустить левую кнопку мыши.
Или:
1. Выполнить одиночный щелчок левой кнопкой мыши на знач-
ке элемента в окне Toolbox.
2. Поместить указатель мыши на форму.
3. Выполнить одиночный щелчок.
228
5.2. Экранная форма
Процедура. Создание процедуры-обработчика события
для элемента управления
1. Выполнить двойной щелчок левой кнопкой мыши на эле-
менте, помещенном на форму.
Или:
1. Одиночным щелчком или клавишей [Tab] поместить фокус
на требуемый элемент на форме.
2. View/Code или клавиша [Е7].
Процедура. Добавление дополнительных элементов
управления на форму
1. Tools/Additional Controls.
2. Отметить необходимый элемент (или группу элементов).
Закрыть окно кнопкой ОК.
3. Перетащить элемент с панели Toolbox на форму.
5.2.1. Экранная форма как объект
Обзор. Объектная модель формы
®Ы1Р(б№®[^
5.2. Экранная форма 229
Объект Назначение
UserForm Экранная форма с размещенными на ней элемента - ми управления
Controls Коллекция, включающая в себя все элементы управления данной формы
Font Стандартный шрифт (шрифт по умолчанию) для данной формы
MultiPage Набор страниц. Объект-контейнер, способный со- держать в себе объект-коллекцию типа Pages
Pages Коллекция объектов Раде
Page Страница в наборе страниц MultiPage
TabStrip Объект-контейнер, способный содержать в себе объект-коллекцию типа Tabs
Tabs Набор вкладок — коллекция объектов Tab
Tab Вкладка, в отличие от страницы Раде, не является контейнером
DataObject Предназначен для промежуточного хранения тек- стовых данных для операций буфера обмена
230
5.2. Экранная форма
Обзор. Объектная модель коллекции Controls
5.2. Экранная форма 231
Объект Назначение
CheckBox Поле флажка (флажок)
Combo Box Комбинированное поле (поле со списком)
CommandButton Кнопка (командная кнопка)
Frame Группа (рамка)
Image Рисунок
Label Надпись (этикетка)
ListBox Список (поле списка)
Multi Page Набор страниц
OptionButton Переключатель (позиция переключателя)
ScrollBar Полоса прокрутки
SpinButton Кнопка-счетчик
TabStrip Набор вкладок
Text Box Поле (текстовое поле ввода)
ToggleButton Выключатель (кнопка-выключатель)
232
5.2. Экранная форма
5.2.2. Общие события
Многие события поддерживаются как самой формой, так и
большинством элементов управления.
Событие Описание
BeforeDragOver Генерируется в процессе перетаскивания (drag&drop)
BeforeDropOr- Paste Происходит перед выполнением операции вставки
Change Содержимое элемента управления изменилось
Click На объекте произведен щелчок мышью
DbICIick Аналогично — двойной щелчок
KeyDown Нажата клавиша (фокус клавиатуры находится на объекте)
KeyPress Нажата и отпущена одна из ASCII-клавиш
KeyUp Отпущена клавиша
MouseDown Нажата одна из кнопок мыши (указатель мыши находится над объектом)
MouseMove Генерируется в процессе перемещения мыши
MouseUp Отпущена ранее нажатая кнопка мыши
5.2.3. Общие свойства
Форма и многие элементы управления располагают также ря-
дом одноименных свойств, имеющих сходное назначение.
ВэскСч1&г
Определяет цвет фона (заднего плана) объекта.
5.2. Экранная форма
233
Пример
'Задать цвет фона формы: светло-голубой
DlgAddress.BackColor = RGB(140, 170, 200)
DlgAddress.Show
BardurCalor
Определяет цвет бордюра (рамки) или линий объекта.
Пример
'Задать цвет бордюра формы: светло-голубой
DlgAddress.BorderColor = RGB(140, 170, 200)
DlgAddress.Borderstyle = fmBorderStyleSingle
DlgAddress.Show
Saptfon
Текст титульной строки или надписи на объекте.
Пример
'Титульная строка формы
DlgAddress.Caption = "Адреса"
DlgAddress.Show
Разрешает (True) или запрещает (False) объекту реагиро-
вать на действия пользователя.
(gOlPfeWliW
234
5.2. Экранная форма
Пример
'Отключить кнопку "ОК"
DlgAddress.Controls("OkBtn").Enabled = False
Fant
Содержит в себе объект Font, чьи свойства определяют
размер, атрибуты и признаки начертания шрифта.
Пример
'Задать параметры шрифта для кнопки "ОК"
DlgAddress-Controls("OkBtn").Font.Name = _
"Arial"
DlgAddress.Controls("OkBtn").Font.Size = 14
DlgAddress.Controls("OkBtn").Font.Bold = True
ForuCalor
Определяет цвет переднего плана объекта.
Пример
'Задать цвет переднего плана формы: черный
DlgAddress.BackColor = RGB(0, 0, 0)
DlgAddress.Show
Max
Задает максимальное значение свойства Value (для эле-
ментов управления ScrollBar и SpinButton).
5.2. Экранная форма
235
Пример
DlgNumber.Controls("hsbNumber").Max = 100
Mln
Задает минимальное значение свойства Value (для эле-
ментов управления ScrollBar и Spin Button).
Пример
DlgNumber.Controls("hsbNumber").Min = 1
Value
Эго свойство возвращает (или задает) значение, содержащее-
ся в объекте.
Тип возвращаемого/задаваемого значения зависит от
типа объекта.
♦ Свойство Value текстового поля возвращает содержа-
щийся в поле текст.
• Полоса прокрутки или кнопка-счетчик вернет число.
• Флажок CheckBox или переключатель OptionButton вер-
нут булево значение.
Пример
Dim Name As String
Name - DlgAddress.Controls("DlgName")-Value
236
5.2. Экранная форма
Vlsil/le
Делает объект видимым (True) или невидимым (False).
Пример
DlgAddress.EditBoxl.Visible = True
5.2.4. Элемент управления MultiPage
Набор страниц MultiPage представляет собой форму (диалог),
включающую в себя несколько страниц, причем в каждый мо-
мент времени видна только одна из них (типичный пример —
диалог Сервис/Параметры).
Содержит коллекцию Pages, включающую в себя все стра-
ницы диалога (объекты Раде).
• Коллекция Pages дает возможность обратиться к любой
странице.
• Каждая страница Раде является элементом-контейнером
и способна содержать в себе элементы управления.
Пример
'Добавить страницу и снабдить
'ее всплывающей подсказкой
DlgSample. MP.Pages.Add "Адрес", "Address"
DlgSample.MP.Pages("Адрес").ControlTipText =
"Введите адрес"
DlsSample.Show
Свойства
TabOrientatiun
Определяет местоположение ярлычков, служащих для пе-
реключения между страницами диалога (сверху, снизу,
слева или справа).
5.2. Экранная форма
237
Пример
'Расположить ярлычки справа
DlgSample.MP.TabOrientation =
fmTabOrientationRight
Возвращает и позволяет задать номер активной страницы.
• Счет страниц ведется от 0.
Пример
'Открыть пятую страницу диалога
DlgSample.MP.Value = 4
5.2.5. Объект Раде
Каждый объект типа Раде представляет собой одну страницу,
содержащуюся в элементе MultiPage (см. 5.2.4).
Свойства
Picture
Определяет фоновый рисунок страницы.
Пример
DlgSample.MP.Adr.Picture = _
LoadPicture("С:\Windows\Lanma256.bmp")
238
5.2. Экранная форма
Pic tureAlignment .
Определяет режим выравнивания на странице фонового
рисунка.
Пример
DlgSample.MP.Adr.PictureAlignment =
fmPictureAlignmentTopLeft
PictureSizeM&de
Определяет режим согласования размеров страницы и ри-
сунка.
Пример
DlgSample.MP.Adr.PictureSizeMode =
fmPictureSizeModeStretch
Picture. Tiling
Разрешает «размножение» рисунка по всей поверхности
страницы в случае, когда рисунок меньше страницы.
Пример
DlgSample.MP.Adr.PictureTiling = True
TrartsttfonEffect
в Определяет разновидность визуального эффекта при пе-
реключении между страницами.
5.2. Экранная форма 239
Пример
DlgSample.MP.Adr.TransitionEffeet =
fmTransitionEffeetPushUp
Transiti<jnPe>ri<jcJ
Определяет длительность визуального эффекта при пере-
ключении между страницами (в миллисекундах, от 1 до
10000).
Пример
DlgSample.MP.Adr.TransitionPeriod = 250
5.2.6. Элемент управления Tabstrip
Элемент TabStrip представляет собой набор вкладок, между
которыми пользователь может переключаться точно так же,
как и между страницами набора страниц. Отличие набора
вкладок состоит в том, что на каждой вкладке присутствуют
одни и те же элементы управления (меняются только отобра-
жаемые в них данные). Вкладка не является контейнером и
помещенные на нее объекты «принадлежат» форме, на кото-
рой находится набор вкладок TabStrip.
Свойства
зЫе
И Определяет вид (стиль) набора вкладок.
Пример
DlgSample.TS.Style = fmTabStyleButtons
240
5.2. Экранная форма
TabOrientation
Определяет местоположение элементов, служащих для
переключения между вкладками (сверху, снизу, слева или
справа).
Пример
'Расположить элементы справа
DlgSample.TS.TabOrientation =
fmTabOrientationRight
Value
Возвращает и позволяет задать номер активной вкладки.
• Счет вкладок ведется от 0.
Пример
'Открыть пятую вкладку
DlgSample.TS.Value = 4
Примечание редактора
Элементы управления MultiPage и TabStrip во многом схожи.
Различие состоит в том, что каждая страница элемента Multi-
Page является контейнером и способна нести самостоятель-
ный набор элементов управления, в то время как вкладки эле-
мента TabStrip отображают один и тот же «общий» набор.
Всплывающая подсказка в окне панели элементов идентифи-
цирует их соответственно как MultiPage (Набор страниц) и
TabStrip (Набор вкладок).
Однако в Справке Office «страницы» диалогов типа MultiPage
называются вкладками, что, кстати, соответствует традицион-
ному пониманию этого термина.
(gOlPfeWliW
5.2. Экранная форма
241
В рамках данной книги мы будем использовать слово «вклад-
ка» применительно к диалогам обоих типов.
5.2.7. Флажок CheckBox
Флажок (поле флажка) CheckBox отображает (и позволяет
вводить) логические значения. Значение True (Да, Истинно)
соответствует установленному флажку, значение False (Нет,
Ложно) — сброшенному. В отличие от позиций переключателя
флажки могут устанавливаться и сбрасываться вне зависимо-
сти друг от друга.
Свойства
SpecialEffect
Определяет вид поля флажка.
Пример
DlgSample.CheckBoxl.SpecialEffeet =
fmSpecialEffeetFlat
TripleState
Разрешает (True) доступность третьего состояния флажка
(соответствует значению Null, включается и выключается
щелчком на надписи рядом с флажком), при этом поле
флажка изображается потускневшим.
Пример
DlgSample.CheckBoxl.TripleState = True
242
5.2. Экранная форма
Value
Возвращает и позволяет задать значение, свидетельству-
ющее о состоянии флажка.
• 1, True соответствует состоянию «флажок установлен».
• 0, False соответствует состоянию «флажок сброшен».
• Null соответствует третьему состоянию флажка.
Пример
Status = DlgSample.CheckBoxl.Value
5.2.8. Комбинированное поле ComboBox
Комбинированное поле (его также называют полем со спис-
ком) представляет собой сочетание текстового поля и списка.
Пользователь может выбрать значение из списка или ввести
его с клавиатуры.
Свойства
Column (Столбец, Строка)
Обеспечивает доступ к элементу списка в заданных столб-
це и строке.
Если задан только номер столбца, то объектом доступа бу-
дет весь столбец.
Пример
DlgSample.ComboBoxl.Additem
DlgSample.ComboBoxl.Additem
DlgSample.ComboBoxl.ColumnCount = 2
DlgSample.ComboBoxl.Column(0, 0) = "Петер"
5.2. Экранная форма
243
DlgSample.ComboBoxl.Column(1, 0) = "100"
DlgSample.ComboBoxl.Column(0, 1) = "Клаус"
DlgSample.ComboBoxl.Column(1, 1) = "200"
ColumnCount
Задает количество столбцов в списке.
Пример
DlgSample.ComboBoxl.ColumnCount = 2
Drjp3uttonStyle
Задает вид значка на кнопке развертывания списка.
Пример
DlgSample.ComboBoxl.DropButtonStyle =
fmDropButtonStyleEllipsis
ListCount
Возвращает количество элементов списка (только для чте-
ния, счет с 1).
Пример
NumList = DlgSample.ComboBoxl.ListCount
244
5.2. Экранная форма
Us ((Строка, Столбец)
Обеспечивает доступ к элементу списка в заданных столб-
це и строке.
Параметры могут быть опущены, в этом случае свойство
List позволяет обратиться к списку, как таковому.
Пример
Dim MyArray(3, 2) As Variant
MyArray(0, 0) = "Петер"
MyArray(0, 1) = 100
MyArray(0, 2) = "15.10.99"
DlgSample.ComboBoxl.ColumnCount = 3
DlgSample.ComboBoxl.List = MyArrayO
MsgBox DlgSample.ComboBoxl.List (0, 1)
LisdndoK
Возвращает и позволяет задать номер выделенного эле-
мента списка.
Пример
'Выделить первый элемент
DlgSample.ComboBoxl.Listindex = 0
MitchFound
Возвращает булево значение, отражающее факт совпаде-
ния (True) или несовпадения (False) введенного в тексто-
вое поле значения с одним из элементов списка.
5.2. Экранная форма 245
Пример
If DlgSample.ComboBoxl.MatchFound Then MsgBox "O.K"
Sty/e
Задает разновидность (стиль) комбинированного поля (поле
со списком или список без возможности ввода с клавиатуры).
Пример
'Исключить возможность ввода с клавиатуры
DlgSample.ComboBoxl.Style = fmStyleDropDownList
TextAlign
Определяет режим выравнивания в текстовом поле.
Пример
'Включить правое выравнивание
DlgSample.ComboBoxl.TextAlign =
fmTextAlignRight
TvxtCalumn
Определяет номер столбца, для которого элемент выде-
ленной строки будет отображаться в текстовом поле.
Пример
DlgSample.ComboBoxl.TextColumn = 2
246
5.2. Экранная форма
Методы
AM Item [Элемент!, Номер]]
Параметр Назначение
Элемент Добавляемый в список элемент
Номер Позиция, куда следует вставить добавляемый элемент
Комментарий
Служит для включения в список нового элемента (для спис-
ков в один столбец) или новой строки (для списков, состо-
ящих из нескольких столбцов).
Пример
DlgSample.ComboBoxl.Additem "Клаус Мюллер"
Clear
Пример
DlgSample.ComboBoxl.Clear
Комментарий
Удаляет все элементы списка.
5.2. Экранная форма
247
R&moveltemfHoMep)
Параметр Назначение
Номер Порядковый номер элемента, подлежащего уда- лению
Комментарий
Служит для удаления элемента списка (или строки для спис-
ков из нескольких столбцов). Счет с 0.
Пример
'Удалить второй элемент
DlgSample.ComboBoxl.Removeitem(1)
5.2.9. Командная кнопка CommandButton
Командная кнопка (или просто кнопка) представлена объек-
том CommandButton. Ее основная задача — реагировать на
щелчок мышью вызовом процедуры, обрабатывающей это со-
бытие.
Свойства
Cancel
Переводит кнопку в режим кнопки Отмена (Cancel).
• В этом режиме кнопка реагирует на нажатие клавиши
[Esc] вне зависимости от того, на каком элементе фор-
мы находится фокус клавиатуры.
• На форме может присутствовать только одна кнопка От-
мена.
248
5.2. Экранная форма
Пример
DlgSample.CommandButtonl.Cancel = True
Picture
Определяет точечный рисунок на поверхности кнопки. Ри-
сунок не исключает наличия надписи.
Пример
'Надпись и рисунок
DlgSample.CommandButtonl.Caption = "Отмена"
DlgSample.CommandButtonl.Picture =
LoadPicture("C:\Windows\MyPic.£>mp")
PicturePosition
Определяет положение точечного рисунка на кнопке отно-
сительно надписи.
Пример
'Поместить рисунок слева от текста
DlgSample.CommandButtonl.Picture = _
LoadPicture("С:\Windows\MyPic.bmp")
DlgSample.CommandButtonl.PicturePosition =
fmPicturePositionLeftCenter
5.2.10. Рамка Frame
Рамка (группа) Frame является элементом-контейнером, ко-
торый визуально выделяет группу элементов управления, а
также «изолирует» их от формы, на которую помещена рамка.
5.2. Экранная форма
249
Это бывает необходимым, когда требуется разместить на
форме несколько независимых переключателей (групп пози-
ций переключателя).
Свойства
Picture
Определяет фоновый рисунок.
Пример
DlgSample.Framel.Picture = _
LoadPicture("С:\Windows\MyPic.bmp")
Pic tureAlignmen l
Определяет режим выравнивания фонового рисунка.
Пример
DlgSample.Framel.PictureAlignment = _
fmPictureAlignmentTopLeft
P t .reSizeMode
Определяет режим согласования размеров рисунка и рамки.
Пример
DlgSample.Framel.PictureSizeMode =
fmPictureSizeModeStretch
(gOlPfeWliW
250
5.2. Экранная форма
PictureTHing
Разрешает «размножение» рисунка по всей поверхности
рамки в случае, когда рисунок меньше рамки.
Пример
DlgSample.Framel.PictureTiling = True
SpvcialEffect
Определяет вид рамки.
Пример
DlgSample.Framel.SpecialEffeet =
fmSpecialEffectRaised
5.2.11. Рисунок Image
Точечный рисунок (графический образ) Image служит для
отображения на участке рабочей поверхности рисунка, загру-
женного из графического файла.
Свойства
Picture; "
Определяет источник рисунка.
Пример
DlgSample.Imagel.Picture = _
LoadPicture("С:\Windows\MyPic.bmp")
5.2. Экранная форма
251
Pictur&Alignm&nt >
Определяет режим выравнивания рисунка в границах эле-
мента Image.
Пример
DlgSample.Imagel.PictureAlignment = _
fmPictureAlignmentCenter
PictureSizeMixJe
Определяет режим согласования размеров рисунка и эле-
мента Image.
Пример
DlgSample.Imagel.PictureSizeMode = _
fmPictureSizeModeStretch
PictureTiling
Разрешает «размножение» рисунка по всей поверхности
рамки в случае, когда рисунок меньше элемента Image.
Пример
DlgSample.Imagel.PictureTiling = True
CpecialEffect
Определяет вид элемента Image.
(gOlPfeWliW
252
5.2. Экранная форма
Пример
DlgSample.Imagel.SpecialEffeet =
fmSpecialEffectRaised
5.2.12. Этикетка Label
Этикетка (надпись) Label используется для нанесения надпи-
сей (возможно, сопровождаемых рисунками) на рабочую по-
верхность формы. Текст надписи определяется содержимым
свойства Caption.
Picture ;
Определяет точечный рисунок на поверхности этикетки.
Пример
DlgSample.Labell.Picture = _
LoadPicture("С:\Windows\MyPic.bmp")
PicturaPa^Hion
Определяет положение точечного рисунка на этикетке от-
носительно надписи.
Пример
'Поместить рисунок слева от текста
DlgSample.Labell.PicturePosition =
fmPicturePositionLeftCenter
5.2. Экранная форма
253
T&xtAliyn
Задает режим выравнивания текста в границах этикетки.
Пример
DlgSample.Labell.TextAlign = fmTextAlignRight
5.2.13. Поле списка ListBox
Поле списка (список) ListBox служит для представления дан-
ных в форме развертывающегося списка. Пользователь мо-
жет выбрать один или несколько элементов списка, но в отли-
чие от комбинированного поля не может при этом ввести зна-
чение с клавиатуры. Элементами списка могут быть как стро-
ковые значения, так и флажки или позиции переключателя.
Свойства
Соlumn (Столбец, Строка)
Обеспечивает доступ к элементу списка в заданных столб-
це и строке.
Если задан только номер столбца, то объектом доступа бу-
дет весь столбец.
Пример
DlgSample.ListBoxl.Additem
DlgSample.ListBoxl.ColumnCount = 2
DlgSample.ListBoxl.Column(0, 0) = "Петер"
DlgSample.ListBoxl.Column(1, 0) = "100"
(gOlPfeWliW
254
5.2. Экранная форма
ColumnCount
Задает количество столбцов в списке.
Пример
DlgSample.ListBoxl.ColumnCount = 2
ListCount
Возвращает число элементов списка.
Пример
MyNum = DlgSample.ListBoxl.ListCount
Li st (Строка, Столбец)
Обеспечивает доступ к элементу списка в заданных столб-
це и строке.
Параметры могут быть опущены, в этом случае свойство
List позволяет обратиться к списку, как таковому.
Пример
Dim MyArray(3, 2) As Variant
MyArray(0, 0) = "Петер"
MyArray(0, 1) = 100
MyArray(0, 2) = "15.10.99"
DlgSample.ListBoxl.ColumnCount = 3
DlgSample.ListBoxl.List = MyArrayO
MsgBox DlgSample.ListBoxl.List (0, 1)
5.2. Экранная форма
255
ListlmJex
Возвращает и позволяет задать номер выделенного эле-
мента списка.
Пример
'Выделить первый элемент
DlgSample.ListBoxl.Listindex = О
I’UstSfyfe
Определяет вид элементов списка, позволяет заменить
«простые» строковые элементы на флажки или позиции
переключателя (в зависимости от значения свойства Mul-
tiSelect).
• В случае флажков пользователь может выделить несколь-
ко элементов.
• В случае позиций переключателя пользователь может вы-
брать только один элемент списка.
Пример
DlgSample.ListBoxl.Liststyle = fmListStyleOption
MultiStflect
Разрешает или запрещает выделение нескольких элемен-
тов списка одновременно.
Пример
DlgSample.ListBoxl.MultiSelect =
fmMultiSelectExtended
256
5.2. Экранная форма
TextGolumn
Определяет номер столбца, для которого элемент выде-
ленной строки будет отображаться в текстовом поле.
Пример
DlgSample.ListBoxl.TextColumn = 2
Методы
А<МНет((Эл&аент[, Номер]])
Параметр Назначение
Элемент Добавляемый в список элемент
Номер Позиция, куда следует вставить добавляемый элемент
Комментарий
Служит для включения в список нового элемента (для спис-
ков в один столбец) или новой строки (для списков, состо-
ящих из нескольких столбцов).
Пример
DlgSample.ListBoxl.Additem "Клаус Мюллер"
Clear i's
Комментарий
Удаляет все элементы списка.
5.2. Экранная форма
257
Пример
DlgSample.ListBoxl.Clear
Remuv-a Пот (Наше ft)
Параметр Назначение
Номер Порядковый номер элемента, подлежащего удалению
Комментарий
Служит для удаления элемента списка (или строки для
списков из нескольких столбцов). Счет с 0.
Пример
'Удалить второй элемент
DlgSample.ListBoxl.Removeitem 1
5.2.14. Переключатель OptionButton
Переключатель (позиция переключателя) OptionButton обес-
печивает возможность выбора одного элемента из несколь-
ких. Все позиции переключателя, находящиеся в одном кон-
тейнере (форме, рамке и др.), действуют, как один переклю-
чатель на несколько положений — пользователь может вы-
брать только одну из позиций внутри данного контейнера
(рамки, например).
9 1855
258
5.2. Экранная форма
Свойства
Alignment
Определяет положение надписи относительно позиции
переключателя (справа или слева).
Пример
DlgSample.OptionButtonl.Alignment =
fmAlignmentLeft
Croup Name
• * Позволяет выделить группу позиций переключателя в от-
дельный переключатель, не прибегая к рамке или иному
элементу-контейнеру. Для этого достаточно присвоить
одинаковые значения свойству GroupName всех требуе-
мых элементов.
Пример
DlgSample.OptionButtonl.GroupName = "Groupl"
DlgSample.0ptionButton2.GroupName = "Groupl"
Picture i • i. : il , '
Определяет точечный рисунок рядом с позицией переклю-
чателя. Рисунок не исключает наличия надписи.
Пример
DlgSample.OptionButtonl.Picture = _
LoadPicture("С:\Windows\MyPic.bmp")
5.2. Экранная форма
259
PicturePositian
Определяет положение точечного рисунка рядом с пози-
цией переключателя относительно надписи.
Пример
'Поместить рисунок слева от текста
DlgSample.OptionButtonl.Pictureposition =
fmPicturePositionLeftCenter
Value
Возвращает и позволяет задать значение, свидетельству-
ющее о состоянии позиции переключателя.
• 1, True соответствует состоянию «флажок установлен».
• 0, False соответствует состоянию «флажок сброшен».
• Null соответствует третьему состоянию флажка.
Пример
Status = DlgSample.OptionButtonl.Value
5.2.15. Полоса прокрутки ScrollBar
Полоса прокрутки ScrollBar предназначена для ввода число-
вых значений без помощи клавиатуры (в зависимости от по-
ложения ползунка меняется значение свойства Value). Про-
граммист может задать диапазон вводимых значений (свой-
ства Min и Мах), а также шаг изменения при перемещении
ползунка по полосе. Максимальный диапазон вводимых зна-
чений соответствует диапазону целочисленного типа Integer.
(gOlPfeWliW
260
5.2. Экранная форма
Свойства
LargeChange
Определяет шаг изменения содержимого свойства Value
при щелчках непосредственно на полосе прокрутки.
Пример
DlgSample.ScrollBarl.LargeChange = 10
ProportktnalThumti
Определяет, должен ли размер ползунка быть пропорцио-
нальным удельному размеру прокручиваемой области.
Пример
DlgSample.ScrollBarl.ProportionalThumb = True
SmallChanga
Определяет шаг изменения содержимого свойства Value
при щелчках на кнопках со стрелками в обоих концах поло-
сы прокрутки.
Пример
DlgSample.ScrollBarl.Smallchange = 1
5.2. Экранная форма
261
5.2.16. Кнопка-счетчик SpinButton
Подобно полосе прокрутки кнопка-счетчик SpinButton пред-
назначена для ввода числовых значений без помощи клавиа-
туры. Значение свойства Value (ограниченное значениями
свойств Min и Мах) меняется под действием щелчков мыши.
Максимальный диапазон вводимых значений соответствует
диапазону целочисленного типа Integer.
SmjIlCtinnge
Определяет шаг изменения содержимого свойства Value
при щелчках на кнопке-счетчике.
Пример
DlgSample.SpinButtonl.SmallChange = 1
5.2.17. Текстовое поле TextBox
Текстовое поле (его называют также просто полем) TextBox
предназначено для ввода и отображения строковых значений.
Свойства
AutaTab
Разрешает (True) или запрещает (False по умолчанию) ав-
томатический переход фокуса клавиатуры на следующий
элемент управления в случае, когда пользователь ввел
максимально разрешенное число символов.
Пример
DlgSample.TextBoxl.AutoTab = True
262
5.2. Экранная форма
CurLina
Возвращает номер строки, где находится текстовый кур-
сор (счет с 0).
Пример
StrNum = DlgSample.TextBoxl.CurLine
£ > i г rFieidBfth^vioi
Определяет поведение выделенной области при получе-
нии текстовым полем фокуса клавиатуры.
• При этом выделенным может оказаться весь текст или
только часть текста, выделенная до того, как поле поте-
ряло фокус.
Пример
'Выделить весь текст при входе в поле
DlgSample.TextBoxl.EnterFieldBehavior =
fmEnterFieldBehaviorSelectAll
Определяет поведение текстового поля при нажатии кла-
виши [Enter],
• При этом может быть вставлена новая строка (True) или
же фокус клавиатуры может быть передан следующему
элементу (False).
Пример
'При нажатии [Enter] вставить строку
DlgSample.TextBoxl.EnterKeyBehavior = True
5.2. Экранная форма
263
UneCount
Возвращает число строк в тексте.
Пример
StrNum = DlgSample.TextBoxl.LineCount
MaxLvngth
Ограничивает количество символов, которое пользователь
сможет ввести в поле.
Пример
'В поле можно ввести не более 50 символов
DlgSample.TextBoxl.MaxLength = 50
MultiLina
Разрешает (True) или запрещает (False) многострочный ре-
жим текстового поля.
Пример
'В поле можно ввести только одну строку
DlgSample.TextBoxl.MultiLine = False
PasswordChar
В случае, когда текстовое поле используется для ввода па-
роля, это свойство должно содержать символ, который бу-
дет отображаться в поле вместо символов, вводимых по-
льзователем.
264 5.2. Экранная форма
Пример
DlgSample.TextBoxl.PasswordChar =
T^xtAHgn
Определяет режим выравнивания текста в поле.
Пример
DlgSample.TextBoxl.TextAlign = fmTextAlignRight
Методы
Copy
Комментарий
Копирует выделенную область в буфер обмена Windows.
Пример
DlgSample.TextBoxl.Copy
Cut
Комментарий
Переносит выделенную область в буфер обмена Windows
(при этом содержимое выделенной области в текстовом
поле удаляется).
5.2. Экранная форма
265
Пример
DlgSample.TextBoxl.Cut
Paste
Комментарий
Вставляет содержимое буфера обмена Windows в тексто-
вое поле.
Пример
DlgSample.TextBoxl.Paste
5.2.18. Кнопка-выключатель ToggleButton
Кнопка-выключатель (ее называют также просто выключате-
лем) ToggleButton представляет собой кнопку, которая после
щелчка на ней остается «нажатой» до следующего щелчка.
Состояние кнопки отражается в содержимом ее свойства Va-
lue (True или False).
Свойства
Picture
Определяет точечный рисунок на поверхности кнопки. Ри-
сунок не исключает наличия надписи.
Пример
'Надпись и рисунок
DlgSample.ToggleButtonl.Caption = "Нажми меня!"
266
5.2. Экранная форма
DlgSample.ToggleButtonl.Picture = _
LoadPicture("C:\Windows\MyPic.bmp")
PicturePositian
Определяет положение точечного рисунка на кнопке отно-
сительно надписи.
Пример
'Поместить рисунок слева от текста
DlgSample.ToggleButtonl.Picture =
LoadPicture("С:\Windows\MyPic7bmp")
DlgSample.CommandButtonl.PicturePosition =
fmPicturePositionLeftCenter
Объект Word
Иерархическая структура Word как объекта достаточно сложна.
Полное ее описание потребовало бы отдельной книги, да и
вряд ли в таком описании есть необходимость. Мы рассмот-
рим лишь наиболее важные с практической точки зрения эле-
менты объектной модели Word.
VBA-процедуры «живут» в документах Word и способны мани-
пулировать параграфами (абзацами), предложениями и сло-
вами, обрабатывать таблицы и делать многое другое.
Чтобы воспользоваться многообразными возможностями VBA
в отношении документов Word, необходимо уметь ориентиро-
ваться в объектной модели Word.
Обзор. Структура объекта Word
268
6.1. Обзор объектной модели Word
6.1. Обзор объектной модели Word
6.1.1. Приложение
Application
Application
—j Addins (Addin)
—I AnswerWi*ard
—j KeyBinding s (KeyBinding)
—I Languages(Language)
— j Assistant j
— j AutoCaptions (AutoCaption) j
— | AutoCorrect
—J Browser
Dictionaries (Dictionary)
—1 l-an9ua9eSctt*n9s
—| ListGalleries (ListGaliery)~
—| CaptionLabels (CaptionLabel) j
— [ COMAddlns (COMAddln)
— | CommandBars (CommandBar)j
LI CommandBarControls
(CommandBarControl)
— |~Pe^u>tWeb0ptions ~ |
— | Dialogs (Dialog) j
— j Dictionaries (Dictionary)
— | Documents (Document)
— | EmailOptions ~ |
।| ListTemplates (ListTemplate) ~j
I—| ListLevels (ListLevel) ~
—| MailingLabel
I—| CustomLabels (CustomLabel) j
— FileConverters (FileConverter)j
MailMessage
NewDocument
Options
RecentFiles (RecentFile)
Selection
Spellingsuggestions
(SpellingSugestion)
Synonyminfo
System
FileSearch
FontNames
—| Tasks(Task)
— HangulHanjaConversionDictionaries
(Dictionary)
—| TaskPanes (TaskPane)
—j Templates (Template)
—j KeysBoundTo (KeyBinding)
—| Windows (Window)
6.1. Обзор объектной модели Word 269
Объект Назначение
Application Приложение, корневой объект иерархии
Addin Надстройка Addin
Answer - Wizard Мастер AnswerWizard
Assistant Помощник Office
AutoCaption Автотекст (элемент списка автотекста)
AutoCorrect Автозамена (элемент списка автозамены)
Browser Кнопка Выбор объекта перехода на полосе про- крутки справа
Caption Label Надпись-название (см. диалог Вставка / Назва- ние)
COMAddln COM-надстройка в приложении
CommandBar Панель инструментов или панель меню
DefaultWeb- Options Глобальные атрибуты открытия/сохранения Web-страницы
Dialog Диалог Word
Dictionary Словарь (грамматики, правописания, тезаурус и др.)
Document Документ Word
Emailoptions Глобальные атрибуты создания/изменения сооб- щения электронной почты
FileConverter Конвертор файлов
FileSearch Диалог Открытие документа
FontNames Список всех установленных в системе шрифтов
HangulHanja- Conversion- Dictionary Словарь преобразования хангыль-ханджа
(gOlPfeWliW
270
6.1. Обзор объектной модели Word
Объект Назначение
KeyBinding Определенные пользователем сочетания клавиш
KeysBoundTo Коллекция объектов типа KeyBinding
Language Определяет правила форматирования и проверки текста в соответствии с языком
Language- Settings Установка языка в приложении
ListGallery Шаблоны представления списков (доступны в диалоге Формат / Список)
MailingLabel Наклейка (см. диалог Сервис / Конверты и на- клейки)
MailMessage Сообщение электронной почты, сформированное Word
NewDocu- ment Документ на панели Создание документа в об- ласти задач Word
Options Набор параметров документа или приложения
RecentFile Файл из списка недавно открытых файлов
Selection Выделенная область
SpellingSug- gestion Представляет подсказку по правописанию для ошибочных слов
Synonyminfo Подсказка о синонимах
System Содержит сведения о системе
Task Выполняющаяся программа
TaskPane Панель в области задач
Template Шаблон
Window Окно приложения или документа
6.1. Обзор объектной модели Word 271
AutoCorrect
AutoCorrect
AutoCorrectEntries (AutoCorrectEntry)
— FirstLetterExceptions (FirstLetterException)
—j TwolnitialCapsExceptions (TwolnitialCapsException)
Объект Назначение
AutoCorrect Автозамена (элемент списка автозамены)
I AutoCorrectEntries | (AutoCorrectEntry) Элемент автозамены
FirstLetterExceptions (FirstLetterException) Аббревиатура, исключенная из сферы действия автозамены
TwolnitialCapsExcep- tions (TwolnitialCap- sException) Слово, начинающееся с двух заглавных букв, исключенное из сферы действия ав - тозамены
Languages
Application
Languages (Language)
Dictionaries (Dictionary)
Объект Назначение
Language Определяет правила форматирования и проверки текста в соответствии с языком
Dictionary Словарь
272 6.1. Обзор объектной модели Word
ListGalleries
ListGalleries (ListGallery)
ListTemplates (ListTemplate)
— ListLevels (ListLevel)
Объект Назначение
ListGallery Шаблоны представления списков (доступны в диалоге формат / Список)
ListTemplate Один шаблон из объекта ListGallery
ListLevel Уровень вложенности в наборе шаблонов пред- ставления списков
Templates
6.1. Обзор объектной модели Word 273
Объект Назначение
Template Шаблон документа
AutoTextEntry Элемент списка автотекста (см. вкладку Ав- тотекст диалога Сервис / Автозамена)
Document Документ
Documentproperty Содержит сведения о документе (заголовок, автор и т. д.)
ListTemplate Один из шаблонов представления списков
MailingLabel
Application
MailingLabel
CustomLabels (CustomLabel)
Объект Назначение
MailingLabel Наклейка (см. диалог Сервис / Конверты и на- клейки)
CustomLabel Наклейка, определяемая пользователем
274 6.1. Обзор объектной модели Word
Windows
Windows (Window)
Document
— Panes (Pane)
Selection
View
Объект Назначение
Window Окно документа
Pane Разделительная панель
Docu- ment Документ
Selection Выделенная в окне область
View Обеспечивает доступ к параметрам просмотра
6.1. Обзор объектной модели Word
275
6.1.2. Документ
Document
Documents (Document)
Illi ±_LJ LJ I I LJ_J_ Bookmarks (Bookmark) LJ LJ LJ_U L Paragraphs (Paragraph)
Characters (Range) ProofreadingErrors (Range)
CommandBars (CommandBar; Range
Comments (Comment) Readability Statistics (ReadabilityStatistic)
. .. .
Documentproperties (Documentproperty) Revisions (Revision)
Email RoutingSlip
Endnotes (Endnote) Scripts (Script)
Envelope Sections (Section)
Fields (Field) Sentences (Range)
Footnotes (Footnote) Shapes(Shape)
FormFietds (FormField) Story Ranges (Range)
Frames (Frame) Styles (Style)
FrameSet Subdocuments (Subdocument)
HTMLProject Tables (Table)
- TablesOf Authorities
Hyperlinks (Hyperlink)
Hyperlinks (Hyperlink) - TablesOfAuthor ItiesCategories
Indexes (Index) TableOf Contents
InlineShapes (InlineShape) TableOfFIgures
LetterContent Template
Li st Paragraphs (Paragraph) Variables (Variable)
Lists (List) Versions (Version)
ListTemplates (ListTemplate) WebOptions
MailMerge Windows (Window)
PageSetup Words (Range)
276
6.1. Обзор объектной модели Word
Объект Назначение
Document Собственно документ
Bookmark Закладка
Characters Коллекция Range-объектов
CommandBar Панель инструментов или меню
Comment Примечание
Document- Property Сведения о документе
Email Сообщение электронной почты
Endnote Примечание в конце документа (концевая сноска)
Envelope Конверт
Field Поле ввода, вставленное в текст
Footnote Примечание в конце страницы (сноска)
Form Field Элемент управления, вставленный в текст
Frame Рамка (группа)
FrameSet Страница рамок или рамка на странице рамок
Hyperlink Гиперссылка
HTMLProject Проект HTML
Index Указатель (см. диалог Вставка / Оглавление и указатели)
InlineShape Рисунок, OLE-объект или ActiveX-элемент, вставленный в текст на правах символа
LetterContent Элемент письма
ListParagraphs Коллекция объектов типа Paragraph
List Формат списка
(gOlPfeWliW
6.1. Обзор объектной модели Word
277
Объект Назначение
ListTemplate Шаблон списка из объекта ListGallery
MailMerge Обеспечивает доступ к функциям, связанным с подготовкой серии писем
PageSetup Обеспечивает доступ к параметрам страницы
Paragraph Параграф (абзац) текста
Proofreading- Errors Коллекция Range-объектов, указывающих на грамматические и орфографические ошибки в тексте документа
Range Непрерывный фрагмент текста
Readability- Statistic Содержит статистические сведения о тексте (статистика удобочитаемости)
Revision Исправление в тексте документа
RoutingSlip Маршрут для отправки сообщения электронной почты
Section Раздел текста
Sentences Коллекция Range-объектов, ссылающаяся на все предложения текста (абзаца, секции)
Script HTML-скрипт
Shape Фигура
StoryRanges Коллекция Range-объектов, ссылающаяся на структурные компоненты текста
Style Стиль (встроенный или определенный пользо- вателем)
Subdocument Вложенный документ
Table Таблица
TableOf- Authorities Таблица ссылок (см. вкладку Таблица ссылок диалога Вставка / Ссылка / Оглавление и указатели)
278
6.1. Обзор объектной модели Word
Объект Назначение
TableOf- Authorities- Categories Разновидности ссылок
TableOf- Contents Оглавление (см. вкладку Оглавление диалога Вставка / Оглавление и указатели)
TableOfFigures Список иллюстраций (см. вкладку Список ил- люстраций диалога Вставка / Оглавление и указатели)
Template Шаблон
Variable Переменная документа
Version Версия документа
WebOptions Web-параметры открытия/сохранения докумен- тов
Window Окно документа
Words Коллекция Range-объектов, ссылающихся на все слова документа
FormFields
6.1. Обзор объектной модели Word
279
Объект Назначение |
FormField Элемент управления, помещенный на документ
CheckBox Поле флажка
DropDown Развертывающийся список
Range Непрерывный фрагмент текста
Textinput Текстовое поле ввода
Lists
Lists (List)
ListParagraphs (Paragraph)
---1 Range
Объект Назначение
List Формат списка
ListParagraph Коллекция объектов типа Paragraph
Paragraph Абзац (параграф)
Range Непрерывный фрагмент текста
ListTemplates
280 6.1. Обзор объектной модели Word
Объект Назначение
ListTem plate Шаблон представления списка
ListLevel Уровень представления списка
Font Шрифт
InlineShape Объект в тексте
MailMerge
Documents (Document)
MailMerge
MailMergeDataSource
MailMergeDataFields (MailMergeDataField)
Объект Назначение
MailMerge Обеспечивает доступ к функциям, свя- занным с подготовкой серии писем
Mail MergeDataSource Источник данных в операциях, связанных с подготовкой серии писем
MailMergeDataField Поле в источнике данных
PageSetup
PageSetup
LineNumbering
TextColumns (Textcolumn)
6.1. Обзор объектной модели Word
281
Объект Назначение
PageSetup Обеспечивает доступ к параметрам страницы
LineNumbering Номера строк текста
TextColumn Колонка
Styles
| Styles (Style)
—| Frame"
—| ParagraphForma?
Объект Назначение
Style Стиль, встроенный или определенный пользователем
Border Стиль границ объекта (см. диалог Формат / Гра- ницы и заливка)
Font Обеспечивает доступ к параметрам шрифта
Frame Рамка
ListTemplate Шаблон представления списков
Paragraph- Format Форматирование параграфа (абзаца)
Shading Обеспечивает доступ к параметрам штриховки полей
282
6.1. Обзор объектной модели Word
6.1.3. Текст
Selection
Selection
— AutoTextEntry HTMLDivisions
Bookmarks (Bookmark) Hyperlinks (Hyperlink)
Borders (Border) InlineShapes (InlineShape)
- Cells (Cell) PageSetup
Characters (Range) ParagraphFormat
Columns (Column) Paragraphs (Paragraph)
Comments (Comment) — Revision
Document Range
-J End notes (End note) Rows (Row)
Fields (Field) Sections (Section)
Find Sentences (Range)
Font Shading
Footnotes (Footnote) ShapeRange (Shape)
FormFields (FormField) SmartTags
Frames (Frame) —
— . Tables (Table)
HeaderFooter Words (Range)
6.1. Обзор объектной модели Word 283
Объект Назначение
AutoTextEntry Элемент автотекста
Selection Выделенная область
Bookmark Закладка
Border Стиль границ объекта (см. диалог Формат / Границы и заливка)
Cell Ячейка таблицы
Characters Коллекция Range-объектов, ссылающихся на все символы текста
Column Столбец таблицы
Comment Примечание
Document Собственно документ
Endnote Примечание в конце документа (концевая сно- ска)
Field Поле ввода, вставленное в текст
Find Обеспечивает доступ к функциям поиска
Font Обеспечивает доступ к параметрам шрифта
Footnote Примечание в конце страницы (сноска)
FormField Элемент управления, вставленный в текст
Frame Рамка (группа)
HeaderFooter Колонтитул (верхний или нижний)
HTMLDivision Раздел HTML в документе
Hyperlink Гиперссылка
InlineShape Рисунок, OLE-объект или ActiveX-элемент, вставленный в текст на правах символа
PageSetup Обеспечивает доступ к параметрам страницы
284 6.1. Обзор объектной модели Word
Объект Назначение
Paragraph - Format Форматирование параграфа (абзаца)
Paragraph Абзац (параграф)
Revision Исправление в тексте документа
Range Непрерывный фрагмент текста
Row Строка таблицы
Section Раздел текста
Sentences Коллекция Range-объектов, ссылающаяся на все предложения текста (абзаца, секции)
Shading Обеспечивает доступ к параметрам штриховки полей
ShapeRange Коллекция объектов типа Shape
SmartTag Смарт-таг 1
Table Таблица
Words Коллекция Range-объектов, ссылающихся на все слова документа
6.1. Обзор объектной модели Word 285
Range
286
6.1. Обзор объектной модели Word
Объект Назначение
Range Непрерывный фрагмент текста
Bookmark Закладка
Border Стиль границ объекта (см. диалог Формат / Границы и заливка)
Cell Ячейка таблицы
Characters Коллекция Range-объектов, ссылающихся на все символы текста
Column Столбец таблицы
Comment Примечание
Endnote Примечание в конце документа (концевая сноска)
Field Поле ввода, вставленное в текст
Find Обеспечивает доступ к функциям поиска
Font Обеспечивает доступ к параметрам шрифта
Footnote Примечание в конце страницы (сноска)
FormField Элемент управления, вставленный в текст
Frame Рамка
Hyperlink Гиперссылка
InlineShape Рисунок, OLE-объект или ActiveX-элемент, вставленный в текст на правах символа
List Format Параметры форматирования списков
ListParagraphs Коллекция объектов типа Paragraph
PageSetup Обеспечивает доступ к параметрам страницы
Paragraph- Format Форматирование параграфа (абзаца)
Paragraph Абзац (параграф)
6.1. Обзор объектной модели Word 287
Объект Назначение
Readability- Statistic Содержит статистические сведения о тексте (статистика удобочитаемости)
Revision Исправление в тексте документа
Row Строка таблицы
Script HTML-скрипт
Section Раздел текста
Sentences Коллекция Range-объектов, ссылающаяся на все предложения текста (абзаца, секции)
Shading Обеспечивает доступ к параметрам штриховки
ShapeRange Коллекция объектов типа Shape
Shape Фигура
Proofreading- Errors Коллекция Range-объектов, указывающих на । грамматические и орфографические ошибки в тексте документа
Subdocument Вложенный документ
Synonym Info Подсказка о синонимах
Table Таблица
TextRetrieval- Mode Объект, определяющий режимы доступа к тек- сту со стороны Range-объектов
Words Коллекция Range-объектов, ссылающихся на все слова документа
288 6.1. Обзор объектной модели Word
Paragraphs
Paragraphs (Paragraph)
Borders (Border)
DropCap
ParagraphFormat
Range
Shading
TabStops (TabStop)
Объект Назначение
Paragraph Абзац (параграф)
Border Стиль границ объекта (см. диалог Формат / Границы и заливка)
DropCap Буквица (большая буква в начале абзаца)
ParagraphFormat Форматирование параграфа (абзаца)
Range Непрерывный фрагмент текста
Shading Обеспечивает доступ к параметрам штриховки
Tabstop Позиция табуляции
6.1. Обзор объектной модели Word
289
Sections
Sections (Section)
Borders
HeadersFooters
Range
PageSetup
Объект Назначение
Section Раздел текста
Borders Стиль границ объекта (см. диалог формат / Границы и заливка)
Headers- Footers Колонтитулы
PageSetup Обеспечивает доступ к параметрам страницы
Range Непрерывный фрагмент текста
ListFormat
10 1855
290 6.1. Обзор объектной модели Word
Объект Назначение
ListFormat Параметры форматирования списков
List Формат списка
ListTemplate Шаблон представления списка
Find
Find
Font
Frame
Paragraph Format
Replacement
Объект Назначение
Find Обеспечивает доступ к функциям поиска
Font Обеспечивает доступ к параметрам шрифта
Frame Рамка
ParagraphFormat Форматирование параграфа (абзаца)
Replacement Обеспечивает доступ к параметрам поиска с заменой (см. диалог Правка / Заменить)
6.1. Обзор объектной модели Word 291
6.1.4. Таблица
Tables
Tables (Table)
---- Borders (Border)
--- Cells (Cell)
--- Columns (Column)
--- Range
--- Rows (Row)
--- Shading
Объект Назначение
Table Таблица
Border Стиль границ объекта (см. диалог Формат / Грани- цы и заливка)
Cell Ячейка таблицы
Column Столбец таблицы
Range Непрерывный фрагмент текста
Row Строка таблицы
Shading Обеспечивает доступ к параметрам штриховки
292 6.1. Обзор объектной модели Word
Rows
Rows (Row)
Borders (Border)
Cells (Cell)
Range
Shading
Объект Назначение
Row Строка таблицы
Border Стиль границ объекта (см. диалог Формат / Гра- ницы и заливка)
Cell Ячейка таблицы
Range Непрерывный фрагмент текста
Shading Обеспечивает доступ к параметрам штриховки
Columns
6.1. Обзор объектной модели Word
293
Объект Назначение
Column Столбец таблицы.
Border Стиль границ объекта (см. диалог Формат / Грани- цы и заливка)
Cell Ячейка таблицы
Shading Обеспечивает доступ к параметрам штриховки
Cells
Cells (Cell)
Borders (Border)
Row
Range
Column
Shading
Объект Назначение
Cell Ячейка таблицы
Border Стиль границ объекта (см. диалог Формат / Грани- цы и заливка)
Column Столбец таблицы
Range Непрерывный фрагмент текста
Row Строка таблицы
Shading Обеспечивает доступ к параметрам штриховки
294
6.2. Объект Application
6.2. Объект Application
Объект Application представляет приложение Word в целом. Его
свойства и методы возвращают объекты, занимающие наибо-
лее высокий уровень в иерархии объектной модели Word. Речь
тут может идти о документах, элементах среды, выводе на пе-
чать, завершении работы приложения и тому подобном.
Примечания
Объект Application находится в вершине иерархической
структуры объектов Word.
И Многие (но не все) свойства и методы объекта Application
являются глобальными и не требуют при обращении иден-
тификатора Application.
6.2.1. События
Событие Описание
DocumentBefore- Close Происходит непосредственно перед за- крытием открытого документа
DocumentBeforePrint Происходит непосредственно перед печа- тью документа
DocumentBeforeSave Происходит непосредственно перед сохра - нением документа
Documentchange Создан новый документ, открыт существу- ющий документ или текущим стал другой документ
DocumentOpen Происходит в момент открытия документа
NewDocument Происходит в момент создания документа
Quit Word завершает свою работу
WindowActivate Происходит в момент активизации окна документа
6.2. Объект Application
295
Событие Описание
WindowBefore- DoubleClick Происходит в момент двойного щелчка в области редактирования окна документа (перед событием двойного щелчка)
WindowBeforeRight- Click Происходит в момент щелчка правой кнопкой мыши в области редактирования окна документа (перед событием щелчка правой кнопкой)
Window Deactivate Происходит в момент деактивизации окна документа
WindowSelection- Change Происходит в момент изменения области выделения
6.2.2. Свойства
АсГйдеЭздш/гют t
Возвращает текущий документ.
Пример
'Сохранить текущий документ
ActiveDocument.Save
ActivifPrintfir
Возвращает имя текущего принтера.
Пример
'Сообщить имя текущего принтера
MsgBox ActivePrinter
296
6.2. Объект Application
ActiveWini/jw
Возвращает текущее окно.
Пример
'Максимизировать текущее окно
ActiveWindow.Windowstate = wdWindowStateMaximize
AutoCorrect
Объект, обеспечивающий доступ к списку автозамены.
Пример
'Сообщить первый элемент списка автозамены
With AutoCorrect.Entries(1)
MsgBox .Name & " - ” & .Value
End With
BacbgtXHinciPrintingStatus_______ '**&' . '' k
Возвращает число заданий в очереди фоновой печати.
• При завершении работы приложения должно иметь зна-
чение 0.
Пример
'Сообщить число заданий печати
MsgBox BackgroundPrintingStatus
6.2. Объект Application
297
Browser
Объект, обеспечивающий доступ к кнопке Выбор объекта
перехода на полосе прокрутки в окне документа справа.
Пример
'Перейти к предыдущей сноске
With Application.Browser
.Target = wdBrowseFootnote
.Previous
End With
Build
Возвращает полный номер версии приложения Word.
Пример
'Сообщить номер текущей версии
MsgBox Application.Build
Cafition
И Возвращает и позволяет задать титульную строку окна
приложения Word.
Пример
'Задать титульную строку
Application.Caption = "Моя собственная программа"
298
6.2. Объект Application
'Очистить титульную строку
Application.Caption = ""
Cti&ckL3ngu3g&
Возвращает и позволяет задать режим автоматического
распознавания языка фрагмента.
Пример
'Включить режим автораспознавания языка
Application.CheckLanguage = True
Gummar^Ban; „...,v ,;
Коллекция панелей инструментов и меню.
Пример
'Включить режим "Крупные значки"
CommandBars.LargeButtons = True
O/atogs .? ?. x a
Возвращает коллекцию диалогов Word.
• Объект позволяет получить доступ к любому из диалогов
Word.
• Подлежащие вводу с помощью конкретного диалога
данные могут быть заданы через свойства соответству-
ющего объекта.
6.2. Объект Application
299
Пример
'Открыть диалог "Вставка файла"
With Dialogs(wdDialoglnsertFile)
.Name = "*.doc"
. Show
End With
DmplayAutuCumple'teTips
Включает (True) и выключает (False) автоматическое за-
вершение слов.
Пример
'Выключить автоматическое завершение слов
DisplayAutoCompleteTips = False
DisplayScrcenTips
Включает (True) и выключает (False) всплывающую под-
сказку.
Пример
'Выключить всплывающую подсказку
DisplayScreenTips = False
DisplayScrpllBars
И Включает (True) и выключает (False) отображение полос
прокрутки.
300 6.2. Объект Application
Пример
'Убрать полосы прокрутки
Application.DisplayScrollBars = False
DisplayStatusBar' г
Включает (True) и выключает (False) отображение строки
состояния.
Пример
'Убрать строку состояния
Application.DisplayStatusBar = False
Oocuments
Возвращает коллекцию всех открытых документов.
Пример
'Закрыть первый документ
Documents(1).Close
FuntNames
Возвращает список установленных в системе шрифтов.
Пример
Dim FList As String
'Составить список имен всех шрифтов
6.2. Объект Application
301
For I = 1 То FontNames.Count
FList = FList & FontNames(I) & vbCr
Next
ActiveDocument.Range.InsertBefore FList
Language
Возвращает язык интерфейса.
Пример
If Application.Language = _
msoLanguagelDEnglishUS Then
MsgBox _
"Язык интерфейса - U.S. English.”
Else
MsgBox _
"Язык интерфейса - не U.S. English."
End If
flame
Возвращает имя программы.
Пример
MsgBox Application.Name
NormaHemplate 1 ~ ‘
Обеспечивает доступ к шаблону стиля Normal (Обычный).
302
6.2. Объект Application
Пример
'Сообщить путь к файлу шаблона Normal
MsgBox NormalTemplate.Path
Options
Обеспечивает доступ к диалогу Параметры.
Пример
'Поднять флажок "Разрешить перетаскивание
'текста при правке"
Options.AllowDragAndDrop = True
Содержит полное имя файла приложения.
Пример
'Сообщить полное имя файла приложения
MsgBox Application.Path
SyreenUpJating
Разрешает (True) или запрещает (False) обновление экра-
на при выполнении процедуры VBA (макроса).
Пример
Application.Screenupdating = False
6.2. Объект Application
303
Se/acCZun
Обеспечивает доступ к выделенной области.
Пример
'Скопировать выделенную область в буфер обмена
Selection.Сору
SturtupPath
Возвращает и позволяет задать полное имя стартового ка-
талога приложения.
Пример
MsgBox Application.StartupPath
StutusBar
Определяет текст в строке состояния (только для записи).
Пример
Application.StatusBar = _
"Производится открытие файла, ждите..."
Sy. tan
Обеспечивает доступ к сведениям о системе.
304
6.2. Объект Application
Пример
'Сообщить название операционной системы
MsgBox System.OperatingSystem
Tusks
Возвращает коллекцию объектов, содержащих сведения о
всех выполняющихся программах.
Пример
'Сообщить имена всех выполняющихся программ
For I = 1 То Tasks.Count
MsgBox Tasks(I).Name
Next
Templates
Возвращает коллекцию шаблонов.
Пример
'Сообщить имя первого шаблона
MsgBox Templates(1).Name
UserControl
Возвращает булево значение True в случае, когда прило-
жение запущено или открыто пользователем, и False, если
это было сделано программой.
6.2. Объект Application 305
Пример
If Application.UserControl Then
'Интерфейс с пользователем возможен
End If
User Name
Возвращает и позволяет задать имя пользователя.
Пример
MsgBox Application.UserName
Miaa^State
Определяет состояние окна приложения.
Пример
'Максимизировать текущее окно
ActiveWindow.Windowstate = _
wdWindowStateMaximize
6.2.3. Методы
df№ckSp&lling(Crp<iKa, СлоаарггПпльзаааталя,
ИгнорироаатьРегмстр, ГлавныйСлааарь,
Сл<>варьПользоаат&ля2 СлаварьПальзбаателяЮ)
306
6.2. Объект Application
Комментарий
Проверяет заданную строку символов, возвращает значе-
ние True, если ошибок не обнаружено, и False в противном
случае.
• Обязателен только первый параметр, все остальные мо-
гут быть опущены — в этом случае будут использованы
значения по умолчанию.
Параметр Назначение
Строка Строковое значение — подлежащий проверке текст
СловарьПользователя Имя файла словаря или объект типа Dictionary
ИгнорироватьРегистр Значение True влечет игнорирование регистра символов - различия меж- ду малыми и большими литерами делаться не будет
ГлавныйСловарь Имя файла словаря или объект типа Dictionary
СловарьПользователя2 - Имя файла словаря или объект типа Dictionary
СловарьПользователяЮ Можно задать до 9 дополнительных словарей
Пример
1 Проверить текст первого раздела документа
If Not Checkspelling _
(ActiveDocument.Sections(1).Range) Then
MsgBox "Обнаружена ошибка!"
End If
6.2. Объект Application
307
CtaanStrinif (Строка) *
Параметр Назначение
Строка Строка, подлежащая преобразованию
Комментарий
Возвращает строку, полученную удалением из заданного
строкового значения всех непечатаемых символов, а так-
же специальных символов Word. Некоторые из символов
исключаются, другие будут заменены на пробелы.
• Полученная строка представляет собой «чистый» текст и
может быть использована для вывода в текстовый файл.
• Это преобразование бывает необходимым также при эк-
спорте текста в базу данных.
Пример
Dim ExpStr As String
ExpStr = CleanString(ActiveDocument.Range)
LiatCommands(BceKoManpKi)
Параметр Назначение
ВсеКоманды Булево выражение, определяющее, должна ли идти речь о всех командах Word (True) или то- лько о пользовательских (False)
Комментарий
Создает новый документ и вставляет в него таблицу
команд Word и назначенных им сочетаний клавиш и пунк-
тов меню.
308
6.2. Объект Application
Пример
Application.Listcommands True
Printout (Фоновая Печать, ПннатьВКонацФайла,
ДиапазонПечати, ИмяФайла, От, До, О&ьектПечати,
ЧислоКопий, НомераСтрзниц, Страницы,
ПечатьВФзйл, РазобратьПоКопиям, ФайлДокументы)
Параметр Назначение
ФоноваяПечать Значение True — разрешить печать в фоно- вом режиме
ПечатьВКонец- Файла Значение True — разрешить присоединение к существующему файлу (в случае печати в файл)
Диапазон Печати Константа, определяющая диапазон печати — весь документ, текущая страница и т.д
ИмяФайла Имя файла (в случае печати в файл)
От Начальная страница (в случае, когда пара- метр ДиапазонПечати получил значение wdPrintFromTo)
До Конечная страница (в случае, когда параметр ДиапазонПечати получил значение wdPrintF- romTo)
ОбъектПечати Константа, определяющая объект печати - текст, примечания, стиль и т. д.
ЧислоКопий Число копий
НомераСтраниц Строка, описывающая номера страниц, под- лежащих выводу на печать. Например, зна- чения «2, 5, 7-9» соответствуют 2, 5, 7, 8, 9 страницам
®Ы1Р(б№®[^
6.2. Объект Application
309
Параметр Назначение
Страницы Константа, определяющая вид страниц для печати (четные, нечетные, все)
ПечатьВФайл Значение True разрешает печать в файл
Разобрать- ПоКопиям (Для случая печати нескольких копий) Значе- ние True соответствует печати копий целыми документами. False — печати копий постра- нично
ФайлДокумента Полное имя файла документа (если пара - метр опущен, печатается текущий открытый документ)
Комментарий
Служит для вывода на печать текущего документа или до-
кумента в файле.
Если существует открытый документ, то следует вызывать
его метод Printout (см. 6.5), если же ни один документ не от-
крыт, то нужно пользоваться методом объекта Application.
Возможен вывод как на принтер, так и в файл.
Пример
Application.Printout True,
, , , , "2, 3-5"
"myprn.prn",
. ОиЩСахранитъИзм&нения, Фо^ауСахранени*.
Комментарий
Завершает выполнение программы.
(gOlPfeWliW
310
6.2. Объект Application
Параметр Назначение
СохранитьИзменения Константа, определяющая тип сохране- ния изменений в документах
ФорматСохранения Константа, определяющая формат сохра - нения документов, созданных не в Word
ПоМаршруту Булево значение, разрешающее (True) отправку документа по маршруту
Пример
'Закрыть приложение, сохранив все открытые файлы
Application.Quit wdSaveChanges
Scra&nRafranh
Комментарий
Обновляет (перерисовывает) изображение на экране.
• Используется в случаях, когда Screenupdating = False
Пример
'Запретить автоматическое обновление экрана
Application.Screenupdating = False
'Работаем, выполняются массовые операции
ActiveDocument.Sections(1).Range.InsertBefore "Текст"
'Экран пока не перерисовывается
MsgBox "На экране ничего не изменилось"
'Пора увидеть вставленный текст
Application.ScreenRefresh
63. Единицы измерения и их преобразование
311
6.3. Единицы измерения и их преобразование
Word способен оперировать разнообразными единицами из-
мерения. Для преобразования величин из одной системы в
другую существует ряд специальных функций (все они явля-
ются методами объекта Application). Ниже приведены наибо-
лее употребляемые в среде Word единицы измерения и функ-
ции для их преобразования.
Милли- метр Санти- метр Дюйм Строка Пика Пункт
Милли- метр 1.00 0.10 0.04 0.24 0.24 2.83
Санти- метр 10.00 1.00 0.39 2.36 2.36 28.35
Дюйм 25.44 2.54 1.00 6.00 6.00 72.00
Строка 4.24 0.42 0.17 1.00 1.00 12.00
Пика 4.24 0.42 0.17 1.00 1.00 12.00
Пункт 0.35 0.04 0.01 0.08 0.08 1.00
Обзор. Функции преобразования единиц измерения
CeintimetersTc>PQints(CaHrnMvTpM)
InChesTePoiutsfДюймы)
LlnesToPointsfCrpOKH)
Millinie-tc rs TaPaints(MnniwM^Tpbi)
PicaaTpPuintsfnHKH)
PainteTp&rntimvtersf Пункты)
312
6.4. Параметры среды Word
Puin Is Т <з1псЬ&з(Пункты)
PointsToLinftsfriyHKTw)
PjintaToMillime ters(nynKTbi)
P’jint-jToPic'ixfnyHKTM) *. _________У:-.. .
6.4. Параметры среды Word
Объект Options полностью эквивалентен диалогу Парамет-
ры (меню Сервис). Все параметры среды Word, доступные в
диалогеПараметры, доступны также в форме свойств объек-
та Options.
6.4.1. Свойства
AlluwOragAndDrup
Разрешает (True) перетаскивание текста при правке.
Пример
'Разрешить перетаскивание
Options.AllowDragAndDrop = True
AllawFatstSavv
Разрешает (True) быстрое сохранение.
Пример
'Разрешить быстрое сохранение
Options.AllowFastSave = True
6.4. Параметры среды Word
313
tfmate&F^nMovem&nts
Разрешает (True) анимацию указателя мыши и текстового
курсора.
Пример
'Запретить анимацию указателя мыши
Options.AnimateScreenMovements = False
BackgroundSave
Ж Разрешает (Тrue) сохранение файлов в фоновом режиме.
Пример
'Разрешить сохранение в фоновом режиме
Options.BackgroundSave = True
BlucScreen
H Включает (True) режим «белый текст на синем фоне».
Пример
'Белый текст на синем фоне
Options.BlueScreen = True
[CheckQrammarAa YauType
Разрешает (True) автоматически проверять грамматику
при вводе текста.
314
6.4. Параметры среды Word
Пример
'Автоматически проверять грамматику
Options.CheckGrammarAsYouType = True
ChbckGratnmetrWilhSpalling
Разрешает (True) автоматически проверять грамматику
при проверке орфографии.
Пример
'Проверять грамматику и орфографию
Options.CheckGrammarWithSpelling = True
ChbckSpellingAsYuuTypi
Разрешает (True) автоматически проверять орфографию
при вводе текста.
Пример
'Автоматически проверять орфографию
Options.CheckSpellingAsYouType = True
ConfirntCiWneirbions
Разрешает (True) запрашивать подтверждение преобра-
зований.
Пример
Options.ConfirmConversions = True
(gOlPOMW
6.4. Параметры среды Word
315
BefaultBanfarCulur
Позволяет проанализировать/задать цвет рамки по умол-
чанию.
Пример
Options.DefaultBorderColor = wdColorTeal
EnatdeSaund
Разрешает (True) звуковое сопровождение событий.
Пример
'Запретить звук
Options.EnableSound = False
Ignur&lnt&rn&tAndfileAiJiJreases ». j»
Разрешает (True) пропускать адреса Internet и имена фай-
лов при проверке правописания.
Пример
'Игнорировать адреса
Options.IgnorelnternetAndFileAddresses = True
IgnorcUpperCase
Разрешает (True) игнорировать регистр символов при
проверке орфографии.
316
6.4. Параметры среды Word
Пример
'Игнорировать регистр
Options.IgnoreUpperCase = True
Measur^mentUnit • ,?=- • -pV"
Определяет единицу измерения.
Пример
Options.Measurementunit = wdCentimeters 'сантиметры
Options.Measurementunit = wdlnches 'дюймы
Options.Measurementunit = wdPoints 'пункты
Overtype
Возвращает значение True, если включен режим замены
символов при вводе, и False для режима вставки.
Пример
If Options.Overtype Then
End If
Pagination
Разрешает (True) фоновую разбивку на страницы.
Пример
'Фоновая разбивка
Options.Pagination = True
6.4. Параметры среды Word
317
PrintBackground
Разрешает (True) печать в фоновом режиме.
Пример
'Печать в фоновом режиме
Options.PrintBackground = True
RefflaceStilectitan
Разрешает (True) заменять выделенный фрагмент при вво-
де или вставке.
Пример
'Заменять выделенный фрагмент
Options.ReplaceSelection = True
Savelnterval
Интервал (в минутах) для автосохранения.
Пример
'Автоматически сохранять документ каждые 10 минут
Options.Savelnterval = 10
UpdatiiFieldisAtPrint
Разрешает (True) обновлять поля при печати.
318 6.5. Доступ к документам — объект Document
Пример
1 Обновлять ПОЛЯ
Options.UpdateFieldsAtPrint = True
Updu te-UnksA tOfMn
Разрешает (True) автоматически обновлять связи при от-
крытии документа.
Пример
'Обновлять связи при открытии документа
Options.UpdateLinksAtOpen = True
6.5. Доступ к документам — объект
Document
Роль объекта Document в среде Word трудно переоценить.
С помощью его многочисленных свойств, методов и событий
VBA-программа может делать с документами Word практичес-
ки все.
Обзор. Документ
Создание нового документа так же, как и открытие суще-
ствующего, производится с помощью методов коллекции
Documents.
Каждый объект типа Document соответствует одному от-
крытому файлу документа.
Каждому открытому документу автоматически присваива-
ется ссылка на шаблон.
При открытии документа открывается соответствующий
шаблон.
6.5. Доступ к документам — объект Document
319
Макросы (процедуры VBA) могут быть вызваны как из до-
кументов, так и из шаблонов.
Документ, где размещается некоторый макрос (процедура
VBA), имеет с точки зрения VBA стандартное имя: ThisDo-
cument.
6.5.1. События
В отношении документов и шаблонов VBA распознает три
основных события: создание нового, открытие существующе-
го и его закрытие.
Процедура. Создание процедуры-обработчика события
1. В окне проекта выполните двойной щелчок на элементе
ThisDocument.
2. В окне программы выберите нужное событие, развернув
список в правом верхнем углу.
3. Введите программный код в созданную автоматически за-
готовку процедуры.
Событие Описание
New Происходит при создании нового документа
Open Происходит при открытии существующего документа
Close Происходит при закрытии ранее открытого или со- зданного документа
6.5.2. Свойства
AaUveThet'r&
Возвращает имя темы документа.
320
6.5. Доступ к документам — объект Document
Пример
' Вывести тему активного документа
MsgBox ActiveDocument.ActiveTheme
Activ&Windaw
Возвращает окно (объект типа Window), принадлежащее
документу.
Пример
'Максимизировать окно первого документа
Documents(1).ActiveWindow.Windowstate =
wdWindowStateMaximize
AttaahadT&mplate -«У**» i-
Возвращает шаблон (объекттипаТетр1а1е), присоединен-
ный к документу.
Пример
'Сообщить имя текущего шаблона
MsgBox Documents(1).AttachedTemplate.Name
'Задать новый шаблон
Documents(1).AttachedTemplate = _
"С:\MS0ffice\Template\l.dot"
AutoHyph&nation
Разрешает (True) автоматический перенос.
6.5. Доступ к документам — объект Document 321
Пример
'Автоматический перенос
MyDoc.AutoHyphenation = True
Background
Определяет фон (задний план) документа.
• Роль фона может играть фоновый цвет или рисунок.
Пример
'Задать цвет фона
ActiveWindow.View.Type = wdOnlineView
With MyDoc.Background.Fill
.TwoColorGradient msoGradientHorizontal, 1
.ForeColor = RGB(192, 192, 192)
.BackColor = RGB(255, 255, 255)
End With
'Загрузить фоновый рисунок
MyDoc.Backgroud.Fill.UserTextured _
"C:\Windows\My.bmp"
Bookmarks
Содержит коллекцию закладок, имеющихся в документе.
Пример
'Перейти к 5-й закладке
MyDoc.Bookmarks(5).Select
'Перейти к закладке "MyBookmark"
MyDoc.Bookmarks("MyBookmark").Select
11 1855
322
6.5. Доступ к документам — объект Document
Characters
Содержит коллекцию Range-объектов, ссылающихся на все
символы документа.
• Это свойство дает возможность обратиться к любому сим-
волу в документе.
• Каждый символ представлен при этом Range-объектом.
Пример
'Перейти в конец документа
MyDoc.Characters.Last.Select
Content
Возвращает главный структурный компонент документа
(текст документа без сносок, примечаний и т.п.).
Пример
1 Скопировать текст документа в буфер обмена
MyDoc.Content.Copy
'Вставить текст в конец документа
MyDoc.Content.InsertAfter "Новый текст"
Count
Возвращает число открытых документов (свойство кол-
лекции Documents).
6.5. Доступ к документам — объект Document 323
Пример
'Сообщить число открытых документов
MsgBox "Открыто " & Documents.Count &
" документов"
J^fauitTabStop
Определяет расстояние (в пунктах) между позициями та-
буляции в документе.
Пример
'Установить расстояние между позициями
'табуляции: 2 см.
MyDoc.DefaultTabStop = CentimetersToPoints(2)
EmbedTrueTypeFc-nts
Разрешает (True) или запрещает (False) внедрение шриф-
тов TrueType в сохраняемый документ.
Пример
'Внедрить шрифты TrueType в документ
MyDoc.EmbedTrueTypeFonts = True
Endnutes
Возвращает коллекцию всех концевых сносок, имеющихся
в документе.
М Удаление элемента коллекции влечет удаление как самой
сноски, так и соответствующего ей номера в тексте.
324 6.5. Доступ к документам — объект Document
Пример
'Удалить четвертую концевую сноску
MyDoc.Endnotes(4).Delete
-ields
Содержит коллекцию всех полей, вставленных в документ.
Пример
'Обновить ПОЛЯ
MyDoc.Fields.Update
Footnotes
Возвращает коллекцию всех сносок внизу страницы, име-
ющихся в документе.
Удаление элемента коллекции влечет удаление как самой
сноски, так и соответствующего ей номера в тексте.
Пример
'Вставить новую сноску в текущей позиции
MyDoc.Footnotes.Add Selection.Range, ,
"Моя сноска"
FullN.ime
Содержит полное имя файла.
6.5. Доступ к документам — объект Document
325
Пример
'Сообщить имя файла
MsgBox MyDoc.FullName
GrammarChecked
Возвращает булево значение True, если выполнялась про-
верка грамматики и после этого в документ не были внесе-
ны изменения (False в противном случае).
Пример
'Если проверка грамматики не выполнялась,
'то выполнить
If Not MyDoc.GrammarChecked Then
MyDoc.CheckGrammar
End If
Grammatical Errors
Возвращает коллекцию ProofreadingErrors, содержащую
все предложения, где были обнаружены ошибки при про-
верке грамматики.
Пример
'Сообщить все ошибочные предложения
'в первом абзаце
Set myErrors = _
ActiveDocument.Paragraphs(1).Range.
GrammaticalErrors
326
6.5. Доступ к документам — объект Document
For Each myerr In myErrors
MsgBox myerr.Text
Next myerr
Hyperlinks__________________________________
Возвращает коллекцию, содержащую все гиперссылки в
документе.
Пример
'Перейти по первой гиперссылке
' (с открытием нового окна)
MyDoc.Hyperlinks(1).Follow True
widexes
Содержит коллекцию всех указателей в документе.
• Для создания нового указателя используют метод Add
коллекции Indexes, а для создания нового элемента ука-
зателя — ее же метод MarkEntry.
Пример
'Создать элемент указателя
MyDoc.Indexes.MarkEntry Selection.Range,
Selection.Range.Text
MailMerge
Содержит одноименный объект, обеспечивающий доступ
к функциям, связанным с подготовкой серии писем.
6.5. Доступ к документам — объект Document
327
Пример
MyDoc.MailMerge.Execute
Name
Имя файла.
• Только для чтения.
Пример
1 Сообщить имя файла
MsgBox MyDoc.Name
PageSetup
Возвращает объект PageSetup, обеспечивающий доступ к
параметрам страницы.
Пример
'Установить верхнее поле равным 4.5 см.
MyDoc.PageSetup.TopMargin = _
CentimetersToPoints(4.5)
Paragraphs '
Возвращает коллекцию, содержащую все абзацы (параг-
рафы) документа.
328
6.5. Доступ к документам — объект Document
Пример
'Во втором абзаце установить левый
'отступ равным 3 см.
MyDoc.Paragraphs(2).Leftindent = _
CentimetersToPoints(3)
Path
Полное имя каталога, где содержится файл документа.
Пример
'Сообщить имя каталога
MsgBox MyDoc.Path
ReaJOnly
Возвращает значение True, если сохранение изменений в
документе запрещено, и False в противном случае.
Пример
If MyDoc.Readonly Then
MsgBox "Документ только для чтения"
End If
Saved
Ж Флаг, свидетельствующий о том, что документ был сохра-
нен и после этого не изменялся (True).
МЯИИ
6.5. Доступ к документам — объект Document
329
Пример
'Если несохраненных изменений в документе нет,
' то закрыть
If MyDoc.Saved Then
MyDoc.Close
End if
SaveFormsOnto
Булево значение, определяющее, что введенные в поля
формы данные должны (True) сохраняться в виде записей
с символом Tab в качестве разделителя.
Пример
'Сохранять данные в виде записей
MyDoc.SaveFormsData = True
Sections
Возвращает коллекцию, содержащую все разделы доку-
мента.
Пример
'Задать колонтитул для первого раздела
MyDoc.Sections(1).Headers( _
wdHeaderFooterFirstPage).Range = "Глава 1"
ззо
6.5. Доступ к документам — объект Document
Sentences
Ж Возвращает коллекцию, содержащую все предложения до-
кумента.
Пример
'Вставить заданную строку после первого
'предложения
MyDoc.Sentences(1).InsertAfter "Новый текст"
ShowGratnmaticalErrws
Разрешает (True) выделять грамматические ошибки вол-
нистой линией.
Пример
MyDoc.ShowGrammaticalErrors = True
Sh&wSpeliingEiror?.
Разрешает (True) выделять орфографические ошибки под-
черкиванием.
Пример
MyDoc.ShowSpellingErrors = False
SpeHingCheckaci
Возвращает булево значение True, если выполнялась про-
верка орфографии и после этого в документ не были вне-
сены изменения (False в противном случае).
6.5. Доступ к документам — объект Document
331
Пример
'Если проверка орфографии не выполнялась,
'то выполнить
If Not MyDoc.SpellingChecked Then
MyDoc.Checkspelling
End If
SjJulhngErrors
Возвращает коллекцию, содержащую все слова, где были
обнаружены ошибки при проверке орфографии.
Пример
'Сообщить все ошибочные предложения
'в первом абзаце
Set myErrors = _
ActiveDocument.Paragraphs(1).Range.
SpellingErrors
For Each myerr In myErrors
MsgBox myerr.Text
Next myerr
StoryR^nges
Содержит одноименную коллекцию, обеспечивающую до-
ступ к структурным компонентам текста.
• Возвращает объект типа Range.
• Требуемый компонент задается с помощью константы.
332
6.5. Доступ к документам — объект Document
Пример
'Установить шрифт для основного текста
MyDoc.StoryRanges(wdMainTextStory).FontName =
"Arial"
'Выделить жирным нижний колонтитул 1-й страницы
MyDoc.StoryRanges( _
wdFirstPageFooterStory).Bold = True
Styles
Возвращает одноименную коллекцию, содержащую все сти-
ли документа.
Пример
'Определить новый стиль
MyDoc.Styles-Add "NewStyle",
wdStyleTypeParagraph
. at
Возвращает одноименную коллекцию, содержащую все таб-
лицы в документе.
Пример
'Добавить таблицу
MyDoc.Tables.Add MyDoc.Content, 3, 2
6.5. Доступ к документам — объект Document
333
Variables
Возвращает одноименную коллекцию, содержащую все
переменные документа.
Пример
'Создать новую переменную
MyDoc.Variables.Add "LastNr", 15
'Получить значение переменной
OldNr = MyDoc.Variables("LastNr")
Window?
Возвращает одноименную коллекцию, содержащую все
открытые окна.
Пример
'Сделать текущим второе окно
MyDoc.Windows(2).Activate
Words
Возвращает одноименную коллекцию, содержащую все
слова документа.
Пример
'Сообщить число слов в документе
MsgBox "Текст состоит из " & _
MyDoc.Words.Count & " слов"
334
6.5. Доступ к документам — объект Document
6.5.3. Методы
Activate
Комментарий
Делает окно документа текущим.
Пример
MyDoc.Activate
| АбсЦШаблон, НовыйШаблон)
Параметр Назначение
Шаблон Имя шаблона, который должен быть использо- ван при создании документа
НовыйШаблон Логическое значение, указывающее, должен ли быть создан новый документ (False по умолча- нию) или шаблон (True)
Комментарий
Служит для создания нового документа или шаблона.
• Окно вновь созданного документа становится текущим.
• Если метод вызван без параметров, будет создан пус-
той документ с использованием шаблона стиля Normal
(Обычный).
Пример
Dim MyDoc As Document
6.5. Доступ к документам — объект Document
335
Set MyDoc = Documents.Add
Set MyDoc = _
Documents.Add("C:\MSOfficeTemplates\My.dot")
Арр1уТЬсте(Ими)
Параметр Назначение
Имя Имя темы, которая должна использоваться при оформлении документа
Комментарий
Применяет тему оформления к документу.
Пример
ActiveDocument.ApplyTheme "artsy 100"
ChuckGrammar
Комментарий
Осуществляет проверку орфографии и грамматики.
Обнаружив ошибку, открывает диалог Правописание.
Пример
MyDoc.CheckGrammar
336 6.5. Доступ к документам — объект Document
''heckSpe'ling
Комментарий
Осуществляет проверку орфографии.
Обнаружив ошибку, открывает диалог Правописание.
Пример
MyDoc.Checkspelling
С1о§е(СохранитьИзменения, ФорматСохраненья.
ПоМаршруту)
Параметр Назначение
СохранитьИзменения Константа, определяющая тип сохранения изменений в документе
ФорматСохранения Константа, определяющая формат сохра- нения документов, созданных не в Word
ПоМаршруту Булево значение, разрешающее (True) отправку документа по маршруту
Комментарий
Как метод объекта Document закрывает документ и со-
храняет изменения в файле.
Как метод коллекции Documents закрывает все докумен-
ты и сохраняет изменения в файлах.
6.5. Доступ к документам — объект Document
337
Пример
'Закрыть документ без сохранения
MyDoc.Close wdDoNotSaveChanges
'Закрыть все документы с сохранением
'по подтверждению
Documents.Close wdPromptToSaveChanges
ClosePrintPreview
Комментарий
Выключает режим Предварительный просмотр и возвра-
щает документ в предыдущий режим просмотра.
е Если режим Предварительный просмотр не был вклю-
чен, произойдет ошибка выполнения.
Пример
'Выключить предварительный просмотр
If ActiveWindow.View.Type = wdPrintPreview Then
MyDoc.ClosePrintPreview
End If
DataForm
Комментарий
Открывает диалог Форма данных, облегчающий ввод дан-
ных в таблицы.
338 6.5. Доступ к документам — объект Document
Пример
'Открыть окно диалога "Форма данных"
MyDoc.DataForm
| DvtbctLanyuagti
Комментарий
Позволяет автоматически распознать язык документа.
Результат распознавания языка (идентификатор языка)
метод DetectLanguage заносит в свойство LanguagelD.
Если для документа язык уже распознавался, то свойство
LanguageDetected имеет значение True. Для повторного
распознавания языка следует сначала присвоить этому
свойству значение False.
Пример
With ActiveDocument
If .LanguageDetected = True Then
x = MsgBox _
("Этот документ уже анализировался" &
"Хотите повторить распознавание языка"
& "снова?", vbYesNo)
If х = vbYes Then
.LanguageDetected = False
.DetectLanguage
End If
Else
.DetectLanguage
End If
If .Range.LanguagelD = wdRussian Then
MsgBox _
"В документе используется русский язык."
Else
6.5. Доступ к документам — объект Document
339
MsgBox "В документе используется язык,” &
" отличный от русского."
End If
End With
FollowHyperlink(Aapec, СубАдрес, HobooQumo,
ИеторияМаршрупт, ДопИнформацея, Метод,
Заголовок)
Параметр Назначение
Адрес Путь к документу, на который указывает гиперссылка
СубАдрес Определяет требуемые данные внутри до- кумента
НовоеОкно True, если необходимо открыто новое окно для документа, загружаемого по ссылке (по умолчанию — False)
ИсторияМаршрута Зарезервирован для будущих применений
Допйнформация Дополнительная информация для HTTP
Метод Определяет метод обработки дополнитель - ной информации
Заголовок Строка, описывающая заголовок НТТР-за- проса
Комментарий
Открывает или загружает, а затем открывает документ, на
который указывает гиперссылка.
Гиперссылка определяется URL-адресом.
Если требуется открыть новое окно, то будет использован
штатный для системы Web-браузер.
• Все параметры, кроме первого, необязательны.
340
6.5. Доступ к документам — объект Document
Пример
'Загрузить страницу с SQLWeb-сервера
MyDoc.FollowHyperlink "http://SQLWeb/Му.asp",
, True
GoTo(Bn^(Jui акта, ВицДаступа. Номер, Имя)
Параметр Назначение
ВидОбъекта Константа, определяющая вид объекта (страница, закладка, сноска и т. д.)
ВидДоступа Константа, определяющая вид доступа к объекту (к первому, следующему, последнему и т. д.)
Номер Порядковый номер объекта в документе
Имя Имя объекта, если он им обладает
Комментарий
Возвращает Range-объект, указывающий местоположе-
ние искомого объекта в документе.
Не влияет на положение текстового курсора.
Пример
'Получить 3-ю страницу документа
ActiveDocument.GoTo wdGoToPage, wdGoToAbsolute, 3
'Перейти на 5 страниц вперед от текущей
ActiveDocument.GoTo wdGoToPage, wdGoToRelative, 5
'Получить 2-ю таблицу
ActiveDocument.GoTo wdGoToTable,
wdGoToAbsolute, 2
6.5. Доступ к документам — объект Document
341
'Получить закладку с именем "Закладка1"
ActiveDocument.GoTo wdGoToBookMark, , ,
"Закладка!"
'Перейти к следующей закладке
ActiveDocument.GoTo wdGoToBookmark, wdGoToNext
Ореп(ИмяФайлз; ПодаерждатьПр&ибразование,
ТолькоДляЧтения, ДобэвитьВСпнсок,
ПарольДокументаО, ПарольШэблонаО, УжеОткрыт,
ПаральДакум'днтаЗ, ПаряльШаОлонаЗ, Формат}
Параметр Назначение
ИмяФайла Имя файла, подлежащего открытию
ПодверждатьПре- образование Открывать (True) диалог Преобразование файла в случае, если открывается не доку- мент Word
ТолькоДляЧтения Открывать файл в режиме «только для чтения» (True)
ДобавитьВСписок Включить открытый файл в «список фай - лов, открытых последними» (True)
ПарольДокументаО Пароль для открытия документа
ПарольШаблонаО Пароль для открытия шаблона
УжеОткрыт Если документ уже открыт, то: True - от- крыть заново. False - сделать текущим уже открытый
П а рол ь Доку ментаЗ Пароль для сохранения документа
ПарольШаблонаЗ Пароль для сохранения шаблона
Формат Константа, определяющая программу пре- образования файла
342
6.5. Доступ к документам — объект Document
Комментарий
Метод коллекции Documents. Открывает файл и делает его
текущим документом.
• Имя файла должно быть полным.
• Все остальные параметры необязательны.
Пример
Dim MyDoc As Document
Set MyDoc = Documents.Open("С:\MyDocl.doc")
Documents.Open "C:\MyDocl.doc"
Documents.Open "C:\MyDocl.doc", , , ,
"МойПароль"
РппЮиЦФоноааяПечать, ПечатъЗКонецФайла,
ДиапазонПечати, ИмяФайла, От, До, ОбъектПечати,
ЧислоКопий, НомераСтраниц, Страницы,
ПечатьВФайл, РазобратьПоКопиям, ФайлДокум&нта)
Комментарий
Выводит документ на печать.
Возможен вывод как на принтер, так и в файл.
Пример
'Напечатать документ
MyDoc.Printout
'Напечатать страницы
MyDoc.Printout True,
с 3-й по 5-ю
,,,,,,, "3-5"
6.5. Доступ к документам — объект Document
343
Параметр Назначение
ФоноваяПечать Значение True - разрешить печать в фо- новом режиме
ПечатьВКонецФайла Значение True — разрешить присоедине- ние к существующему файлу (в случае печати в файл)
ДиапазонПечати Константа, определяющая диапазон печа- ти - весь документ, текущая страница и т.д.
ИмяФайла Имя файла (в случае печати в файл)
От Начальная страница (в случае, когда па- раметр ДиапазонПечати получил значе- ние wdPrintFromTo)
До Конечная страница (в случае, когда пара- метр ДиапазонПечати получил значение wdPrintFromTo)
ОбъектПечати Константа, определяющая объект печати — текст, примечания, стиль и т. д.
ЧислоКопий Число копий
НомераСтраниц Строка, описывающая номера страниц, подлежащих выводу на печать. Напри- мер, значение «2, 5, 7-9» соответствует 2, 5, 7, 8, 9 страницам
Страницы Константа, определяющая вид страниц для печати (четные, нечетные, все)
ПечатьВФайл Значение True разрешает печать в файл
Разобрать ПоКопиям (Для случая печати нескольких копий) Значение True соответствует печати копий целыми документами. False соответствует печати копии постранично
ФайлДокумента Полное имя файла документа (если пара - метр опущен, печатается текущий откры - тый документ)
344
6.5. Доступ к документам — объект Document
PrintPreview
Комментарий
Переключает режимы просмотра в «предварительный про-
смотр» и обратно.
Пример
MyDoc.PrintPreview
Protect (ТипЗащиты СбросПолей, Пароле,)
Параметр Назначение
ТипЗащиты Константа, определяющая тип защиты документа
СбросПолей Сохранять (True) значения полей, если документ защищен
Пароль Пароль для снятия защиты с документа
Комментарий
Защищает документ от изменений.
Пример
'Разрешить изменение только полей формы
MyDoc.Protect wdAllowOnlyFormFields, True,
"мой пароль"
6.5. Доступ к документам — объект Document 345
Яапде(ПераыйСимаол, ПиследнийСимаил)
Параметр Назначение
ПервыйСимвол Первый символ требуемого фрагмента
ПоследнийСимвол Последний символ требуемого фрагмента
Комментарий
Возвращает заданный фрагмент текста, как Range-объект.
• Требуемый фрагмент задается номерами первого и по-
следнего символов (счет с О).
• Метод учитывает все символы, включая служебные и
скрытые.
Пример
'Выделить жирным символы с 10 по 20
MyDoc.Range(10, 20)-Bold = True
Save
Комментарий
Сохраняет документ под собственным именем.
• При первом вызове метода будет открыт диалог Сохра-
нение документа.
Пример
MyDoc.Save
346
6.5. Доступ к документам — объект Document
5ауеА$(ИмяФайла, ФорматФайла, Примечании,
Пароль, ДобавмтьВСписок, ПаральЗ.
ТалькоДляЧгения, ВнедритьШрифты,
ФорматГрафики, СохранитьПоля}
Параметр Назначение
ИмяФайла Имя файла, в котором необходимо сохра- нить документ
ФорматФайла Константа, определяющая формат сохране- ния файла
Примечания Блокировать (True) примечания
Пароль Пароль для открытия файла
ДобавитьВСписок Включить сохраняемый файл в «список фай - лов, открытых последними» (True)
ПарольЗ Пароль для сохранения изменений в доку- менте
ТолькоДляЧтения Рекомендовать (True) пользователю открыть файл в режиме «только для чтения»
ВнедритьШрифты Внедрить шрифты TrueType в сохраняемый документ
ФорматГрафики Для случая графики, импортированной из других систем: True соответствует сохране- нию исходного формата
Сохранить Поля Сохранить (True) значения полей формы
Комментарий
Сохраняет документ в файле с заданным именем.
• Метод должен быть использован при первом сохранении
файла — это позволит задать имя файла и параметры.
6.5. Доступ к документам — объект Document 347
Пример
MyDoc.SaveAs "C:\MyDocl"
'Сохранить файл в формате RTF
MyDoc.SaveAs "C:\MyDocl", wdFormatRTF
SendFax(A^itec, Тама)
Параметр Назначение
Адрес Строка, содержащая телефонный номер
Тема Строка, описывающая тему сообщения
Комментарий
Отправляет документ в форме факсимильного сообщения
по заданному телефонному номеру.
• Операция производится в фоновом режиме.
Пример
MyDoc.SendFax "2244221", "Ответ на Ваш 154/а"
SendMaH
Комментарий
Позволяет отправить документ в форме сообщения элект-
ронной почты.
348 6.5. Доступ к документам — объект Document
Пример
MyDoc.SendMail
UnP.otectfflapcx ь)
Параметр Назначение
Пароль Пароль для снятия защиты
Комментарий
Позволяет снять с документа защиту от изменений.
• Верхний и нижний регистры в строке пароля различаются.
Пример
MyDoc.UnProtect "мой пароль"
WebPagePreview
Комментарий
Позволяет выполнить предварительный просмотр докумен-
та в таком виде, какой он приобретет, будучи сохранен как
Web-документ.
Пример
ActiveDocument.WebPagePreview
6.6. Раздел документа — объект Section 349
6.6. Раздел документа — объект Section
Документ может состоять из нескольких разделов, каждый из
которых при этом будет представлен объектом Section. Все
разделы документа (все объекты Section) собраны в коллек-
ции Sections.
Обзор.
Каждый документ содержит по меньшей мере один раздел.
В каждом разделе могут использоваться самостоятельные
нумерация и форматирование страниц, сносок и т. д.
6.6.1. Свойства коллекции Sections
Count
Возвращает число разделов в документе.
Пример
MsgBox MyDoc.Sections.Count
First
Возвращает первый раздел в форме Section-объекта.
Пример
'Установить верхнее поле на страницах
'первого раздела: 5 см.
MyDoc.Sections.First.PageSetup.TopMargin =
CentimetersToPoints(5)
350
6.6. Раздел документа — объект Section
Last
Возвращает последний раздел в форме Section-объекта.
Пример
'Установить нижнее поле на страницах
'последнего раздела: 5 см.
MyDoc.Sections.Last.PageSetup.BottomMargin =
CentimetersToPoints(5)
PagtfS&tup
Возвращает одноименный объект, служащий для установ-
ки параметров страницы.
Пример
'Задать левое и правое поля страницы
'для всех разделов
With MyDoc.Sections.PageSetup
.LeftMargin = CentimetersToPoints(3)
.RightMargin = CentimetersToPoints (2.5)
End With
6.6.2. Свойства объекта Section
Borders
Возвращает коллекцию объектов типа Border, определяю-
щих вид границ.
Пример
'Выделить синим границы страниц первого раздела
MyDoc.Sections.First.Borders.OutsideColorIndex = _
wdBlue
6.6. Раздел документа — объект Section
351
Footers
И Возвращает коллекцию HeadersFooters, содержащую ниж-
ние колонтитулы раздела.
Пример
'Задать нижний колонтитул 1-й страницы
'1-го раздела
MyDoc.Sections.First.Footers(
wdHeaderFooterFirstPage).Range =
"Предисловие"
Headers
Возвращает коллекцию HeadersFooters, содержащую верх-
ние колонтитулы раздела.
Пример
'Задать верхний колонтитул 1-й страницы
'1-го раздела
MyDoc.Sections.First.Headers( _
wdHeaderFooterFirstPage).Range = _
"Предисловие"
PratectedFerForms
Запрещает (True) ввод данных с помощью форм в преде-
лах раздела.
Пример
If MyDoc.Sections(1).ProtectedForForms Then
MsgBox "Ввод невозможен!"
End If
(gOlPfeWliW
352
6.6. Раздел документа — объект Section
Range
Возвращает текст раздела в форме Range-объекта.
Пример
'Поместить текст первого раздела в буфер обмена
MyDoc.Sections.First.Range.Copy
6.6.3. Методы
*ddi ОбъектДо, ТипРазпыва)
Параметр Назначение
ОбъектДо Range-объект, указывающий структурную едини - цу текста, перед которой должен быть вставлен разрыв раздела (по умолчанию — в конец доку- мента)
ТипРазрыва Константа, определяющая тип разрыва раздела
Комментарий
Вставляет в документ новый раздел (разрыв раздела).
Пример
'Новый раздел в конце документа
MyDoc.Sections.Add , wdSectionEvenPage
6.7. Колонтитулы — объект HeaderFooters
353
6.7. Колонтитулы — объект HeaderFooters
Колонтитулы (верхние и нижние) можно определить для каж-
дого раздела отдельно. Кроме того, можно раздельно задать
колонтитулы для первой страницы раздела, для четных и не-
четных страниц.
6.7.1. Свойства
Е sis
Возвращает булево значение True, если указанный колон-
титул существует (и False в противном случае).
Пример
'Если верхний колонтитул для четных страниц
'1-го раздела существует, то сообщить
If MyDoc.Sections.First.Headers( _
wdHeaderFooterEvenPages).Exists Then
MsgBox "Верхний колонтитул существует"
End If
'Если нижний колонтитул для четных страниц
'1-го раздела существует, то сообщить
If MyDoc.Sections.First.Footers(
wdHeaderFooterEvenPages).Exists Then
MsgBox "Нижний колонтитул существует"
End If
Link T&Prvviouat
Возвращает и позволяет задать булево значение, опреде-
ляющее (True), что указанный колонтитул связан с колон-
титулом в предыдущем разделе (в этом случае их содер-
жимое будет идентичным).
12 1855
354
6.8. Абзацы (параграфы) — объект Paragraph
Пример
'Связать колонтитул с колонтитулом
'предыдущего раздела
MyDoc.Sections(2).Headers(
wdHeaderFooterEvenPage).LinkToPrevious =
True
Range ' '
Возвращает текст указанного колонтитула.
Пример
MyDoc.Sections(2).Headers(
wdHeaderFooterEvenPage).Range.Copy
6.8. Абзацы (параграфы) — объект
Paragraph
Любой текст состоит по меньшей мере из одного абзаца (па-
раграфа). Все абзацы текста, содержащегося в документе,
доступны для VBA-программы посредством коллекции Parag-
raphs, которая состоит, в свою очередь, из объектов Para-
graph.
Обзор
Абзацы нумеруются последовательно и непрерывно.
Пустые абзацы также участвуют в нумерации.
Новый абзац можно создать с помощью коллекции Parag-
raphs.
6.8. Абзацы (параграфы) — объект Paragraph
355
Пример
Процедура, исходный код которой приведен ниже, генерирует
документ-заготовку для составления распорядка дня. Пункты
распорядка снабжены комментариями, при этом попутно про-
демонстрированы некоторые приемы форматирования абза-
цев.
Sub DemoProc()
Dim ThePar As Paragraph
Dim DT As String
Dim I As Integer
Dim J As Integer
'Создать новый документ
Documents.Add
For I = 1 To 5
DT = DT + "Пункт " & CStr(I) & vbTab &
"и т.д. и т.п." & vbCr
For J = 1 To 5
DT = DT + " Комментарий к пункту распорядка;"
Next
DT = DT & vbCr
Next
ActiveDocument.Range = DT
'Форматировать все абзацы
For Each ThePar In ActiveDocument.Paragraphs
'Пункт или комментарий?
If Left(ThePar.Range, 5) = "Пункт" Then
With ThePar
.SpaceBefore = 14
.SpaceAfter = 6
.Leftindent = CentimetersToPoints(2)
.FirstLinelndent = CentimetersToPoints(-2)
.KeepWithNext = True
.Range.Font.Bold = True
.Range.Font.Size = 14
End With
(gOlPfeWliW
356 6.8. Абзацы (параграфы) — объект Paragraph
Else
With ThePar
.Leftindent = CentimetersToPoints(2)
.Range.Font.Size = 12
End With
End If
Next
End Sub
6.8.1. Свойства
Alignment
Определяет режим выравнивания в абзаце.
Пример
'Задать для третьего абзаца правое выравнивание
MyDoc.Paragraphs(1).Alignment = _
wdAlignParagraphRight
Borders
Возвращает коллекцию объектов типа Border, определяю-
щих вид границ абзацев.
Пример
'Заключить первый абзац в рамку стиля "3D"
MyDoc.Paragraphs(1).Borders.OutsideLineStyle=
wdLineSyleEmboss3D
6.8. Абзацы (параграфы) — объект Paragraph
357
Count
Возвращает число абзацев в документе (для коллекции
Paragraphs).
Пример
Dim Num As Long
Dim Par As Paragraph
Num = 0
For Each Par In MyDoc.Paragraphs
If Len(Par.Range) 1 Then
Num = Num + 1
End If
Next
MsgBox "Из " & MyDoc.Paragraphs.Count & _
" абзацев ” & Num & " содержат текст."
Буквица (большая буква в начале абзаца).
Пример
'Перевести первый символ первого абзаца
'в режим буквицы
MyDoc.Paragraphs.First.DropCap.Enable
First '•
Возвращает первый абзац документа (для коллекции Pa-
ragraphs).
• С таким же успехом можно воспользоваться выражени-
ем Paragraphs! 1).
358
6.8. Абзацы (параграфы) — объект Paragraph
Пример
'Задать для первого абзаца правое выравнивание
MyDoc.Paragraphs.First.Alignment = _
wdAlignParagraphRight
Firs t Line Indent
Определяет отступ первой строки абзаца в пунктах.
• Положительные значения определяют отступ первой стро-
ки абзаца.
• Отрицательные значения используются для задания от-
ступа висячих строк.
Пример
'Отступ висячей строки: 1.25 см.
MyDoc.Paragraphs(1).FirstLinelndent =
CentimetersToPoints(-1.25)
Format
Возвращает объект типа ParagraphFormat, служащий для
форматирования абзаца.
• Форматирование абзаца можно осуществлять копиро-
ванием объекта типа ParagraphFormat.
Пример
'Создать формат
Dim ParForm As New ParagraphFormat
With ParForm
.Alignment = wdAlignParagraphCenter
6.8. Абзацы (параграфы) — объект Paragraph
359
.KeepWithNext = True
.SpaceAfter = 18
End With
'Отформатировать первый абзац
MyDoc.Paragraphs(1).Format = ParForm
Hyphenation
Включает (True) или исключает (False) абзац из сферы дей-
ствия автоматического переноса.
Пример
'Запретить автоперенос в первом абзаце
MyDoc.Paragraphs(1).Hyphenation = False
KvepTogether
Запрещает (True) вставлять разрыв страницы в пределах
указанного абзаца при разбивке на страницы. Соответст-
вует флажку не разрывать абзац вкладки Положение на
странице диалога Формат / Абзац.
Пример
'Разрешить разрыв страницы
MyDoc.Paragraphs(1).KeepTogether = False
[Ke&pWithN&xt
Определяет (True), что указанный абзац при разбивке на
страницы должен в любом случае оказаться на одной
странице со следующим. Соответствует флажку не отры-
вать от следующего вкладки Положение на странице
диалога Формат / Абзац.
360 6.8. Абзацы (параграфы) — объект Paragraph
Пример
'Следующий абзац на той же странице
MyDoc.Paragraphs(1).KeepWithNext = True
Last
Возвращает последний абзац (для коллекции Paragraphs).
Пример
'Вставить текст после последнего абзаца
MyDoc.Paragraphs.Last.Range.InsertAfter
"Какой-то текст"
Leftfiictent
Определяет левый отступ в пунктах.
Пример
'Установить отступ для второго абзаца
'равным 3 см.
MyDoc.Paragraphs(2).Leftindent = _
CentimetersToPoints(3)
lutlit,eLevel
Определяет уровень абзаца в документе (имеет значение
только для режима просмотра Вид / Структура).
6.8. Абзацы (параграфы) — объект Paragraph 361
Пример
'5-й абзац на 2-й уровень
MyDoc.Paragraphs(5).OutlineLevel =
wd0utlineLeve!2
PageBreakBefore
Определяет (True), что абзац должен начинаться с новой
страницы. Соответствует флажку с новой страницы вклад-
ки Положение на странице диалога Формат / Абзац.
Пример
'С новой страницы
MyDoc.Paragraphs(2).PageBreakBefore = True
Range
Возвращает текст абзаца в форме Range-объекта..
Пример
'Выделить первый абзац жирным
MyDoc.Paragraphs(1).Range.Bold = True
Rightindent
Определяет правый отступ в пунктах.
(gOlPfeWliW
362
6.8. Абзацы (параграфы) — объект Paragraph
Пример
'Установить отступ для второго абзаца
'равным 3 см.
MyDoc.Paragraphs(2).Rightindent = _
CentimetersToPoints(3)
Shjdintj
Возвращает одноименный объект, обеспечивающий до-
ступ к параметрам штриховки.
Пример
'Штриховка 15%
MyDoc.Paragraphs(1).Shading.Texture =
wdTexturel5Percent
CpaceAfte
I Определяет интервал после абзаца в пунктах. Соответст-
вует счетчику после вкладки Отступы и интервалы диа-
лога Формат / Абзац.
Пример
'Установить интервал после 1-го абзаца равным
'24 пунктам
MyDoc.Paragraphs(1).SpaceAfter = 24
6.8. Абзацы (параграфы) — объект Paragraph
363
Spac&Btffore
Определяет интервал перед абзацем в пунктах. Соответ-
ствует счетчику Перед вкладки Отступы и Интервалы
диалога Формат / Абзац.
Пример
'Установить интервал перед 1-м абзацем
'равным 24 пункта
MyDoc.Paragraphs(1).SpaceBefore = 24
Style
Содержит имя стиля, назначенного для абзаца.
Пример
'Задать стиль 1-го абзаца - заголовок
MyDoc.Paragraphs(1).Style = "Заголовок 1"
TabStups
Возвращает одноименную коллекцию, содержащую все
позиции табуляции в абзаце.
Пример
'Добавить позицию табуляции через
'2 см. с выравниванием по центру
MyDoc.Paragraphs(1).Tabstops.Add _
CentimetersToPoints(2) , wdAlignTabCenter
364
6.8. Абзацы (параграфы) — объект Paragraph
6.8.2. Методы
АдсЦОбъектДо)
Параметр Назначение
ОбъектДо Range-объект, указывающий на объект, перед ко- торым должен быть вставлен новый абзац (по умолчанию - в конец)
Комментарий
Создает новый (пустой) параграф (для коллекции Parag-
raphs).
Пример
'Новый параграф перед выделенной областью
MyDoc.Paragraphs.Add Selection
OutlineDemote
Комментарий
Переводит абзац на следующий уровень вложенности в
структуре документа.
Пример
MyDoc.Paragraphs(1).OutlineDemote
6.8. Абзацы (параграфы) — объект Paragraph
365
CutHneCemoteToBody
Комментарий
Переводит абзац на уровень основного текста заданием
стиля «Normal».
Пример
MyDoc.Paragraphs(1).OutlineDemoteToBody
ОиШг. (Promote
Комментарий
Переводит абзац на предыдущий уровень вложенности в
структуре документа.
Пример
MyDoc.Paragraphs(1).OutlinePromote
4ese*
Комментарий
Удаляет все следы ручного форматирования из абзаца.
Не влияет на параметры форматирования, определенные
заданным стилем.
366 6.9. Предложения — коллекция Sentences
Пример
'Вернуть абзац к первоначальному виду
MyDoc.Paragraphs(1).Reset
6.9. Предложения — коллекция Sentences
Все предложения текста можно рассматривать в форме набо-
ра Range-объектов, которые возвращает коллекция Sentences.
6.9.1. Свойства
Count
Количество предложений в документе.
Пример
MsgBox "Число предложений в тексте: " &
MyDoc.Sentences.Count
First
Возвращает первое предложение документа.
Пример
'Выделить первое предложение курсивом
MyDoc.Sentences.First.Italic = True
6.10. Отдельные слова — коллекция Words
367
Last
Возвращает последнее предложение документа.
Пример
'Выделить последнее предложение курсивом
MyDoc.Sentences.Last.Italic = True
6.10. Отдельные слова — коллекция Words
Подобно предложениям все слова текста можно рассматри-
вать в форме набора Range-объектов, объединенных в кол-
лекцию Words.
6.10.1. Свойства
Count
Количество слов в документе.
Пример
MsgBox "Число слов в тексте: " &
MyDoc.Words.Count
First
Возвращает первое слово документа.
Пример
'Выделить первое слово жирным
MyDoc.Words.First.Bold = True
368
6.11. Текст документа и объект Range
Last
Возвращает последнее слово документа.
Пример
'Выделить последнее слово жирным
MyDoc.Words.Last.Bold = True
6.11. Текст документа и объект Range
Range является базовым объектом в операциях редактирова-
ния текста. Его можно рассматривать, как определенный тем
или иным образом непрерывный фрагмент текста (никак не
связанный с выделенной областью), который не зависит от
положения курсора. Какой именно фрагмент текста будет со-
держаться в Range-объекте—зависит от того, к какой коллек-
ции или к какому объекту он относится (слова, предложения,
выделенная область и др.). От этого же зависит набор мето-
дов и свойств, которым обладает возвращенный коллекцией
Range-объект.
Пример
Обратите внимание на тот факт, что в первой и последней
строках исходного кода объект Range указан явным образом и
в то же время во втором и третьем случаях слово Range отсут-
ствует: элементы коллекций Sentences и Words сами по себе
являются объектами типа Range.
'Вставить текст после 5-го абзаца
MyDoc.Paragraphs(5).Range.InsertAfter _
"Новый текст"
'Вставить текст после 5-го предложения
MyDoc.Sentences(5).InsertAfter "Новый текст"
6.11. Текст документа и объект Range
369
'Вставить текст после 5-го слова
MyDoc.Words(5).InsertAfter "Новый текст"
'Выделить жирным символы с 10-го по 15-й
MyDoc.Range(10,15).Bold = True
6.11.1. Свойства
Bold
Задает (True) для шрифта начертание «жирный».
Пример
MyDoc.Sentences(1).Bold = True
Borders
Возвращает коллекцию объектов типа Border, определяю-
щих вид границ объекта.
Пример
MyDoc.Sentences(1).Borders.OutsideLineStyle =
wdLineSyleEmboss3D
Case
Определяет регистр символов текста.
Пример
'Преобразовать символы первого предложения
'в верхний регистр
MyDoc.Sentences(1).Case = wdUpperCase
370
6.11. Текст документа и объект Range
Font
Возвращает одноименный объект, обеспечивающий до-
ступ к параметрам шрифта.
Пример
'Первый абзац — шрифт Arial
MyDoc.Sentences(1).Font.Name = "Arial"
HiyhlightCok>rlndax
Определяет цвет выделения (подсветки).
Пример
'Выделять зеленым
MyDoc.Sentences(1).Highlightcolorindex =
wdBrightGreen
Italic
Задает для шрифта начертание «курсив».
Пример
MyDoc.Sentences(1).Italic = True
St&ryLength
Возвращает длину (в символах) структурного компонента.
6.11. Текст документа и объект Range
371
Пример
MsgBox Selection.StoryLength
StciryType
Определяет вид структурного компонента.
Пример
'Если выделенная область является сноской, то..
If Selection.StoryType = wdFootnoteStory Then
MsgBox "Сноска"
End If
Style
Определяет стиль текста.
Пример
'Задать для выделенного текста стиль — обычный 1
Selection.Style = "Normal 1"
Text
Возвращает неформатированный текст.
Пример
'Передать в строковую переменную "голый" текст
'1-го абзаца
MyString = MyDoc.Sentences(1).Text
372
6.11. Текст документа и объект Range
Undertine
Задает для шрифта наличие атрибута «подчеркнутый» и его
разновидность.
Пример
MyDoc.Sentences(1).Underline = wdUnderlineDouble
6.11.2. Методы
CheckGrammar
Комментарий
Осуществляет проверку орфографии и грамматики.
Обнаружив ошибку, открывает диалог Правописание.
Пример
'Проверка 2-го абзаца
MyDoc.Sentences(2).CheckGrammar
Ch&ckSpelling(СлаваргЛотзоаателя, ИгнйрировагъРегисгр,
ПредлагатьВарианты, СлоаарьПатл<мателя2 -• *'
г 'ливарьПользователя 10)
Пример
'Проверить текст второго предложения
MyDoc.Sentences(2).Checkspelling
6.11. Текст документа и объект Range
373
Комментарий
Проверяет текст, возвращает значение True, если ошибок
не обнаружено, и False в противном случае.
Параметр Назначение
Словарь Пользователя Имя файла словаря или объект типа Dictionary
ИгнорироватьРегисгр Значение True влечет игнорирование регистра символов - различия между малыми и большими литерами де- латься не будут
Предлагать Варианты Определяет, что Word должен (True) предлагать варианты замены
СловарьПользователя2 - Имя файла словаря или объект типа Dictionary
СловарьПользователяЮ Можно задать до 9 дополнительных словарей
СоЬарзе'Напр'Увление)
Параметр Назначение
Направление Направление сворачивания
Комментарий
Сворачивает выделенную область или область, определя-
емую Range-объектом, к начальной или конечной позиции.
• После вызова метода начальная и конечная позиции сов-
падают.
374
6.11. Текст документа и объект Range
Пример
Dim myRange As Range
Set myRange = ActiveDocument.Paragraphs(1).Range
myRange.Collapse(wdCollapseEnd)
ConvertToТаЬ1е(Разделител1>, ЧислоСтрок,
ЧмслоСталбцан, НэчальнаяШиринаСталбца,
Формат, Границы, Штрихоака, Шрифт, Цвет,
ЗаглаанаяСтрока, ПосладняяСтроха,
. ПервыйСтолбиц, ПоследнийСтолбец, АвтоШирина)
Параметр Назначение
Разделитель Константа, определяющая, какой символ в исходном фрагменте текста следует считать разделителем
ЧислоСтрок Число строк в таблице
ЧислоСтолбцов Число столбцов
НачальнаяШирина- Столбца Ширина столбца при формировании таб- лицы
Формат Константа
Границы Булево значение, разрешающее использо- вать связанные с границами свойства за - данного формата
Штриховка Булево значение, разрешающее использо - вать связанные со штриховкой свойства за- данного формата
Шрифт Булево значение, разрешающее использо- вать связанные с шрифтом свойства задан - ного формата
6.11. Текст документа и объект Range
375
Параметр Назначение
Цвет Булево значение, разрешающее использо- вать связанные с цветом свойства заданно- го формата
ЗаглавнаяСтрока Булево значение, разрешающее использо- вать связанные с заглавной строкой свой - ства заданного формата
ПоследняяСтрока Булево значение, разрешающее использо- вать связанные с последней строкой свой- ства заданного формата
ПервыйСтолбец Булево значение, разрешающее использо- вать связанные с первым столбцом свойст- ва заданного формата
ПоследнийСтолбец Булево значение, разрешающее использо- вать связанные с последним столбцом свойства заданного формата
АвтоШирина Разрешает (True) автоматически управлять шириной столбцов
Комментарий
Преобразует фрагмент текста, заданный Range-объектом,
в таблицу.
♦ Все параметры необязательны, большинство из них
определяют детали оформления таблицы.
Пример
'Преобразовать выделенную область
'в таблицу (3 столбца)
Selection.ConvertToTable wdSeparateByTabs, 3, 3
376
6.11. Текст документа и объект Range
Сар)
Комментарий
Копирует фрагмент текста в буфер обмена.
Пример
'Скопировать в буфер 2-е предложение
MyDoc.Sentences (2) .Copy
Cut
Комментарий
Переносит (вырезает) фрагмент текста в буфер обмена.
Пример
'Перенести в буфер 2-е предложение
MyDoc.Sentences(2).Cut
Delete
Комментарий
Удаляет фрагмент текста, определенный Range-объектом.
Пример
'Удалить 2-е предложение
MyDoc.Sentences(2).Delete
6.11. Текст документа и объект Range
377
Detecttenyvage
Комментарий
Позволяет автоматически распознать язык указанного фраг-
мента (см. описание данного метода для объекта Docu-
ment в п. 6.5.3).
ЕпбОЦВидОбъекта. П^реш'сРасширнние);
Параметр Назначение
ВидОбъекта Константа, определяющая вид структур- ной единицы (абзац, предложение и т. д.)
ПереносРасширение Константа, определяющая, должно ли вы- полняться расширение или перенос
Комментарий
Выполняет перенос или расширение конечной позиции
определенного Range-объектом фрагмента текста на ко-
нец заданной структурной единицы текста.
• Возвращает число символов, на которые был фактичес-
ки произведен перенос или расширение.
Пример
'Выделить до конца слова
NumChar = Selection.EndOf(wdWord, wdExtend)
'Выделить до конца предложения
NumChar = Selection.EndOf(wdSentence, wdExtend)
'Поместить курсор в конец абзаца
NumChar = Selection.EndOf(wdParagraph, wdMove)
378
6.11. Текст документа и объект Range
ЕхрапР(ВидОбъекта)
Параметр Назначение
ВидОбъекта Константа, определяющая вид структурной еди- ницы текста
Комментарий
Расширяет сферу действия Range-объекта до границ струк-
турной единицы текста.
Пример
Selection.Expand wdParagraph
InRangef Range-объект)
Параметр Назначение
Range-объект Range-объект, область действия которого подле- жит анализу
Пример
'Если выделен фрагмент внутри первого
'предложения, то ...
If Selection.InRange(MyDoc.Sentences(1)) Then
MsgBox "O.K."
End If
6.11. Текст документа и объект Range
379
Комментарий
Возвращает булево значение True, если фрагмент, опре-
деляемый тем Range-объектом, метод InRange которого
вызван, расположен внутри фрагмента, определенного объ-
ектом-параметром.
InsertA Her (Текст) <
Параметр Назначение
Текст Текст, подлежащий вставке
Комментарий
Выполняет вставку текста после фрагмента, определенно-
го тем Range-объектом, метод InsertAfter которого вызван.
Пример
'Вставить текст после первого предложения
MyDoc.Sentences(1).InsertAfter "Новый текст"
tosei tBe л е(Тексг)
Параметр Назначение
Текст Текст, подлежащий вставке
Комментарий
Выполняет вставку текста перед фрагментом, определен-
ным тем Range-объектом, метод InsertBefore которого вы-
зван.
(gOlPfeWliW
380 6.11. Текст документа и объект Range
Пример
'Вставить текст перед последним предложением
MyDoc.Sentences.Last.InsertBefore "Новый текст"
nsertBre^BnnPasnuBa'
Параметр Назначение
ВидРазрыва Константа, определяющая вид разрыва
Комментарий
Вставляет разрыв заданного вида в текст вместо фрагмента,
определенного Range-объектом.
Пример
'Вставить разрыв страницы вместо выделенной
'области
Selection.Range.InsertBreak wdPageBreak
In ertDnte TimefGopMar, КакПьле)
Параметр Назначение
Формат Формат значения даты-времени
КакПоле Разрешает (True) вставку даты-времени в виде поля TIME
6.11. Текст документа и объект Range
381
Комментарий
Выполняет вставку значения даты или времени в текст.
Пример
Selection.Range.InsertDateTime
"дддд, д, мммм гггг", False
'nseH$ тЬэ1(Код Символе Шрифт, Unir^dt
Параметр Назначение
КодСимвола Код символа, подлежащего вставке
Шрифт Имя шрифта
Unicode Разрешает (True) интерпретировать код символа как Unicode
Комментарий
Выполняет вставку в текст заданного символа.
Пример
'Вставить перед первым предложением символ 75
MyDoc.Sentences(1).Insertsymbol 75, "Wingdings"
382
6.11. Текст документа и объект Range
Моув(ВидОбъекта, ЧислаШапзв)
Параметр Назначение
ВидОбъекта Константа, определяющая вид структурной еди- ницы текста
ЧислоШагов Число единиц, на которые следует переместить фрагмент
Комментарий
Сворачивает определенный Range-объектом фрагмент к
его начальной или конечной позиции и перемещает его на
заданное число структурных единиц текста.
• Возвращает число фактически выполненных шагов
сдвига.
Пример
'Переместить выделенную область
'на два абзаца вперед
NumUnit = Selection.Move(wdParagraph, 2)
МиуеВмЦВйдОЗъскта,, ЧислоШагоа)
Параметр Назначение 1
ВидОбъекта Константа, определяющая вид структурной едини- цы текста
ЧислоШагов Число единиц, на которые следует переместить позицию
6.11. Текст документа и объект Range
383
Комментарий
Переносит конечную позицию фрагмента, определенного
Range-объектом, на заданное число структурных единиц
текста.
• Размер фрагмента при этом увеличивается, если значе-
ние параметра ЧислоШагов положительное.
Пример
'Расширить выделенную область до конца слова
NumUnit = Selection.MoveEnd(wdWord, 1)
MaveEnc/UntilfCnMaonu, ДальностьПоиска)
Параметр Назначение
Символы Строковое значение - один или несколько символов
ДальностьПоиска Число символов, ограничивающее дальность поиска
Комментарий
Переносит конечную позицию фрагмента, определенного
Range-объектом, до тех пор, пока не встретится один из
заданных символов или не будет превышено максималь-
ное число шагов поиска (необязательный параметр Даль-
ностьПоиска).
384
6.11. Текст документа и объект Range
Пример
'Расширить выделенную область до символа "А"
NumUnit = Selection.MoveEndUntil("А")
Mc»'eFndWnile‘(CttMBonu) Цальноат^По^ска)
Параметр Назначение
Символы Строковое значение - один или несколько символов
ДальностьПоиска Число символов, ограничивающее дальность поиска
Комментарий
Переносит конечную позицию фрагмента, определенного
Range-объектом, до тех пор, пока не встретится символ,
отличный от любого из заданных или не будет превышено
максимальное число шагов поиска (необязательный пара-
метр ДальностьПоиска).
Пример
'Расширить выделенную область до первого
'нецифрового символа
NumUnit = Selection.MoveEndWhile("1234567890")
6.11. Текст документа и объект Range
385
M<jveStart(Bn^(.)(ibeKTd, ЧислоШагов)
Параметр Назначение
ВидОбъекта Константа, определяющая вид структурной еди- ницы текста
ЧислоШагов Число единиц, на которые следует переместить позицию
Комментарий
Переносит начальную позицию фрагмента, определенно-
го Range-объектом, на заданное число структурных еди-
ниц текста.
• Размер фрагмента при этом уменьшается, если значе-
ние параметра ЧислоШагов положительное.
Пример
'Перенести начало выделенной области
'на одно слово
NumUnit = Selection.MoveStart(wdWord, 1)
MoveStartUntilfCHMBonu. ДальностьПоиска)
Параметр Назначение
Символы Строковое значение - один или несколько сим- волов
Дальность- Поиска Число символов, ограничивающее дальность по- иска
13 1855
386 6.11. Текст документа и объект Range
Комментарий
Переносит начальную позицию фрагмента, определенно-
го Range-объектом, до тех пор, пока не встретится один из
заданных символов или не будет превышено максималь-
ное число шагов поиска (необязательный параметр Даль-
ностьПоиска).
Пример
'Сократить выделенную область до символа "А"
NumUnit = Selection.MoveStartUntil("А")
MoveStartWhile(CnMaani.i, ДальностьПоиска)
Параметр Назначение
Символы Строковое значение — один или несколько символов
ДальностьПоиска Число символов, ограничивающее даль- ность поиска
Комментарий
Переносит начальную позицию фрагмента, определенно-
го Range-объектом, до тех пор, пока не встретится сим-
вол, отличный от любого из заданных или не будет превы-
шено максимальное число шагов поиска (необязательный
параметр ДальностьПоиска).
6.11. Текст документа и объект Range
387
Пример
'Сократить выделенную область до первого
'нецифрового символа
NumUnit = Selection.MoveEndWhile("1234567890")
Paste <
Комментарий
Выполняет вставку содержимого буфера обмена вместо
фрагмента, определенного Range-объектом.
Пример
Selection.Paste
Select
Комментарий
Выделяет фрагмент, заданный Range-объектом.
Пример
'Выделить символы с 10-го по 15-й
MyDoc.Range(10, 15).Select
388 6.12. Границы — коллекция Borders
$1агЮ/(ВидО<5ъакгэ, ПереносРэсширениа)
Параметр Назначение
ВидОбъекта Константа, определяющая вид структур- ной единицы (абзац, предложение и т. д.)
ПереносРасширение Константа, определяющая, должно ли вы- полняться расширение или перенос
Комментарий
Выполняет перенос или расширение начальной позиции
определенного Range-объектом фрагмента текста на на-
чало заданной структурной единицы текста.
• Возвращает число символов, на которые был фактичес-
ки произведен перенос или расширение (отрицательное
значение в случае переноса назад).
Пример
'Выделить до начала абзаца
NumChar = Selection.StartOf(wdParagraph,
wdExtend)
6.12. Границы — коллекция Borders
Коллекция Borders представляет границы, в которые может
быть заключена структурная единица текста (страница, абзац
или даже одиночный символ).
Примечание
Коллекция Borders не допускает расширения — включить в
ее состав новый Border-объект нельзя.
6.12. Границы — коллекция Borders
389
Пример
'Заключить в рамки страницы первого раздела
MyDoc.Sections(1).Borders.Enable = True
'Красная рамка вокруг текущего раздела
With Selection.Borders
.Enable = True
.OutsideColorIndex - wdRed
End With
'Синяя граница сверху
Selection.Borders(wdBorderTop).Colorindex =
wdBlue
6.12.1. Свойства
ysInFron,
Определяет положение рамки страницы относительно текс-
та (True соответствует варианту «рамка перед текстом»).
Пример
MyDoc.Sections(1).Borders.AlwaysInFront = True
Artstyle
Определяет вид границ для страницы (для отдельного
объекта Border).
Пример
MyDoc.Sections(1).Borders(wdBorderBottom)
.ArtStyle = wdArtStyleBalloonsHotAir
(gOlPOMW
390
6.12. Границы — коллекция Borders
ArtWidth
Определяет толщину линий для границ страницы в пунктах
(для отдельного объекта Border).
Пример
MyDoc.Sections(1).Borders(wdBorderBottom)
.Artwidth = 12
Cularlndex
Определяет цвет границ (для отдельного объекта Border).
Пример
Selection.Borders(wdBorderTop).Colorindex =
wdBlue
OistanceFremBattum
Определяет расстояние в пунктах между текстом и нижней
границей.
Пример
Selection.Borders.DistanceFromBottom = 12
LiistanceFrainLeft
И Определяет расстояние в пунктах между текстом и левой
границей.
6.12. Границы — коллекция Borders
391
Пример
Selection.Borders.DistanceFromLeft = 12
Oisi.anceFi’vmfMght
Определяет расстояние в пунктах между текстом и правой
границей.
Пример
Selection.Borders.DistanceFromRight = 12
BistariceFrwnTop
Определяет расстояние в пунктах между текстом и верх-
ней границей.
Пример
Selection.Borders.DistanceFromTop = 12
Enable
Возвращает и позволяет задать булево значение, опреде-
ляющее наличие границ.
Пример
MyDoc.Sections(1).Borders.Enable = True
(gOlPfeWliW
392
6.12. Границы — коллекция Borders
EnabluFirstPitgelnSeatibfn
Возвращает и позволяет задать булево значение, опреде-
ляющее наличие границ у первой страницы раздела.
Пример
MyDoc.Sections(1).Borders. _
EnableFirstPagelnSection = True
EnableOtherPagesInSecti'jn
Возвращает и позволяет задать булево значение, опреде-
ляющее наличие границ у всех страниц раздела, кроме
первой.
Пример
MyDoc.Sections(1).Borders.
EnableOtherPagesInSection = True
HasHorizontal ». г
Возвращает булево значение True, если объект можно
снабдить горизонтальными границами, и False в против-
ном случае.
Пример
If Selection.Borders.HasHorizontal Then
MsgBox "горизонтальные границы возможны."
End If
6.12. Границы — коллекция Borders
393
HasVcrtiaal
Возвращает булево значение True, если объект можно
снабдить вертикальными границами, и False в противном
случае.
Пример
If Selection.Borders.HasVertical Then
MsgBox "вертикальные границы возможны"
End If
Inaide
Возвращает булево значение True, если объект можно
снабдить внутренними границами, и False в противном
случае (для отдельного объекта Border).
Пример
If Selection.Borders(wdBorderBottom).
Inside Then
MsgBox "внутренние границы возможны"
End If
InsideColorlndex
Определяет цвет внутренних границ.
Пример
Selection.Borders.InsideColorlndex = wdBlue
394
6.12. Границы — коллекция Borders
InsideLineStyle
Определяет наличие и стиль внутренних границ.
Пример
Selection.Borders.InsideLineStyle =
wdLineStyleDouble
JuinBunlcrs
Разрешает (True) горизонтальным границам абзаца со-
прикасаться с вертикальными границами страницы (вер-
тикальные границы абзаца при этом удаляются).
Пример
MyDoc.Sections(1).Borders.JoinBorders = True
LintiStylv 2 ‘
Определяет стиль линий для границ (для отдельного объ-
екта Border).
Пример
Selection.Borders(wdBorderLeft).Linestyle =
wdLineStyleDouble
LinaWictth
Определяет толщину линий для границ (для отдельного
объекта Border).
(gOlPOMW
6.12. Границы — коллекция Borders
395
Пример
г
Selection.Borders(wdBorderLeft).Linewidth =
wdLineWidth300pt
OutsideColorlndex
Определяет цвет внешних границ.
Пример
Selection.Borders.OutsideColorIndex = wdBlue
JutsideLineStyle
Определяет стиль линий для внешних границ.
Пример
Selection.Borders.OutsideLineStyle = _
wdLineStyleDashDot
OutxideLineWidth
Определяет толщину линий для внешних границ.
Пример
Selection.Borders.OutsideLineWidth = _
wdLineWidthl50pt
396
6.12. Границы — коллекция Borders
Shaduw
Разрешает изображение тени для границ.
Пример
Selection.Borders.Shadow = True
SurruunJFo'jter
Я Разрешает (True) границам страницы охватывать нижний
колонтитул.
Пример
MyDoc.Sections(1).Borders.SurroundFooter - True
SurruuniiHeuder
Разрешает (True) границам страницы охватывать верхний
колонтитул.
Пример
MyDoc.Sections(1).Borders.SurroundHeader = True
6.12.2. Методы
ApplyPa<je4orders'!'oAllS -dns
Комментарий
Распространяет форматирование границ на все разделы
документа.
6.13. Управление табуляцией — объект TabStop 397
Пример
MyDoc.Sections(1).Borders.
ApplyPageBordersToAllSections
6.13. Управление табуляцией —
объект TabStop
Объект TabStop представляет позицию табуляции. Все объ-
екты TabStop данного абзаца или группы абзацев объедине-
ны в коллекцию TabStops.
6.13-1. Свойства
Alignment
Определяет режим выравнивания в данной позиции табу-
ляции.
Пример
MyDoc.Paragraphs(1).TabStops(1).Alignment =
wdAlignTabRight
CustomTan
Возвращает булево значение True, если позиция табуляции
определена пользователем, и False в противном случае.
Пример
If MyDoc.Paragraphs(1).TabStops(1).
CustomTab Then
MsgBox "CustomTub"
End If
398
6.13. Управление табуляцией — объект TabStop
Leader
Определяет тип заполнителя для позиции табуляции.
Пример
'Задать тип заполнителя:...
MyDoc.Paragraphs(1).TabStops(l).Leader =
wdTabLeaderDots
Position
Определяет расстояние от левого края абзаца до позиции
табуляции в пунктах.
Пример
MyDoc.Paragraphs(1).TabStops(1).Position =
CentimetersToPoints(2)
6.13.2. Методы
^ежимвыравниванля, '^полнитем)
Параметр Назначение
Отступ Расстояние от левого края абзаца до пози - ции табуляции в пунктах
Режим- Выравнивания Константа, определяющая режим выравни- вания
Заполнитель Константа, определяющая тип заполнителя
6.13. Управление табуляцией — объект Tabstop
399
Комментарий
Вставляет в текст новую позицию табуляции с заданными
параметрами в коллекцию TabStops.
Пример
MyDoc.Paragraphs(1).TabStops.Add
CentimetersToPoints(2), wdAlFgnTabCenter,
wdTabLeaderDots
Cl&ar
Комментарий
Удаляет заданную позицию табуляции.
Пример
MyDoc.Paragraphs(1).TabStops(1).Clear
CiearAJ
Комментарий
Удаляет все определенные пользователем позиции табу-
ляции из коллекции TabStops.
Пример
MyDoc.Paragraphs(1).TabStops.ClearAll
400 6.14. Форматирование символов — объект Font
6.14. Форматирование символов —
объект Font
Свойства и методы объекта Font служат для форматирования
символов и управления шрифтами.
6.14.1. Свойства
AllCaps
Возвращает и позволяет задать значение, определяющее
регистр символов: True соответствует верхнему, False —
нижнему, wdToggle — противоположному.
Пример
MyDoc.Sentences(1).Font.AllCaps = True
Animation
Определяет наличие анимации шрифта и ее тип.
Пример
MyDoc.Sentences(1).Font-Animation = _
wdAnimationLasVegasLights
Ml
Задает начертание «жирный» для шрифта.
Пример
MyDoc.Sentences(1).Font.Bold = True
6.14. Форматирование символов — объект Font
401
Borders
Возвращает одноименную коллекцию, служащую для управ-
ления границами.
Пример
MyDoc.Sentences(1).Font.Borders.Enable = True
Colorindex
Определяет цвет символов.
Пример
MyDoc.Sentences(1).Font.Colorindex = wdDarkBlue
DoubleSzril.eThreugt'
Задает эффект «двойное зачеркивание» для символов.
Пример
MyDoc.Sentences(1).Font.DoubleStrikeThrough =
True
Duplicate
Возвращает объект типа Font, обладающий идентичным
форматированием.
402
6.14. Форматирование символов — объект Font
Пример
'Скопировать форматирование 2-го предложения
'из 1-го
MyDoc.Sentences(2).Font = _
MyDoc.Sentences(1).Font.Duplicate
Cmbos
Задает эффект «приподнятый» для символов.
Пример
MyDoc.Sentences(1).Font.Emboss = True
Engruve
Задает эффект «утопленный» для символов.
Пример
MyDoc.Sentences(1).Font.Engrave = True
Hidden
Задает эффект «скрытый» для символов.
Пример
MyDoc.Sentences(1).Font.Hidden = True
6.14. Форматирование символов — объект Font 403
| Italic
Задает для шрифта начертание «курсив».
Пример
MyDoc.Sentences(1).Font.Italic = True
Kerning
Определяет наименьший размер шрифта, для которого кер-
нинг будет выполняться автоматически.
Пример
MyDoc.Sentences(1).Font.Kerning = 24
Name
Определяет имя шрифта.
Пример
MyDoc.Sentences(1).Font.Name = "Arial"
Jutline
Задает эффект «контур» для символов.
Пример
MyDoc.Sentences(1).Font-Outline = True
404
6.14. Форматирование символов — объект Font
Position
Определяет смещение символов в пунктах (положитель-
ные значения соответствуют смещению вверх, отрицате-
льные — вниз).
Пример
MyDoc.Sentences(1).Font.Position = 3
Scaling
Определяет масштаб отображения символов.
• Значения задаются в процентах от нормального размера.
Пример
MyDoc.Sentences(1).Font.Scaling = 150
Shading
Возвращает объект, служащий для управления штрихов-
кой символов.
Пример
MyDoc.Sentences(1).Font.Shading.Texture = _
wdTexturel5Percent
Shadow
Задает эффект «с тенью» для символов.
(gOlPfeWliW
6.14. Форматирование символов — объект Font
405
Пример
MyDoc.Sentences(1).Font.Shadow = True
Size
Определяет размер шрифта в пунктах.
Пример
MyDoc.Sentences(1).Font.Size = 24
SmeUCeps
Возвращает и позволяет задать значение, определяющее
регистр символов: True соответствует нижнему, False —
верхнему, wdToggle — противоположному.
Пример
MyDoc.Sentences(1).Font.SmallCaps = True
Определяет интервал между символами в пунктах.
Пример
MyDoc.Sentences(1)-Font.Spacing = 3
406
6.14. Форматирование символов — объект Font
Strike Through
Задает эффект «зачеркнутый» для символов.
Пример
MyDoc.Sentences(1).Font.StrikeThrough = True
Subscript
Задает эффект «нижний индекс» для символов.
Пример
MyDoc.Sentences(1).Font.Subscript = True
Superscript
Задает эффект «верхний индекс» для символов.
Пример
MyDoc.Sentences(1).Font.Superscript = True
Underline
Определяет наличие и тип подчеркивания для символов.
Пример
MyDoc.Sentences(1).Font.Underline =
wdUnderlineDotted
6.14. Форматирование символов — объект Font
407
UndbrlineColo
Определяет цвет подчеркивания для символов.
Пример
MyDoc.Sentences(1).Font.Underlinecolor =
wdColorBlue
6.14.2. Методы
(Iruw
Комментарий
Увеличивает размер шрифта до следующего из доступных.
Пример
MyDoc.Sentences(1).Font.Grow
StttAsT»m^lat&Defauft_
Комментарий
Определяет набор параметров форматирования символов
по умолчанию.
• Формат по умолчанию сохраняется в стиле «обычный».
Пример
MyDoc.Sentences(1).Font.SetAsTemplateDefault
(gOlPfeWliW
408
6.15. Пример форматирования
Shrink - - -
Комментарий
Уменьшает размер шрифта до следующего из доступных.
Пример
MyDoc.Sentences(1).Font.Shrink
6.15. Пример форматирования
Приведенный ниже пример предназначен для нужд некоторой
воображаемой фирмы, которая регулярно проводит семина-
ры на разные темы. Каждый участник очередного семинара
должен получить сертификат, удостоверяющий, что он полу-
чил определенные знания. Чтобы облегчить задачу создания
сертификатов, требуется процедура на языке VBA, которая
формировала бы документ Word исходя из имени участника,
периода времени, когда проходил семинар, и его темы.
Сертификат
Герр Рудольф Мейер
принял участие в семинаре
VBA в действии
в периоде
0711.99 до 0911 99
и прослувал ряд neiojid
6.15. Пример форматирования
409
1 Переменные уровня модуля
Dim TTN(1 То 10) As String 'Имена участников
Dim FirstDay As Date 'Дата начала семинара
Dim LastDay As Date 'Дата окончания семинара
Dim TTheme As String 'Тема семинара
Dim TNum As Integer 'Число участников
'Главная процедура
Sub Certificate()
'формируем неизменяемый текст
Const KTitle As String = "Сертификат" & vbCr
Const KEinl As String = _
"принял участиев семинаре" & vbCr
Const KTime As String = "в период с" & vbCr
Const KAusl As String = _
"и прослушал рядлекций" & vbCr
Const KSign As String = _
"Подпись участника семинара" & vbCr
'Объявить переменные
Dim TheDoc As Document 'Сам документ
Dim TheBord As Border 'Рамка
Dim TheText As String 'Общий текст
Dim I As Integer
'Подготовить исходные данные о семинаре
FilllnputData
'Главный цикл - по участникам семинара
For I = 1 То TNum
'Создать новый документ для очередного участника
Set TheDoc = Documents.Add
'Задать границы
For Each TheBord In TheDoc.Sections(1).Borders
With TheBord
.Artstyle = wdArtCornerTriangles
.Artwidth = 18
.ColorIndex = wdGray50
410
6.15. Пример форматирования
End With
Next
'Подготовить полный текст сертификата
TheText = KTitle & TIN(I) & vbCr & KEinl
TheText = TheText & TTheme & vbCr & KTime
TheText = TheText & FirstDay & " до " &
LastDay & vbCr
TheText = TheText & KAusl & KSign
'Поместить текст в документ
TheDoc.Range = TheText
1 Вначале общее форматирование
With TheDoc.Content
'Шрифт
With .Font
.Name = "Arial"
.Size = 22
End With
'Выравнивание и поля
With .ParagraphFormat
.Alignment = wdAlignParagraphCenter
.SpaceBefore = 12
.SpaceAfter = 12
End With
End With
'Теперь отдельно форматировать заголовок
With TheDoc.Paragraphs(1)
.Alignment = wdAlignParagraphCenter
.SpaceBefore = 42
.SpaceAfter = 56
With .Range.Font
.Name = "Arial"
.Size = 56
.Bold = True
.Shadow = True
.Spacing = 4
.Kerning = 12
6.15. Пример форматирования
411
End With
End With
'Выделить жирным тему семинара
TheDoc.Paragraphs(4).Range.Font.Bold = True
'Последний абзац — место для подписи
With TheDoc.Paragraphs.Last.Previous
.Rightindent = CentimetersToPoints(10)
.Borders(wdBorderTop).LineStyle = _
wdLineStyleSingle
.SpaceBefore = 128
With .Range.Font
.Size = 12
.Spacing = 1
End With
End With
'И, вместо печати, автофигура "вертикальный
' свиток"
ActiveDocument.Shapes.AddShape _
msoShapeVerticalScroll, 330, 620, 200, 150
Next 'Конец главного цикла
End Sub
'Процедура для ввода исходных данных
Sub FilllnputData()
'Данные можно получать и другими способами,
'например, импортировать их из рабочей книги
' Excel или базы данных Access
TTN(1)
TTN (2)
TTN(3)
TTN(4)
TTN(5)
Герр Рудольф Мейер
Фрау Сюзанна Шмидт
Фрау Элке Мюллер"
Герр Герхард Зедек
Герр Олле Йенсен"
FirstDay = "7.11.99
LastDay = "9.11.99"
412
6.16. Манипуляции с таблицами — коллекция Tables
TTheme = "VBA в действии"
TNum = 5
End Sub
6.16. Манипуляции с таблицами —
коллекция Tables
Таблица (объект типа Table) состоит из строк (объекты типа
Row, объединенные в коллекцию Rows) и столбцов (объекты
типа Column, объединенные в коллекцию Columns). Кроме
того, таблицу можно рассматривать как набор ячеек (объек-
тов типа Cell, объединенных в коллекцию Cells).
6.16.1. Свойства
Borders ’ " ../У !.__У
Возвращает коллекцию Borders, представляющую границы.
Пример
'Разрешить отображение границ для первой таблицы
MyDoc.Tables(1).Borders.Enable = True
Columns ( '
Возвращает коллекцию Columns, представляющую столбцы.
Пример
'Удалить первый столбец
MyDoc.Tables(1).Columns(1).Delete
(gOlPOMW
6.16. Манипуляции с таблицами — коллекция Tables 413
NustingLaval
Возвращает глубину вложения таблицы (колонки, строки,
ячейки. Самая внешняя таблица имеет уровень 1, каждая
следующая (по уровню вложения) — на 1 больше.
Пример
'Индикация уровня вложения таблицы
MsgBox MyDoc.Tables(1).NestingLevel
Язлуе
Возвращает текст, содержащийся в таблице, в форме Ran-
ge-объекта.
Пример
MyDoc.Tables(1).Range.Font.Name = "Arial"
ROWS '
Возвращает коллекцию Rows, представляющую строки.
Пример
'Выделить первую строку штриховкой
MyDoc.Tables(1).Rows(l).Shading.Texture =
wdTexturel5Percent
Shading
Возвращает объект Shading, управляющий штриховкой.
(gOlPfeWliW
414 6.16. Манипуляции с таблицами — коллекция Tables
Пример
MyDoc.Tables(1).Shading.Texture =
wdTexturelOPercent
6.16.2. Методы
Add (Объект, ЧислэСтрак, ЧислоСталЙцяи)
Параметр Назначение
Объект Range-объект, вместо которого будет вставлена таблица
ЧислоСтрок Число строк в новой таблице
ЧислоСтолбцов Число столбцов в новой таблице
Комментарий
Создает новую таблицу с заданными параметрами и заме-
няет ею фрагмент, определенный Range-объектом.
Пример
MyDoc.Tables.Add Selection.Range, 4, 3
АиЬэГогтаЦФьрмэт, Границы, Штриховка, Шрифт, Цвет,
ЗаглэвнаяСтрока, ПоследняяСтррка, ПераыйСталбец,
ГкюледнийСтол&ец, АвтоШирина) _____________________
Комментарий
Форматирует таблицу (отдельный объект Table).
6.16. Манипуляции с таблицами — коллекция Tables
415
Параметр Назначение
Формат Константа, определяющая формат таблицы
Границы Булево значение, разрешающее использовать свя- занные с границами свойства заданного формата
Штриховка Булево значение, разрешающее использовать свя - занные со штриховкой свойства заданного форма - та
Шрифт Булево значение, разрешающее использовать свя - занные с шрифтом свойства заданного формата
Цвет Булево значение, разрешающее использовать свя - занные с цветом свойства заданного формата
Заглавная- Строка Булево значение, разрешающее использовать свя - занные с заглавной строкой свойства заданного формата
Последняя- Строка Булево значение, разрешающее использовать свя- занные с последней строкой свойства заданного формата
Первый- Столбец Булево значение, разрешающее использовать свя - занные с первым столбцом свойства заданного формата
Последний - Столбец Булево значение, разрешающее использовать свя- занные с последним столбцом свойства заданного формата
Авто- Ширина Разрешает (True) автоматически управлять шири- ной столбцов
Пример
MyDoc.Tables(1).AutoFormat wdTableFormatColorfull
(gOlPfeWliW
416 6.16. Манипуляции с таблицами — коллекция Tables
СеЩСтрока, Столбец)
Параметр Назначение
Строка Номер строки ।
Столбец Номер столбца
Комментарий
Возвращает указанную ячейку в форме объекта Cell (для
отдельного объекта Table).
Пример
MyDoc.Tables(1).Cell(1, 1).Range = "1-я ячейка"
С&пуеНТоТех^Раздеяитель) - у—
Параметр Назначение
Разделитель Константа, определяющая символ-разделитель
Комментарий
Преобразует таблицу в текст, используя заданный сим-
вол-разделитель (для отдельного объекта Table).
• После преобразования таблица превращается в абзац.
Пример
MyDoc.Tables(1).ConvertToText vbTab
6.16. Манипуляции с таблицами — коллекция Tables 417
delete
Комментарий
Удаляет таблицу (для отдельного объекта Table).
Пример
MyDoc.Tables(1).Delete
Select
Комментарий
И Выделяет таблицу (для отдельного объекта Table).
Пример
MyDoc.Tables(1).Select
Split(CrpoKa)
Параметр Назначение
Строка Номер строки таблицы, перед которой должен быть вставлен разрыв
Комментарий
Вставляет разрыв абзаца (новый пустой абзац) перед ука-
занной строкой таблицы (для отдельного объекта Table).
• Возвращает Table-объект, представляющий собой вто-
рую часть разбитой надвое таблицы.
14 1855
418 6.17. Столбцы таблицы — коллекция Columns
Пример
'Разбить перед 3-й строкой
MyDoc.Tables(1).Split(3)
Updtt tv Au to Farm я t
Комментарий
Обновляет (восстанавливает) автоформат в отношении
таблицы (для отдельного объекта Table).
Пример
MyDoc.Tables(1).UpdateAutoFormat
6.17. Столбцы таблицы —
коллекция Columns
Каждый столбец таблицы представляет собой объект типа
Column, все они объединены в коллекцию Columns.
6.17.1. Свойства
Borders
Возвращает одноименную коллекцию, представляющую
границы.
Пример
'Разрешить отображение границ для первого столбца
MyDoc.Tables(1).Columns(1).Borders.Enable = True
6.17. Столбцы таблицы — коллекция Columns
419
FCounf
Возвращает число столбцов в таблице.
Пример
'Для всех столбцов в таблице выполнить...
For I = 1 То MyDoc.Tables(1).Columns.Count
Next
Shading
Возвращает объект, управляющий штриховкой.
Пример
'Заштриховать первый столбец
MyDoc.Tables(1).Columns(1).Shading.Texture =
wdTexturelOPercent
Width
И Определяет ширину столбца в пунктах (для отдельного
объекта Column).
Пример
MyDoc.Tables(1).Columns(1)-Width = 35
МЯИИ
420 6.17. Столбцы таблицы — коллекция Columns
6.17.2. Методы
АМ(Сгилбац) :
Параметр Назначение
Столбец Столбец (Column-объект), перед которым необходи- мо вставить новый столбец
Комментарий
Вставляет новый столбец в указанную позицию.
Пример
MyDoc.Tables(1).Columns.Add MyDoc.Tables(1)
.Columns(3)
AutoFit - ' - — /• !•
Комментарий
Автоматически оптимизирует ширину столбца.
Пример
MyDoc.Tables(1).Columns(1).AutoFit
Delate
Комментарий
Удаляет столбец.
6.18. Строки таблицы — коллекция Rows 421
Пример
MyDoc.Tables(1).Columns(1).Delete
Distribute Width
Комментарий
Уравнивает столбцы по ширине.
Пример
MyDoc.Tables(1).Columns.DistributeWidth
Select
Комментарий
Выделяет столбец.
Пример
MyDoc.Tables(1).Columns(1).Select
6.18. Строки таблицы — коллекция Rows
Каждая строка таблицы представляет собой объект типа Row,
все они объединены в коллекцию Rows.
422
6.18. Строки таблицы — коллекция Rows
6.18.1. Свойства
Alignment
Определяет режим выравнивания в строке.
Пример
MyDoc.Tables(1).Rows(l).Alignment =
wdAli gnRowCen te r
ДПиыВгеэкАсгшзРэдез___________
Разрешает (True) или запрещает (False) вставку разрыва
страницы в тексте строки.
Пример
MyDoc.Tables(1).Rows(1).AllowBreakAcrossPage =
True
Borders
Возвращает коллекцию, предназначенную для управления
границами.
Пример
'Разрешить отображение границ для 1-й строки
MyDoc.Tables(1).Rows(1).Borders.Enable = True
6.18. Строки таблицы — коллекция Rows
423
Count
Определяет число строк в таблице.
Пример
'Для всех строк в таблице выполнить...
For I = 1 То MyDoc.Tables(1).Rows.Count
Next
HeactingFormat
Определяет строку как заглавную.
Пример
MyDoc.Tables(1).Rows(1).HeadingFormat = True
Haight
Определяет высоту строки в пунктах.
• Возвращаемое значение зависит от свойства HeightRule.
Пример
MyDoc.Tables(1).Rows(1).Height = 12
HeightRule
881 Определяет поведение строки при попытках изменить ее
высоту.
424 6.18. Строки таблицы — коллекция Rows
Пример
MyDoc.Tables(1).Rows(1).HeightRule =
wdRowHeightExactly
Shading
Возвращает объект, управляющий штриховкой.
Пример
'Заштриховать первую строку
MyDoc.Tables(1).Rows(l).Shading.Texture -
wdTexturelOPercent
6.18.2. Методы
AddfCrp&xaf
Параметр Назначение
Строка Строка (Row-объект), перед которой необходимо вставить новую строку
Комментарий
Вставляет новую строку в указанную позицию.
Пример
MyDoc.Tables(1).Rows.Add MyDoc.
Tables(1).Rows(3)
Ж|й1Ж»[11й
6.18. Строки таблицы — коллекция Rows 425
СипуеЯТ&ТехЦРазя&литеяь)' *• Л
Параметр Назначение
Разделитель Константа, определяющая символ-разделитель
Комментарий
Преобразует строку таблицы в текст, используя заданный
символ в качестве разделителя.
Пример
Selection.Tables(1).Rows(l).ConvertToText _
wdSeparateByTabs
Deltate
комментарий
Удаляет строку таблицы.
Пример
MyDoc.Tables(1).Rows(1).Delete
Select
Комментарий
Выделяет строку таблицы.
426 6.19. Ячейка таблицы — объект Cell
Пример
MyDoc.Tables(1).Rows(l).Select
6.19. Ячейка таблицы — объект Cell
Любая ячейка таблицы доступна посредством свойств и мето-
дов объекта типа Cell.
6.19.1. Свойства
Borders
Возвращает коллекцию, предназначенную для управления
границами.
• Зависит от значения свойства HeightRule.
Пример
'Разрешить отображение границ для ячейки 2, 3
MyDoc.Tables (1).Cell(2, 3) .Borders.Enable = _
True
Height
Определяет высоту ячейки в пунктах.
Пример
MyDoc.Tables(1)-Cell(2, 3).Height = 24
6.19. Ячейка таблицы — объект Cell 427
HaiyhtRula
Определяет поведение ячейки при попытках изменить ее
высоту.
Пример
MyDoc.Tables (1).Cell (2, 3).HeightRule = _
wdRowHeightExactly
Range
Возвращает содержимое ячейки в форме Range-объекта.
Пример
MyDoc.Tables(1).Cell(2, 3).Range.Font.Size = 14
Shading
Возвращает объект, управляющий штриховкой.
Пример
'Заштриховать ячейку
MyDoc.Tables(1).Cell(2, 3).Shading.Texture =
wdTexturelOPercent
VcrticalAlignment
Задает режим вертикального выравнивания в ячейке.
428 6.19. Ячейка таблицы — объект Cell
Пример
MyDoc.Tables(1).Cell (2, 3).VerticalAlignment =
wdCellAlignVerticalCenter
l/idth
Определяет ширину ячейки в пунктах.
Пример
MyDoc.Tables(1).Cell(2, 3).Width = 24
Wordwrap
Анализ/установка режима переноса текста в пределах
ячейки на следующую строку (для объекта Cell).
Пример
MyDoc.Tables(1).Cell(2, 3)-Wordwrap = True
6.19.2. Методы
AutoSum
Комментарий
Вставляет в таблицу поле автосуммирования, которое бу-
дет отображать сумму значений в ячейках выше или левее
поля.
6.19. Ячейка таблицы — объект Cell
429
Пример
MyDoc.Tables(1).Cell(2, 3).AutoSum
Ои1€*е(ЭидСдеига)
Параметр Назначение
ВидСдвига Константа, определяющая вид сдвига оставшихся ячеек
Комментарий
Удаляет ячейку и сдвигает оставшиеся заданным образом.
Пример
'Удалить ячейку и сдвинуть оставшиеся влево
MyDoc.Tables(1).Cell(2, 3).Delete _
wdDeleteCellsShiftLeft
Select
Комментарий
Выделяет ячейку.
Пример
MyDoc.Tables(1).Cell(2, 3).Select
(gOlPfeWliW
430
6.20. Форматирование таблицы (пример)
5>>Н1(Строки, Столбцы)
Параметр Назначение
Строки Число новых строк
Столбцы Число новых столбцов
Комментарий
Разбивает ячейку на заданное число строк и столбцов.
Пример
'Разбить ячейку на 4 ячейки
MyDoc.Tables(1).Cell (2, 3).Split 2, 2
6.20. Форматирование таблицы (пример)
Процедура, исходный текст которой приведен ниже, вставля-
ет таблицу в текущей позиции курсора, вводит в нее данные и
выполняет форматирование. Результат должен соответство-
вать рисунку.
II Товар Кол-во Цена Сумма
• Карандаши 20 1.75 р.5 35.00 р.
i Ластики 3 0.80р 2.40 р.
1 Точилки 2 3 95 р. i 7.90 р.
1 45.30 р.
'Маленькая таблица в позиции курсора
Sub MyLittleTable()
Const TNum = 3
6.20. Форматирование таблицы (пример)
431
'Массивы для исходных данных
Dim TProd(l То TNum) As String
Dim TStk(l To TNum) As Integer
Dim TPrice(l To TNum) As Single
'Рабочие переменные
Dim TheTab As Table
Dim TheCell As Cell
Dim TheRow As Row
Dim I, J As Integer
'Ввести исходные данные
TProd(l) = "Карандаши"
TStk(l) = 20
TPrice(l) = 1.75
TProd(2) = "Ластики"
TStk(2) = 3
TPrice(2) = 0.8
TProd(3) = "Точилки"
TStk(3) = 2
TPrice(3) =3.95
'Создать таблицу в позиции курсора
Set TheTab = ActiveDocument.Tables.Add
(Selection.Range, 2, 4)
'Заполнить и отформатировать таблицу
With TheTab
'Сформировать заголовок
.Cell(l, 1).Range = "Товар"
.Celljl, 2).Range = "Кол-во"
.Cell(l, 3)-Range = "Цена"
.Cell(l, 4).Range = "Сумма"
'Заполнить строки данными
For I = 1 То TNum
Set TheRow = .Rows-Add(.Rows.Last)
With TheRow
.Cells(1).Range = TProd(I)
.Cells(2).Range = TStk(I)
.Cells(3).Range = Format(TPrice(I),
"0.00 p.")
.Cells(4).Range = Format(TStk(I) *
432
6.20. Форматирование таблицы (пример)
TPrice(I), "0.00 р.")
End With
Next
'В последнюю ячейку поместить сумму
.Cell(.Rows.Count, .Columns.Count).Formula
" = Sum(Above)", "# ##0,00p.;(# ##0,00p.)"
'Применить автоформат
.AutoFormat Format: = wdTableFormatGrid8,
AutoFit: = True
'Задать выравнивание
For I = 1 To .Rows.Count
For J = 2 To .Columns.Count
.Cell(I, J).Range.ParagraphFormat _
.Alignment = wdAlignParagraphRight
Next
Next
End With
End Sub
JpF Объект Excel
Как и модель Word, объектная модель Excel не отличается про-
стотой. Однако пакет Excel в свое время оказался первым Win-
dows-приложением, где был реализован VBA и, как легко дога-
даться, именно в этой среде VBA «чувствует себя» наиболее
уютно, а объектная модель Excel с точки зрения VBA-приложе-
ний выглядит зрелой и логически законченной. Несмотря на
многочисленные изменения, в Office ХР сохранена практически
полная совместимость с файлами Excel прежних версий — ста-
рые макросы (процедуры VBA) можно использовать без проб-
лем. Кроме того, в распоряжении разработчика появился це-
лый спектр новых возможностей. При всей сложности объект-
ной модели Excel для повседневной работы знать требуется
немного. Основными объектами являются рабочие книги, лис-
ты, диапазоны ячеек и диаграммы.
Обзор. Структура объекта Excel
434
7.1. Обзор объектной модели Excel
7.1. Обзор объектной модели Excel
7.1.1. Приложение
Application
| Application
Workbooks (Workbook) I
—j Addins (Addin)
Worksheets (Worksheet)
Charts (Chart)
DocumentProperlies
( Docum entProperty)
- j VBProject ~ ]
— | CustomViews (CustomView) |
— j CommandBars (CommandBar) |
— | HTMLProject |
— | AnswerWizard
— | AutoCorrect
— | Assistant
— | COMAddlns (COMAddln)
— j Dialogs (Dialog)
— j PivotCaches (PivotCache)
— | Styles (Style)
—J Borders (Border)
—| Font
Interior
—| Windows (Window)
CommandBars (CommandBar)
Languagesettings
Names (Name)
Windows (Window)
Ц Panes(Pane)
—I WorksheetFunction
—| RecentFiles (RecentFile)
Panes(Pane)
—| Names (Name)"
—| RoutingSlip
—| ODBCErrors (ODBCError)
—| OLEDBErrors (OLEDBError)
—| DefaultWebOptions
—| PublishObjects
—| WebOptions
7.1. Обзор объектной модели Excel
435
Объект Назначение
Application Собственно приложение, корневой объект иерархии
Workbook Рабочая книга, т. е. файл, содержащий листы, диаграммы и модули
Addin Надстройка Addin
AnswerWizard Мастер AnswerWizard
AutoCorrect Автозамена (элемент списка автозамены)
Assistant Помощник Office
Chart Диаграмма
COMAddln СОМ-надстройка в приложении
Dialog Лист диалога (поддерживает совместимость с предыдущими версиями)
CommandBar Панель инструментов или панель меню
Language- Settings Информация об установке языка в приложении
Name Имя, заголовок диапазона
Window Окно приложения или книги
Worksheet - Function Функция листа (функция Excel, доступная для VBA-программы)
RecentFile Файл из списка недавно открытых файлов
ODBCError Описание ошибки доступа к ODBC.
DefaultWeb- Options Глобальные атрибуты открытия/сохранения Web-страницы
436 7.1. Обзор объектной модели Excel
Windows
Windows (Window)
Panes(Pane)
Объект Назначение
Window Окно документа
Pane Разделительная панель
7.1.2. Книга
Workbooks
7.1. Обзор объектной модели Excel 437
Объект Назначение
Workbook Рабочая книга, т. е. файл, содержащий листы, диаграммы и модули
Sheet Лист книги
Chart Диаграмма (внедренная в лист с помощью кон- тейнера Chartobject или отдельный лист с диа- граммой)
CustomView Представление (определенные пользователем па- раметры просмотра книги, см. диалог Вид / , Представления)
PivotCache Объект, резервирующий память для объекта Pi - votTable
PublishOb- jects Объект для Web-страницы
SmartTag- Options Параметры смарт-тегов
Style Стиль (встроенный или определенный пользова- телем)
WebOptions Параметры сохранения/сохранения Web-страни - цы в Excel
Window Окно книги
Name Имя диапазона ячеек
RoutingSlip Маршрут для отправки сообщения электронной почты
438 7.1. Обзор объектной модели Excel
Worksheets
7.1. Обзор объектной модели Excel 439
Объект Назначение
Worksheet Лист книги
AutoFilter Автофильтр
Name Имя диапазона ячеек
Range Ячейка, столбец, строка, диапазон или 30-диапазон
Comment Примечание
CustomPro- perty Дополнительная информация (например, метадан- ные для XML)
HPageBreak Горизонтальный разрыв страницы
VPageBreak Вертикальный разрыв страницы
Hyperlink Г иперссылка
Scenario Сценарий
OLEObject OLE-объект или ActiveX-элемент
Outline Структура
PageSetup Объект, обеспечивающий доступ к параметрам страницы
Protection Параметры защиты
QueryTable Запрос к базе данных
PivotTable Сводная таблица
Chartobject Контейнер (рамка) для внедрения в лист диаграм- мы
Shape Фигура (автофигура, рисунок, OLE-объект и др.)
SmartTag Смарт-тег
Tab Ярлычок листа
440 7.1. Обзор объектной модели Excel
Range
(gOlPfeWliW
7.1. Обзор объектной модели Excel 441
Объект Назначение
Range Ячейка, столбец, строка, диапазон или 30-диапазон
Areas Коллекция диапазонов (Range-объектов), представляющих непрерывные последователь- ности смежных ячеек внутри выделенной об - ласти
Border Рамка, граница
Font Представляет свойства шрифта
Interior Представляет параметры «внутреннего» фор- матирования объекта (ячейки, диапазона и др)
Characters Строка символов, содержащихся в объекте
Errors Ошибки в диапазоне
Formatcondition Условный формат
Hyperlink Г иперссылка
Phonetic Фонетическая текстовая строка диапазона
PivotCell Ячейка сводной таблицы
PivotField Поле сводной таблицы
Pivotitem Элемент сводной таблицы
PivotTable Сводная таблица
QueryTable Таблица, построенная по результатам запроса
SmartTag Смарт-тег
Validation «Условие на значение», объект, служащий для проверки вводимых значений на соответствие некоторым условиям
Worksheet Таблица
Comment Примечание
Ж.Й1ЖМ11Й
442 7.1. Обзор объектной модели Excel
Styles
Styles (Style)
Borders (Border)
Font
Interior
Объект Назначение
Style Стиль (встроенный или определенный пользовате- лем)
Border Рамка, граница
Font Представляет свойства шрифта
Interior Представляет параметры «внутреннего» форматирова- ния объекта (ячейки, диапазона и др.)
QueryTable
Parameter
7.1. Обзор объектной модели Excel
443
PivotTables
PivotTables (PivotTable)
CalculatedFields
— CalculatedMembers
CubeFields
PivotCashe
PivotFormulas (PivotFormula)
PivotFields (PivotField)
Range
Объект Назначение
PivotTable Сводная таблица
Calculated Field Вычисляемое поле сводной таблицы
Calculated - Member Вычисляемое поле или вычисляемый элемент сводной таблицы
CubeField Поле куба сводной таблицы
PivotCache Резервирует память для объекта PivotTable
PivotFormula Представляет формулу для вычисления значений в сводной таблице
PivotField Вычисляемое поле сводной таблицы
Range Диапазон сводной таблицы
444 7.1. Обзор объектной модели Excel
ChartObjects
Chartobjects (Chartobject)
Border
Chart
Interior
PivotLayout
Объект Назначение
Chartobject Контейнер (рамка) для внедрения в лист диаграммы
Border Рамка (граница) диаграммы
Chart Диаграмма (внедренная в лист с помощью контейне- ра Chartobject или отдельный лист с диаграммой)
Interior Фон диаграммы
PivotLayout Расположение полей сводной таблицы
7.1. Обзор объектной модели Excel
445
Shapes
(gOlPfeWliW
446
7.1. Обзор объектной модели Excel
Объект Назначение
Shape Фигура (автофигура, рисунок, OLE-объект и др.)
Diagram Организационная диаграмма
DiagramNode Узел организационной диаграммы
GroupShapes Группа фигур
LinkFormat Представляйет свойства связанного OLE-объекта
OLEFormat Представляет свойства внедренного OLE-объекта
Hyperlink Гиперссылка
Fill Format Определяет параметры заливки
Control Format Обеспечивает доступ к свойствам элементов управления
ConnectorFormat Служит для доступа к параметрам объекта Connector
TextFrame Текстовое поле
Adjustments Коллекция маркеров изменения размера
LineFormat Обеспечивает доступ к свойствам линий
PictureFormat Обеспечивает доступ к свойствам рисунков и । OLE-объектов
Range Диапазон ячеек
ShadowFormat Содержит цветовые и яркостные параметры фигуры
ShapeNode Узел кривой
ShapeRange Диапазон фигур
TextEffectFormat Обеспечивает доступ к шрифтовым парамет- рам объектов WordArt
ThreeDFormat Трехмерный формат фигуры
7.1. Обзор объектной модели Excel
447
7.1.3. Диаграммы
Charts
448
7.1. Обзор объектной модели Excel
Объект Назначение
Chart Диаграмма
ChartArea Область диаграммы
PlotArea Область построения диаграммы
Floor Основание (для объемных диаграмм)
Walls Стенки (для объемных диаграмм)
Corners Объект, представляющий углы (для объемных диа - грамм)
PageSetup Параметры страницы
ChartTitle Заголовок диаграммы
Series Ряд данных, отображаемый диаграммой
Axis Ось (одна из осей) диаграммы
Chartobject Встроенная диаграмма
DataTable Таблица данных на диаграмме
Hyperlink Г иперссылка
OLEObject Встроенный OLE-объект или ActiveX
Legend Легенда диаграммы
Shape Фигура (автофигура, рисунок, OLE-объект и др.)
ChartGroup Группа рядов данных одного типа - используется в смешанных диаграммах
Tab Ярлычок листа диаграммы
Ж1Й1ЖМ11Й
7.1. Обзор объектной модели Excel 449
Axes
Axes (Axis)
— AxisTitle
— Border
— DisplayUnitLabel
— Gridlines
— TickLabels
Объект Назначение
Axis Ось (одна из осей) диаграммы
AxisTitle Заголовок оси
DisplayUnitLabel Цена деления на оси
GridLines Сетка на диаграмме, переходящая в деления оси
TickLables Подпись делений на оси диаграммы
DataTables
DataTable
Border
Объект Назначение
DataTable Таблица данных на диаграмме
Border Граница (рамка)
15 1Я55
450 7.1. Обзор объектной модели Excel
ChartGroups
ChartGroups (ChartGroup)
— Down Bars DropLines
— UpBars TickLabels
— HiLoLines Seriescollection (Series)
— SeriesLines
Объект Назначение
ChartGroup Группа рядов данных одного типа — используется в смешанных диаграммах
DownBars Полоса понижения (отображает отрицательную разницу между точками данных первого и послед- него ряда данных)
UpBars Полоса повышения (отображает положительную разницу между точками данных первого и послед- него ряда данных)
HiLoLines Коридор колебания (изменения) отображается ли- ниями, идущими от максимального до минималь- ного значения в каждой категории
SeriesLines Линии рядов соединяют точки данных одного ряда
DropLines Линии проекции (линии, идущие от точек данных к осям категорий)
TickLables Подпись делений на оси диаграммы
Series Ряды данных
7.1. Обзор объектной модели Excel
451
SeriesCoilection
452
7.2. Уровень приложения — объект Application
Legend
Legend
Font
Border
Interior
LegendEntries (LegendEntry)
LegendKey
Объект Назначение
Legend Легенда диаграммы (подпись, определяющая за- краску точек данных)
Font Шрифт подписей легенды
Border Граница легенды
Interior Заливка легенды
LegendEntry Один из элементов легенды
LegendKey Один из ключей легенды
7.2. Уровень приложения —
объект Application
Корневой объект в иерархии объектной модели Excel — объ-
ект Application. Его многочисленные свойства, методы и со-
бытия предназначены для решения самых общих задач, свя-
занных с функционированием приложения Excel.
7.2. Уровень приложения — объект Application
453
7.2.1. События
Событие Описание
NewWorkBook Создана новая книга
SheetActivate Один из листов стал активным
SheetBeforeDoubleClick Происходит после двойного щелчка мышью, но до запуска обработчика данного события
SheetBeforeRightClick Происходит после щелчка правой кноп - кой мыши, но до запуска обработчика данного события
SheetCalculate Выполнен пересчет листа
Sheetchange Содержимое одной из ячеек или ди а - грамм изменилось
SheetDeactivate Лист перестал быть активным
Sheet FollowHyperlink Щелчок на любой гиперссылке в Excel
Sheet PivotTableUpdate Обновлена сводная таблица
SheetSelectionChange Изменилась выделенная область на ли- сте (кроме листов диаграмм)
WindowActivate Окно стало активным
WindowDectivate Окно перестало быть активным
WindowResize Размеры окна изменились
WorkbookActivate Книга стала активной
WorkbookAddinlnstall Книга загружена на правах надстройки
WorkbookAddinUninstall Книга, загруженная ранее на правах надстройки, выгружена
WorkbookBeforeClose Происходит перед закрытием книги
WorkbookBeforePrint Происходит перед выводом на печать
454
7.2. Уровень приложения — объект Application
Событие Описание
WorkbookBeforeSave Происходит перед сохранением книги
WorkbookDeactivate Книга перестала быть активной
WorkbookNewSheet В книгу добавлен новый лист
WorkbookOpen Книга открыта
WorkbookPivotTableClo- seConnection Завершено подключение сводной таб- лицы
WorkbookPivotTableO - penConnection Выполнено подключение сводной таб- лицы
7.2.2. Свойства
AlertBeforeOverwriting
Определяет (True), что Excel должен выдавать предупреж-
дение перед перезаписью ячеек при выполнении действий
«перетащить и оставить» (Drag&Drop).
Пример
'Не выдавать предупреждение
Application.AlertBeforeOverwriting = False
ActiveCeh
Возвращает текущую ячейку в форме Range-объекта.
Пример
'Получить значение из текущей ячейки
MyVal = ActiveCell.Value
7.2. Уровень приложения — объект Application
455
'Переместиться на три ячейки вправо
ActiveCell.Offset(0, 3).Select
ActivaChart
Возвращает активную диаграмму в форме Chart-объекта.
Пример
With ActiveChart
.HasTitle = True
.ChartTitle.Text = "Обзор за 1999 год"
End With
ActivaPrintar
Возвращает имя текущего принтера.
Пример
MsgBox "Имя принтера: " & ActivePrinter
ActlveSheet
Возвращает текущий лист книги в форме объекта типа Work-
Sheet.
Пример
'Изменить имя текущего листа
ActiveSheet.Name = "Январь"
456 7.2. Уровень приложения — объект Application
Active Window
Возвращает активное окно в форме объекта типа Window.
Пример
'Увеличить на 50%
ActiveWindow.Zoom = 150
ActiveW&rkbook
Возвращает текущую книгу в форме объекта типа Workbook.
Пример
'Сохранить копию в файле
ActiveWorkbook.SaveCopyAs "MyBakUp"
AskTa Updu Links
Определяет (True), что Excel должен запрашивать об об-
новлении автоматических связей при открытии файла. В
случае значения False связи будут обновляться без преду-
преждения.
Пример
Application.AskToUpdateLinks = False
7.2. Уровень приложения — объект Application
457
AltStartupPath
Задает альтернативный стартовый каталог.
Пример
Application.AltStartupPath = "C:\MyData"
Build i
Возвращает полный номер версии Excel.
Пример
MsgBox Application.Build
Cells
Обеспечивает доступ к ячейкам текущего листа.
Пример
'Присвоить значение ячейке "ВЗ"
Cells(3, 2) = 12
Charts
Содержит коллекцию всех листов диаграмм, принадлежа-
щих активной книге.
458 7.2. Уровень приложения — объект Application
Пример
'Присвоить имя первому листу диаграммы
Application.Charts(1).Name = "Диаграмма 1"
Columns
Содержит коллекцию всех столбцов текущего листа.
Пример
'Удалить второй столбец
Columns(2).Delete
Caiition
Определяет текст титульной строки окна приложения.
Пример
Application.Caption = "Обзор цен за 1999 год"
Cursor
Позволяет задать вид указателя с помощью константы.
7.2. Уровень приложения — объект Application 459
Пример
'Указатель — песочные часы
Cursor = xlWait
'Стандартный указатель
Cursor = xlDefault
DefaultFil('°ath
Задает каталог по умолчанию для сохранения файлов.
Пример
Application.DefaultFilePath = "C:\MyData"
Uir4>layF<jrmulaBar
Разрешает (True) или запрещает (False) отображение стро-
ки формул.
Пример
Application.DisplayFormulaBar = False
DisplayFullScreen
Разрешает (True) или запрещает (False) работу приложе-
ния в полноэкранном режиме.
460 7.2. Уровень приложения — объект Application
Пример
Application.DisplayFullScreen = True
DisplayScroHBars
Разрешает (True) или запрещает (False) отображение по-
лос прокрутки.
Пример
Application.DisplayScrollBars = False
OisplnySt.itusB^r
Разрешает (True) или запрещает (False) отображение стро-
ки состояния.
Пример
Application.DisplayStatusBar = False
EnableEvents
Разрешает (True) или запрещает (False) генерацию собы-
тий для приложения.
Пример
'Отключить обработку событий
Application.EnableEvents = False
7.2. Уровень приложения — объект Application
461
EnablaSuund
Разрешает звуковое сопровождение.
Пример
'Звуковое сопровождение событий
Application.EnableSound = True
FixedDecimal
Включает (True) режим «фиксированный десятичный фор-
мат при вводе».
Пример
Application.FixedDecimal = True
Application.FixedDecimalPlaces = 2
FixedDecimalPlaces
Определяет число десятичных разрядов для режима «фик-
сированный десятичный формат при вводе».
Пример
Application.FixedDecimal = True
Application.FixedDecimalPlaces = 2
IgnoreRemoteReqw-.ts
Включает (True) режим «игнорировать DDE-запросы от
других приложений».
(gOlPfeWliW
462
7.2. Уровень приложения — объект Application
Пример
'Игнорировать DDE-запросы
Application.IgnoreRemoteRequests = True
MU veA ftarfte turn
Включает (True) режим «переход к другой ячейке после
ввода».
Пример
Application.MoveAfterReturn = True
Move A fterRetumDirecthxn
Определяет направление для режима «переход к другой
ячейке после ввода».
Пример
Application.MoveAfterReturnDirection =
xlToRight
OperatingSystem
Возвращает имя и номер версии операционной системы.
Пример
MsgBox Application.OperatingSystem
7.2. Уровень приложения — объект Application
463
QcganizationNttme
Возвращает название организации, заданное при регист-
рации.
Пример
MsgBox "Программа зарегистрирована: " &
Application.OrganizationName
Hoi*»
Возвращает коллекцию строк активного листа.
Пример
'Удалить вторую строку
Rows(2).Delete
ScreenUpdating
Разрешает (True) или запрещает (False) обновление экра-
на при выполнении процедуры VBA (макроса).
Пример
'Не обновлять экран
Application.Screenupdating = False
Sniectioi
Обеспечивает доступ к выделенной области.
464 7.2. Уровень приложения — объект Application
Пример
'Скопировать выделенную область в буфер обмена
Selection.Сору
Sheets '•
Коллекция всех листов активной книги.
Пример
'Создать 12 листов, соответствующих 12 месяцам
Sheets.Add Count:=12
For N = 1 To 12
Sheets(N).Name = Format(DateSerial(1, N, 1)
, "mmmm")
Next
Shu wWintJuwsin Taskbar
Определяет режим вывода для каждой рабочей книги от-
дельной кнопки на панели задач.
Пример
Application.ShowWindowsInTaskbar = True
StatusBar
Определяет текст в строке состояния (только для записи).
7.2. Уровень приложения — объект Application 465
Пример
Application.StatusBar = _
"Производится открытие файла, ждите..."
ThisWurktj&ok
Объект, представляющий эту рабочую книгу, т. е. книгу, в
которой размещен выполняющийся в данный момент мак-
рос (процедура VBA).
• Для надстройки Addin это единственный способ обрати-
ться к книге-носителю надстройки.
Пример
'Сохранить книгу
ThisWorkbook.Save
Version
Возвращает номер версии Excel.
Пример
MsgBox Application.Version
windowsutb
Определяет состояние окна Excel.
466
7.2. Уровень приложения — объект Application
Пример
'Максимизировать текущее окно
Application.Windowstate = xlMaximized
Workbooks
Коллекция всех открытых книг.
Пример
'Если открыты другие книги, то закрыть эту
If Workbooks.Count > 1 Then
Workbooks.Close
End If
I Wvrksh&vttunctfan
Возвращает объект WorksheetFunction, предоставляющий
VBA-процедуре доступ к функциям рабочего листа Excel.
Пример
'Вычислить среднее для диапазона А1:А50
MyVal = WorksheetFunction.Average _
(Range("Al:А50"))
7.2. Уровень приложения — объект Application 467
7.2.3. Методы
Ас^а1еМ1Сгиьс>НАрр(Прил^женне)
Параметр Назначение
Приложение Константа, определяющая приложение Microsoft
Комментарий
Делает активным выполняющееся приложение Microsoft,
определенное константой-параметром. Если приложение
не выполняется, оно будет запущено.
Пример
'Вызвать PowerPoint
Application.ActivateMicrosoftАрр
xlMicrosoftPowerPoint
OalculateFuh
Комментарий
Выполняет полный пересчет всех листов всех открытых книг.
Пример
Application.CalculateFull
468 7.2. Уровень приложения — объект Application
Се(<)р^пПеЫат&(ФильгрыИме'Н. ФильтрПоУмалчанниа,
Зягалавок, НадписьНзКнопке. ГрулпэвоеВкд&леюю)
Параметр Назначение
ФильтрыИмен Строка, содержащая названия типов файлов и маски имен, им соответствующие
ФилырПо- Умолчанию Порядковый номер фильтра по умолчанию
Заголовок Заглавная строка окна диалога
Надпись На Кнопке (Только для Macintosh) - надпись на кнопке Открыть
Групповое- Выделение Разрешает (True) выделение группы файлов
Комментарий
Выводит на экран диалог Открытие документа и возвра-
щает имя выбранного пользователем файла или файлов.
• Фактического открытия файла при этом не происходит.
Пример
'Открыть файл, запросив его имя у пользователя
FNStr = "Все файлы (*.*), *.*," &
"Файлы импорта (*.imp), *.imp"
FilName = Application.GetOpenFileName(FNStr, 2)
If FilName <> False Then
Workbooks.Open FilName
End If
7.2. Уровень приложения — объект Application
469
Gat&iveAsFileNama(3ar<?'n3tiK^MMVnti, ФильтрыИмен,
ФильтрПоУмалчакию, Злголоааес, Надпиа НаКнопкэ)
Параметр Назначение
ЗаготовкаИмени Заготовка имени файла, присутствую- щая в окне диалога в момент его от- крытия
ФильтрыИмен Строка, содержащая названия типов файлов и маски имен, им соответствую- щие
ФильтрПоУмолчанию Порядковый номер фильтра по умолча- нию
Заголовок Заглавная строка окна диалога
НадписьНаКнопке (Только для Macintosh) - надпись на кнопке Закрыть
Комментарий
Выводит на экран диалог Сохранение документа и возвра-
щает выбранное или введенное пользователем имя файла.
• Метод не сохраняет файл, однако может изменить теку-
щие каталог и дисковое устройство.
Пример
'Сохранить файл, запросив его имя
'у пользователя
FilName = _
Application.GetSaveAsFileName("MyFilel")
If FilName <> False Then
Workbooks(1).SaveAs FilName
End If
470
7.2. Уровень приложения — объект Application
Не1р(ФайлСправки, КонтексгСпрэвки)
Параметр Назначение
Файл Справки Имя файла справки
КонтекстСправки Идентификатор контекста справки
Комментарий
Выводит на экран справку.
Пример
Application.Help "Analyse.hip", 8001
ОпТ1те(ВремяЗапуска, ИмяПроцедуры, НеПозднее,
ВключтъВРэсписание)
Параметр Назначение
ВремяЗапуска Время, начиная с которого может быть пред- принята попытка запуска процедуры
ИмяПроцедуры Имя процедуры, подлежащей запуску
НеПозднее Время, по достижении которого запуск проце- дуры запрещен
ВключитьВ- Расписание Разрешает (True) включить данный пункт в расписание вместе с предыдущими. Значение False отменяет предыдущие вызовы метода
Комментарий
Служит для запуска процедуры в заданное время.
• Периодическое выполнение можно организовать, вклю-
чив вызов метода в вызываемую им процедуру.
7.3. Книга — объект Workbook
471
Пример
Sub StartMyProc()
1 Вызов процедуры через 5 минут
Application.OnTime Now +
TimeValue ("00 : OS: 00") , "МуРгос"
End Sub
Sub МуРгос()
MsgBox "Прошло 5 минут"
Application.OnTime Now +
TimeValue ("00 : OS’: 00") , "МуРгос"
End Sub
Quit
Комментарий
Завершает выполнение Excel.
• Макросы Auto_Close при этом не выполняются.
Пример
Application.Quit
7.3. Книга — объект Workbook
Книги Excel представлены в VBA объектом Workbook. При его
участии производятся манипуляции с листами, а также дейст-
вия, направленные на книгу в целом.
472 7.3. Книга — объект Workbook
7.3.1. События
Событие Описание
Activate Книга стала активной
Addininstall Книга загружена на правах надстройки
AddinUninstall Книга, загруженная ранее на правах надстройки, выгружена
BeforeClose Происходит перед закрытием книги
BeforePrint Происходит перед выводом книги на пе- чать
BeforeSave Происходит перед сохранением книги
Deactivate Книга перестала быть активной
NewSheet В книгу добавлен новый лист
Open Книга открыта
PivotTableCloseCon - nection Завершено подключение сводной табли- цы
PivotTableOpenCon- nection Выполнено подключение сводной табли- цы
SheetActivate Один из листов книги стал активным
SheetBef oreDoubleC- lick Происходит после двойного щелчка мы- шью, но до запуска обработчика данно- го события
SheetBeforeRightClick Происходит после щелчка правой кноп - кой мыши, но до запуска обработчика данного события
SheetCalculate Выполнен пересчет листа книги
Sheetchange Содержимое одной из ячеек или диа- грамм изменилось
SheetDeactivate Лист книги перестал быть активным
SheetFollowHyperlink Щелчок на любой гиперссылке в книге
7.3. Книга — объект Workbook
473
Событие Описание
SheetPivotTableUpdate Выполнено обновление сводной таблицы
SheetSelectionChange Изменилась выделенная область на лис- те (кроме листов диаграмм)
WindowActivate Окно стало активным
WindowDeactivate Окно перестало быть активным
WindowResize Размеры окна изменились
7.3.2. Свойства
Ac Chart
Возвращает активную диаграмму в форме Chart-объекта.
Пример
With ActiveChart
.HasTitle = True
.ChartTitle.Text = "Обзор за 1999 год"
End With
ActivcSheet
Возвращает активный (текущий) лист книги.
Пример
ActiveSheet.Name = "Обзор за 1999 год"
AiitoUpd&teFrtiquency
Определяет число минут в периоде автоматического со-
хранения (для общих книг, т. е. книг, разделяемых не-
сколькими пользователями).
474 7.3. Книга — объект Workbook
Пример
ThisWorkbook.AutoUpdateFrequency = 5
Charts
Содержит коллекцию всех диаграмм, принадлежащих книге.
Пример
'Присвоить имя первой диаграмме
ThisWorkbook.Charts(1).Name = "Диаграмма 1"
Count
Свойство коллекции Workbooks — возвращает число от-
крытых книг.
Пример
If Workbooks.Count > 1 Then
MsgBox "Есть другие открытые книги!"
End If
FultNamc
Полное имя файла, в котором содержится книга.
Пример
MsgBox ThisWorkbook.FullName
(gOlPfeWliW
7.3. Книга — объект Workbook
475
Namv
Имя файла без имени устройства и пути.
Пример
MsgBox ThisWorkbook.Name
Names
Коллекция, содержащая все определенные в книге имена
ячеек и диапазонов (Range-объектов).
Пример
Dim BeName As Variant
Dim MessStr As String
For Each BeName In ThisWorkbook.Names
MessStr = MessStr & BeName.Name & vbCr
Next
MsgBox MessStr
Path
Путь (полное имя каталога), где находится файл книги.
Пример
MsgBox ThisWorkbook.Path
476
7.3. Книга — объект Workbook
Sheets
Коллекция, содержащая все листы книги.
Пример
'Вставить новый лист в начало книги
ThisWorkbook.Sheets.Add
Коллекция стилей, присоединенных к книге.
Пример
'Создать новый стиль и задать числовой формат
ThisWorkbook.Styles.Add "MyStyle"
ThisWorkbook.Styles("MyStyle").NumberFormat
= "000-00-000"
7.3.3. Методы
Activate
Комментарий
Делает активным окно книги.
Пример
ThisWorkbook.Activate
7.3. Книга — объект Workbook
477
Add (Шаблон) _________________________**i
Параметр Назначение
Шаблон Имя шаблона для создаваемой книги 1
Комментарий
Создает новую книгу (метод коллекции Workbooks).
Пример
Workbooks.Add "MyTempl"
С1о5е(СахранитьИзменения, ИмяФайла, ПоМзршруту)
Комментарий
Закрывает книгу.
Параметр Назначение
СохранитьИзменения Определяет, должны ли (True) быть со- хранены изменения в книге
ИмяФайла Имя файла
ПоМаршруту Булево значение, разрешающее (True) отправку документа по маршруту
Пример
ThisWorkbook.Close True, "MyBookl"
478
7.3. Книга — объект Workbook
Орвп(ИмяФайла, ОбноалятьСаязм,' ТолькоДляЧтения,
Формат, Пароль, ПарольЗаписи.
г РекомендацияТолькоДляЧтения, ИаточникТвкста,
Разделитель, РежимНадстрейки,
ИзаещатьОДоступе, КонаерторФайлои^,
ДобавитьВОпиоок) .
Параметр Назначение 1
ИмяФайла Имя файла, подлежащего открытию
Обновлять Связи Определяет наличие и режим обновления связей
ТолькоДляЧтения Открывать файл в режиме «только для чте- ния» (True)
Формат Для текстовых файлов: определяет вид раз- делителя (один из стандартных или нестан - дартный)
Пароль Пароль для открытия файла
ПарольЗаписи Пароль разрешения записи
Рекомендация- ТолькоДляЧтения Игнорировать (True) параметр «рекомендо- вать доступ только для чтения», если он установлен в открываемом файле
ИсгочникТексга Для текстовых файлов: определяет вид сим- вола конца строки
Разделитель Для текстовых файлов: символ-разделитель, если в параметре «Формат» был выбран не- стандартный разделитель
Режим- Надстройки Используется только при открытии надстроек Excel 4.0
ИзвещатьО- Доступе Если файл недоступен, то известить (True) при появлении доступа
7.3. Книга — объект Workbook
479
Параметр Назначение
Конвертор- Файлов Программа преобразования файлов
Добавить ВСписок Включить открытый файл в «список файлов, открытых последними» (True)
Комментарий
И Открывает файл книги Excel или текстовой файл.
Пример
Workbooks .Open "C:\MyData\MyFile”, True
ОрепТехЦИмяФайлэ, ИсточникТекста, НомсрСтрокы,
ТипТекста, ПризнакТекста, ГруппаРа-Зяелйтелей,
Табуляция, ТзчкэОЗарятой, Запятая, Пробел, S*
ДругойСимвол, Символ, Поля,
* РазделительДробнойЧасти, РазделительРазридаа)
Параметр Назначение
ИмяФайла Имя файла, подлежащего открытию
ИсточникТекста Определяет вид символа конца строки
НомерСтроки Номер строки, с которой следует начать считывание
ТипТекста Константа, определяющая, должно ли рас- познавание полей в тексте производиться по разделительным символам или по по- зициям
480 7.3. Книга — объект Workbook
Параметр Назначение
ПризнакТекста Константа, определяющая символ, кото- рым в считываемом тексте обозначается текстовое значение
Г руппаРазделителей Разрешает (True) рассматривать группу разделительных символов как один разде- литель
Табуляция Определяет (True), что разделителем яв- ляется символ табуляции
ТочкаСЗапятой Определяет (True), что разделителем яв- ляется точка с запятой
Запятая Определяет (True), что разделителем яв- ляется запятая
Пробел Определяет (True), что разделителем яв- ляется пробел
ДругойСимвол Определяет (True), что в качестве разде- лителя должен использоваться другой символ
Символ Символ-разделитель для случая, когда ДругойСимвол = True
Поля Массив, содержащий информацию о по- лях и типах данных в тексте
Разделитель- ДробнойЧасти Разделитель целой и дробной части (нео- бязательный параметр)
Раздел итель- Разрядов Разделитель тысяч (необязательный пара- метр)
Комментарий
Открывает текстовой файл и преобразует его в книгу Excel.
7.3. Книга — объект Workbook 481
Пример
'Импортировать текстовый файл,
'при этом игнорировать
'столбцы 1-3, а столбцы 4-5 интерпретировать
'как строковые значения
Workbooks.OpenText "C:\MyData\Textl.txt", , 1,
xlDelimited, xlDoubleQuote, , , True, , , , ,
Array(Array(1, 9), Array(2, 9), Array(3, 9),
Array(4, 2), Array(5, 9), Array(6, 1), _
Array(7, 1))
Print&ut(Orr Да, Числ^>Копий,
Предварительный Просмотр, Принтер,
ПечатьВФайл, РазобратьПоКолиям, ФайлПечати)
Параметр Назначение
От Номер начальной страницы
До Номер конечной страницы
ЧислоКопий Число копий
Предварительный - Просмотр Открыть (True) перед печатью диалог Предварительный просмотр
Принтер Имя принтера
ПечатьВФайл Значение True разрешает печать в файл
РазобратьПоКопиям (Для случая печати нескольких копий) Значение True соответствует печати копий целыми документами. False — печати ко- пий постранично
ФайлПечати Имя Файла, в который выполняется пе- чать (необязательный параметр)
16 1855
482 7.3. Книга — объект Workbook
Комментарий
Выводит документ на печать.
Пример
'Напечатать страницы 1-5
ThisWorkbook.Printout 1, 5
РгМе^Параль, Структура, Окна)
Параметр Назначение
Пароль Строка пароля, который потребуется для внесения в документ изменении
Структура Защищает (True) от изменений структуру книги
Окна Защищает (True) от изменений окна книги
Комментарий
Защищает книгу от внесения изменений.
Пример
'Защитить от изменения структуру книги
ThisWorkbook.Protect "Юстас Алексу", True
RefrcshAII .
Комментарий
Обновляет внешние данные и сводные таблицы.
7.3. Книга — объект Workbook
483
Пример
ThisWorkbook.RefreshAll
Save
Комментарий
Сохраняет файл.
Пример
ThisWorkbook.Save
SaveAsfUMatpaiuia, ФорматФайла, Пароль,ПарольЗ,
ГольксДп°Ч-геиия, РьзерлначКопия. РржидаДр^’ура,
Конфликт Доступа, ДобавитьВСписок) —
Комментарий
Сохраняет файл под заданным именем.
Пример
ThisWorkbook.SaveAs "MyBookl", , "Юстас Алексу"
484
7.3. Книга — объект Workbook
Параметр Назначение
ИмяФайла Имя файла, в котором необходимо сохра- нить книгу
форматфайла Константа, определяющая формат сохране- ния файла
Пароль Пароль для открытия файла
ПарольЗ Пароль для сохранения изменений в книге
ТолькоДляЧтения Рекомендовать (True) пользователю открыть файл в режиме «только для чтения»
РезервнаяКопия Создать (True) резервную копию
РежимДоступа Константа, определяющая режим доступа к книге
КонфликтДоступа Константа, определяющая реакцию на конф- ликт при доступе к общей книге
ДобавитьВСписок Включить сохраняемый файл в «список фай- лов, открытых последними» (True)
S.t veСоруАу/ИмяФдилз/
Параметр Назначение
ИмяФайла Имя файла, в котором необходимо сохранить книгу
7.3. Книга — объект Workbook 485
Комментарий
Сохраняет копию открытого файла под другим (заданным)
именем.
Пример
ThisWorkbook.SaveCopyAs "MyBook2"
Unprc>t&at(napQat,)
Параметр Назначение
Пароль Пароль, ранее установленный на книгу
Комментарий
Снимает с книги ранее установленную защиту.
Пример
ThisWorkbook.Unprotect "Юстас Алексу”
MfeibPagaPra ww,
Комментарий
Позволяет выполнить предварительный просмотр книги в
таком виде, какой она приобретет, будучи сохранена как
Web-документ.
486
7.4. Лист книги — объект Worksheet
Пример
Workbooks(1).WebPagePreview
7.4. Лист книги — объект Worksheet
Объект Worksheet играет важную роль в программировании
для среды Excel. Лист рабочей книги — это как раз то место,
где собственно все и происходит.
7.4.1. События
Событие Описание
Activate Лист стал активным
BeforeDoubleClick Происходит после двойного щелчка мышью, но до запуска обработчика данного события
BeforeRightClick Происходит после щелчка правой кнопкой мыши, но до запуска обработчика данного события
Calculate Выполнен пересчет листа
Change Содержимое одной из ячеек или диаграмм изменилось
Deactivate Лист перестал быть активным
FollowHyperlink Щелчок на любой гиперссылке листа
Pi /otTablellpdate Выполнено обновление сводной таблицы
Selectionchange Изменилась выделенная область на листе (кроме листов диаграмм)
7.4. Лист книги — объект Worksheet 487
7.4.2. Свойства
СиНз
Возвращает все ячейки текущего листа в форме диапазо-
на (Range-объекта).
Пример
'Поместить значение в ячейку "ВЗ"
ActiveSheet.Cells(3, 3) = 12
Columns . r*!
Возвращает указанный столбец или все столбцы текущего
листа в форме диапазона (Range-объекта).
Пример
'Удалить 3-й столбец
ActiveSheet.Columns(3).Delete
Count
Число листов в книге (свойство коллекции Worksheets).
Пример
MsgBox "Число листов в книге: " &
Worksheets.Count
Namr
Имя текущего (активного) листа.
488 7.4. Лист книги — объект Worksheet
Пример
'Изменить имя 1-го листа
Worksheets(1).Name — "Обзор"
Коллекция, содержащая все определенные в пределах лис-
та имена ячеек и диапазонов (Range-объектов).
Пример
Dim BeName As Variant
Dim MessStr As String
For Each BeName In ThisWorkbook.Names
MessStr = MessStr & BeName.Name & vbCr
Next
MsgBox MessStr
Возвращает следующий за указанным лист книги.
Пример
'Имя листа, следующего за листом "Обзор"
MsgBox Worksheets("Обзор").Next.Name
PugeSatup
И Возвращает объект PageSetup, обеспечивающий доступ к
параметрам страницы.
7.4. Лист книги — объект Worksheet
489
Пример
ActiveSheet.PageSetup.Orientation = xlLandscape
Previous
Возвращает предшествующий указанному лист книги.
Пример
'Имя листа, предшествующего листу "Обзор"
MsgBox Worksheets("Обзор").Previous.Name
Ronge
И Диапазон — ячейка, столбец или строка, а также совокуп-
ность ячеек, состоящая из одной или более непрерывных
областей.
• Обеспечивает доступ ко всем ячейкам активного листа.
Пример
ActiveSheet.Range("АЗ") = 15
Raws
Возвращает диапазон (Range-объект), содержащий указан-
ную строку или все строки листа.
Пример
'Удалить строку 3
ActiveSheet.Rows(3).Delete
490
7.4. Лист книги — объект Worksheet
UsedRanye
Возвращает Range-объект, представляющий использован-
ный диапазон ячеек на листе.
Пример
'Адрес использованной области
MsgBox ActiveSheet.UsedRange.Address
Visible
Возвращает и позволяет задать булево значение, опреде-
ляющее видимость объекта.
• Объект, сделанный невидимым в коде VBA-процедуры,
можно сделать снова видимым только посредством VBA-
кода.
Пример
'Сделать лист "Обзор" невидимым
Worksheets("Обзор").Visible = False
7.4.3. Методы
Activate
Комментарий
Делает лист активным (текущим).
Пример
Worksheets("Обзор").Activate
7.4. Лист книги — объект Worksheet
491
АМ(ЛистДс, ЛистПосле, ЧислвЛистоа, Тип)
Параметр Назначение
ЛисгДо Номер или имя листа, перед которым необ- ходимо выполнить вставку
ЛистПосле Номер или имя листа, после которого необ - ходимо выполнить вставку
ЧислоЛ истов Количество новых листов
Тип Константа, определяющая тип нового листа (листов)
Комментарий
Создает в книге один или несколько новых листов (приме-
няется к коллекции Worksheets).
Пример
'Вставить 5 новых листов после листа "Обзор"
Worksheets.Add , Worksheets("Обзор"), 5
Calculate
Комментарий
Выполняет пересчет листа.
Пример
Worksheets("Обзор").Calculate
492
7.4. Лист книги — объект Worksheet
Сиру(ЛисгДя, ЛистПисло)
Параметр Назначение
ЛистДо Номер или имя листа, перед которым необходимо выполнить вставку копии
ЛистПосле Номер или имя листа, после которого необходимо выполнить вставку копии
Комментарий
Копирует текущий лист и выполняет вставку листа-копии в
указанную позицию.
Пример
'Скопировать лист-образец в позицию
'после листа "Обзор"
Worksheets("Образец").Сору ,
Worksheets("Обзор")
ChartObjacts
Комментарий
Коллекция объектов, представляющих контейнеры (рамки)
диаграмм листа.
Пример
'Изменить стиль рамки для второй диаграммы
Worksheets("Обзор").Chartobjects(2).Border.
LineStyle = xlDot
7.4. Лист книги — объект Worksheet
493
Delete
Комментарий
Удаляет лист.
Пример
Worksheets("Обзор").Delete
FillAcrossSh jets (Диапазон, Тип) *
Параметр Назначение
Диапазон Диапазон (Range-объект), подлежащий копированию
Тип Константа, определяющая тип копирования (все, то- лько формулы и т. д.)
Комментарий
Копирует указанный диапазон листа в ту же самую пози-
цию всех остальных листов коллекции.
Пример
'Скопировать диапазон А1:В5 во все листы
Worksheets.FillAcrossSheets Range("Al:B5"),
xlFillWithAll
494
7.4. Лист книги — объект Worksheet
Моу&(ЛистДо, ЛистПосле)
Параметр Назначение
ЛистДо Номер или имя листа, перед которым необходи- мо поместить перемещаемый лист
ЛистПосле Номер или имя листа, после которого необходи - мо поместить перемещаемый лист
Комментарий
Перемещает текущий лист в указанную позицию.
Пример
'Переместить лист "Обзор" в конец книги
Worksheets("Обзор").Move ,
Worksheets(Worksheets.Count)
РазНДДиап^зон, Связать)
Параметр Назначение
Диапазон Диапазон, указывающий позицию на листе
Связать Разрешает (True) связать вставленные данные с источником
Комментарий
Выполняет вставку содержимого буфера в указанную по-
зицию на листе (или по умолчанию в позицию текущей
ячейки).
• Если указан параметр Связать, то параметр Диапазон
должен быть опущен.
7.4. Лист книги — объект Worksheet
495
Пример
'Выполнить вставку из буфера и связать
Worksheets("Обзор").Paste , True
РгМеаЦПароль, Фигуры, Содержимое, Сценарии,
ТолькоИнтерфейс)
Параметр Назначение
Пароль Строка пароля, который потребуется для внесе- ния в документ изменений
Фигуры Распространяет (True) защиту на фигуры, содер- жащиеся в листе
Содержимое Распространяет (True) защиту на содержимое (ячейки) листа
Сценарии Распространяет (True) защиту на сценарии листа
Только- Интерфейс Определяет (True), что защита распространяется на пользовательский интерфейс, но не на макро- сы листа
Комментарий
Устанавливает на лист защиту от внесения изменений.
Пример
'Защитить лист от изменений
Worksheets("Обзор").Protect "Май", False,
True, False, True
496
7.4. Лист книги — объект Worksheet
За^аАз^ляфаИм, ФормагФамла, Пароль. ПаршьЗ,
ТольюДРяЧп-ния. РезервнаяКмжя. ДрбааИгьВОпиосж)
Параметр Назначение
ИмяФайла Имя файла, в котором необходимо сохра- нить лист
ФорматФайла Константа, определяющая формат сохране- ния файла
Пароль Пароль для открытия файла
ПарольЗ Пароль для сохранения изменений в листе
ТолькоДляЧтения Рекомендовать (True) пользователю открыть файл в режиме «только для чтения»
РезервнаяКопия Создать (True) резервную копию
ДобавитьВСписок Включить сохраняемый файл в «список фай - лов, открытых последними» (True)
Комментарий
Сохраняет лист в отдельном файле.
Пример
Worksheets ("Обзор") .SaveAs "MyBrowse"
Select(ВмчстоИлиВм&ста)
Параметр Назначение
ВместоИлиВместе Булево значение, указывающее, должен ли лист быть выделен вместо (True) ранее вы- деленных или вместе (False) с ними
7.5. Доступ к ячейкам — объект Range
497
Комментарий
Выделяет лист.
Пример
Worksheets("Обзор").Select
SetBtickyrciunctPicture(HM^muij)
Параметр Назначение
ИмяФайла Имя графического файла
Комментарий
Помещает рисунок на задний план листа.
Пример
Worksheets("Обзор").SetBackgroundPicture
"С:\Logo.bmp"
7.5. Доступ к ячейкам — объект Range
Объекты типа Range (диапазоны, Range-объекты) позволяют
обратиться как к отдельной ячейке листа, так и к одной или не-
скольким непрерывным областям ячеек. Поскольку одиночная
ячейка не представлена собственным объектом, единствен-
ный способ доступа к ней заключается в использовании Ran-
ge-объекта.
498 7.5. Доступ к ячейкам — объект Range
Обзор. Доступ к ячейкам посредством Range-объекта
Прямая адресация: Rangel "А1:АЗ")
Доступ по имени диапазона: Rangef "Заголовок")
Доступ по номерам строк и столбцов: Range("A1")(2,3)
Доступ посредством стандартного Range-объекта: Active-
Cell или Selection.
7.5.1. Свойства
Areas
Возвращает одноименную коллекцию, объекты которой пред-
ставляют в форме диапазонов все выделенные области (для
случая множественного выделения несмежных областей).
Пример
Dim TmpRange As Range
For Each TmpRange In Selection.Areas
Next
Cells
Возвращает все ячейки листа.
• Доступ к отдельной ячейке возможен по номеру строки и
столбца.
Пример
'Поместить значение в ячейку D14
Cells(14, 4) = 150
7.5. Доступ к ячейкам — объект Range
499
Column
Возвращает номер первого столбца из относящихся к диа-
пазону.
• Столбцу "А" соответствует номер 1.
Пример
'Получить номер первого столбца диапазона
'"Заголовок"
ColNum = Range("Заголовок").Column
Columns
Представляет все столбцы диапазона.
Пример
'Форматировать 2-й столбец в диапазоне
Range("Данные").Columns(2).Style = "Простой"
Cmrnt
И Возвращает число ячеек в диапазоне.
Пример
MsgBox "Диапазон содержит " & Range
("Данные").Count & " ячеек."
CurrentArray
И Если указанная ячейка принадлежит массиву, то возвра-
щает весь массив.
500
7.5. Доступ к ячейкам — объект Range
Пример
Dim TmpRange As Range
'Если выделена часть массива, то выделить
'весь массив
If Selection.HasArray Then
Set TmpRange = Selection.CurrentArray
End If
CurrentRegion
Возвращает в форме Range-объекта область, состоящую
из указанного диапазона и прилегающих к нему пустых
строк и столбцов.
Пример
Dim Bkompl As Range
'Определить область вокруг ячейки АЗ
'как диапазон
Set Bkompl = Range("АЗ").CurrentRegion
'Просканировать ячейка за ячейкой 1-й столбец
For Each TheCell In Range("АЗ").
CurrentRegion.Columns(1)
Next
'Выделить жирным первую строку
Range("АЗ").CurrentRegion.Rows(1).
Font.Bold = True
EntireCofumn
Возвращает Range-объект, представляющий столбец, к
которому принадлежит указанный диапазон.
7.5. Доступ к ячейкам — объект Range
501
Пример
'Удалить весь столбец
Range("А5").EntireColumn.Delete
Entire Raw
Возвращает Range-объект, представляющий строку, к ко-
торой принадлежит указанный диапазон.
Пример
'Удалить всю строку
Range("D5").EntireRow.Delete
ОЛьеГ(СмещеииеЛоСтрокам. СмещвныеПьСкэлбцамУ *
Возвращает Range-объект, полученный смещением ис-
ходного диапазона на заданное число строк и столбцов.
Пример
'Доступ к ячейке F5 через смещение от ячейки D5
Range("D5").Offset(0, 2).Value = 15
'Доступ к ячейке D9 через смещение от ячейки D5
Range("D5").Offset(4, 0).Value = 15
'Доступ к ячейке F9 через смещение от ячейки D5
Range("D5").Offset(4, 2).Value = 15
fles/ze
Возвращает диапазон, полученный изменением размеров
исходного диапазона до заданного числа строк и столбцов.
502
7.5. Доступ к ячейкам — объект Range
Пример
'Обратиться к диапазону, свернув его
1 до 1 ячейки
Range ("Итог") .Resized, 1) .Сору
'Выделить диапазон, свернув его
'до 2 столбцов при неизменном числе строк
Range("Итог").Resize(, 2).Select
Row
Возвращает номер строки для первой ячейки диапазона.
Пример
RowNum = Range("Итог").Row
Rows
Представляет все строки диапазона.
Пример
'Выделить жирным 1-ю строку в диапазоне
Range("Данные").Rows(l).Font.Bold = True
7.5.2. Методы
Activate
Комментарий
Делает текущей заданную ячейку.
• Ячейка должна находиться внутри выделенной области.
7.5. Доступ к ячейкам — объект Range
503
• Вызов метода не влияет на положение выделенной об-
ласти.
Пример
'Выделить область
Range("АЗ:D6").Select
'Сделать текущей ячейку D5
Range("D5").Activate
Ое/е{е(Нэпраял4.‘ниеСдаига>
Параметр Назначение
Направлен иеСдвига Константа, определяющая направление сдвига оставшихся ячеек после удаления диапазона
Комментарий
Удаляет диапазон.
Пример
'Удалить диапазон со сдвигом
'оставшихся ячеек влево
Range("АЗ:D6").Delete xlShiftloLeft
1азег1(НэпраалсннеСдзигз)
Параметр Назначение
НаправлениеСдвига Константа, определяющая направление сдвига ячеек при вставке диапазона
504
7.5. Доступ к ячейкам — объект Range
Комментарий
Выполняет вставку диапазона.
Пример
'Вставить диапазон со сдвигом ячеек вправо
Range("АЗ:D6").Insert xlShiftToRight
Select
Комментарий
Выделяет диапазон.
Пример
Range("А2:D5").Select
51>ес1а1Се11э(ТипЯчейки, ТипЗнэчення)*
Параметр Назначение
ТипЯчейки Константа, определяющая тип ячейки
ТипЗначения Константа, определяющая тип значения, содер- жащегося в ячейке
Комментарий
Возвращает Range-объект, представляющий все ячейки
листа, удовлетворяющие заданным условиям.
7.5. Доступ к ячейкам — объект Range
505
Пример
'Выделить ячейки, содержащие константы
Range("Исходные данные")_
.Specialcells(xlCellTypeConstants).Select
7.5.3. Доступ к ячейкам — пример
В этом примере свойства и методы объекта Range будут ис-
пользованы для того, чтобы отформатировать список данных.
...Г .. . .- А . V 'I
Номер счета Цата Обе )рот
2457698765 01 9е 98: 3900
Й 2457846765 02 05.98 620п
г 2457898765 03 05.98 8700
:5. 2457898765 0Г 05 96 4500
.6 2457898765 08.05.98 1200
7. 2457898765 10.05.98 1300
2457898765 11.05.98 4900
После форматирования список будет выглядеть следующим
образом:
, i* . 1 'И: 0 .=
1. Номер счета 2457898765
2 1
3, Дат Оборот]
jf 1. Май 1998 3 900.00
5l 2. Май 1998 6 200,00
6. 3. Май 1998 8 700,00
7 6 Май 1998 4 500,00
.8: 8. Май 1998 1 200,00
9. 10. Май 1998 1 300,00
10 11 Май 1998 4 900,00
11
506 7.5. Доступ к ячейкам — объект Range
Sub FormatListOfCounts()
Dim BKompl As Range
Dim BData As Range
Dim NumRows As Integer
'Вставить две строки
Rows("1:2").Insert
'Форматировать номер счета
Range("Bl") = "Номер счета"
Range("Cl") = Range("A4")
With Range("Bl:Cl")
.Font.Bold = True
.Font.Size = 14
End With
Columns("A").Delete
'Форматировать заголовок
With Range("АЗ:B3")
.HorizontalAlignment = xlRight
•Font.Bold = True
.BorderAround Weight:=xlMedium,
Colorlndex:= xlAutomatic
.Interior.Colorindex = 15
End With
'Сформировать область и определить ячейки
Set BKompl = Range("АЗ").CurrentRegion
NumRows = BKompl.Rows.Count
'Область для данных — без заголовка
Set BData = BKompl.Offset(1, 0)
.Resize(NumRows)
'Форматировать столбцы
BData.Columns(1).NumberFormat = "d. mmmm yyyy"
BData.Columns(2).Style = "Финансовый"
'Изменить ширину столбцов
Columns("А:В").Autofit
End Sub
7.6. Доступ к содержимому ячеек — объект Range
507
7.6. Доступ к содержимому ячеек —
объект Range
После того как хитроумные способы адресации ячеек сделали
свое дело и программа получает Range-объект, представляю-
щий требуемое подмножество ячеек листа, наступает пора
сделать что-нибудь с содержимым этих ячеек. И тут снова
пригодятся свойства и методы объекта Range.
7.6.1. Свойства
Characters
Возвращает массив символов, представляющих содержа-
щийся в ячейке текст.
• В качестве необязательных параметров могут быть за-
даны номер первого символа и число символов.
• Символы доступны только для форматирования.
• Изменить значение символьной строки невозможно.
Пример
'Выделить жирным 3-й и 4-й символы
Range("АЗ").Characters(3, 2).Font.Bold = True
Formula
Возвращает содержащуюся в ячейке константу или фор-
мулу в виде строки.
• Формат строки формулы аналогичен отображаемому в
строке формул.
508 7.6. Доступ к содержимому ячеек — объект Range
Пример
1 Вывести текст формулы
MsgBox Range("АЗ")•Formula
'Скопировать формулу в другую ячейку
Range("А4").Formula = Range("АЗ").Formula
FamiulaHidden • ?;
Если лист защищен, то при FormulaHidden = True формула
будет скрыта.
Пример
Range("АЗ").FormulaHidden = True
FurmulaLiacal
Возвращает и позволяет задать формулу в формате "А1"
на языке пользователя.
Пример
MsgBox Range("АЗ").FormulaLocal
FarmukiR 1С1
Возвращает и позволяет задать формулу в виде строки
формата "R1C1".
Пример
MsgBox Range("АЗ").FormulaRlCl
7.6. Доступ к содержимому ячеек — объект Range
509
Formulae 1С1 Local
Возвращает и позволяет задать формулу в виде строки
формата "R1C1” на языке пользователя.
Пример
MsgBox Range("АЗ").FormulaRlCl
HaaArray •
Возвращает булево значение True, если ячейка является
частью массива.
Пример
Dim TmpRange As Range
'Если ячейка относится к массиву,
'то выделить весь массив
If Range("АЗ").HasArray Then
Set TmpRange = Selection.CurrentArray
End If
Свойство по умолчанию, возвращает содержимое ячейки.
• Если в ячейку помещена формула, то свойство вернет
результат вычисления.
Пример
Dim MyPrice As Double
MyPrice = Range("A3").Value
510
7.6. Доступ к содержимому ячеек — объект Range
7.6.2. Методы
А^СьттепЦТ&кстПримь.'ч<1ни<1)
Параметр Назначение
ТекстПримечания Строковое значение - текст примечания
Комментарий
Снабжает ячейку примечанием.
• Повторный вызов метода влечет ошибку выполнения.
Пример
Range("А5").AddComment "Примечание к ячейке А5"
Аи1с*Я11(Диапаз&нЗап<:.лнения, ТипЗаполнения)
Параметр Назначение
ДиапазонЗаполнения Диапазон (Range-объект), подлежащий заполнению (должен включать в себя диапазон-источник)
ТипЗаполнения Константа, определяющая тип заполне- ния диапазона
Комментарий
Выполняет автоматическое заполнение диапазона ячеек
Пример
'Заполнить диапазон названиями месяцев
Range("А8") = "Январь"
7.6. Доступ к содержимому ячеек — объект Range 511
Range("А8").AutoFill Range("А8:А19"),
xlFillMonths
1 Заполнить арифметической прогрессией с шагом 5
Range("В8") = ”10"
Range("В9") = "15"
Range("В8:В9").AutoFill Range(”В8:В40"),
xlFillValues
Clear
Комментарий
Удаляет содержимое, форматирование и примечания яче-
ек диапазона.
Пример
'Очистить диапазон
Range("А5:А10").Clear
ClearGomments
Комментарий
Удаляет примечания к ячейкам.
• Не влияет на содержимое и форматирование ячеек.
Пример
'Удалить примечания
Range("А5:А10").ClearComments
512 7.6. Доступ к содержимому ячеек — объект Range
QtezirContents
Комментарий
Удаляет содержимое ячеек диапазона.
• Не влияет на примечания и форматирование.
Пример
'Удалить содержимое
Range("А5").ClearContents
7.6.3. Доступ к содержимому ячеек — пример
В данном примере автозаполнение используется для созда-
ния таблицы, отражающей ежемесячные начисления в тече-
ние двух лет. Два столбца таблицы содержат соответственно
даты и суммы, при этом все строки таблицы, кроме первой,
формируются благодаря автозаполнению.
Sub MonCount()
Dim BDate As Range 'Столбец дат
Dim CValue As Range
'Ячейка с начальным значением
Dim BSaldo As Range 'Остальные ячейки
'Определить диапазон
Set BDate = Selection.Resize(24, 1)
Set CValue = Selection.Cells(1, 2)
Set BSaldo = Selection.Offset(1, 1).Resize(23, 1)
'Заполнить столбец дат
BDate(1).AutoFill BDate, xlFillMonths
'Заполнить остальные ячейки
BSaldo.FormulaRlCl = "=R[-1]C+" & CValue
End Sub
7.7. Форматирование ячеек — объект Range
513
7.7. Форматирование ячеек —
объект Range
Наконец, нужные ячейки заполнены соответствующими зна-
чениями. Осталось придать им требуемый вид, т. е. отформа-
тировать. И здесь снова на помощь придут свойства и методы
объекта Range.
7.7.1. Свойства
Borders
Содержит коллекцию, представляющую границы ячеек.
Пример
'Снабдить ячейки диапазона линиями
Range("АЗ:С9").Borders.LineStyle = xlContinuous
И Определяет ширину столбцов в диапазоне.
• Единицей измерения служит ширина символов стиля
«Normal» (если речь идет о пропорциональных шрифтах,
то имеется в виду ширина символа «О»). Таким образом
последовательность «0123456789» идеально поместит-
ся в ячейку шириной 10.
• Возвращает ширину ячеек диапазона или Null, если в
диапазоне есть ячейки с разной шириной.
Пример
Range("АЗ:С9").Columnwidth = 10
17 1855
514
7.7. Форматирование ячеек — объект Range
Font <
Возвращает объект, служащий для доступа к параметрам
шрифта.
Пример
'Форматировать шрифт в ячейках диапазона
With Range("АЗ:D9").Font
.Shadow = True
.Name = "Arial"
.Size = 16
End With
Определяет высоту строк в диапазоне.
Пример
'Третья строка — 24 пункта высотой
Range("АЗ").RowHeight = 24
Hidden а...
Делает строку или столбец скрытым (True) или открывает
его (False).
• Range-объект должен содержать при этом целый стол-
бец или строку.
Пример
'Скрыть строки 3-5
Range("АЗ:А5").EntireRow.Hidden = True
(gOlPfeWliW
7.7. Форматирование ячеек — объект Range
515
HorizontalAlignm<*at
Определяет режим горизонтального выравнивания содер-
жимого ячеек диапазона.
Пример
'Задать выравнивание по центру
Range("АЗ:С9").HorizontalAlignment =
xlHAlignCenter
Interior
Возвращает объект типа Interior.
• Определяет свойства ячейки «изнутри».
Пример
With Range("АЗ:D7").Interior
.Color = RGB(192, 164, 12)
.Pattern = xlPatternLightDown
End With
t-ockea
Разрешает (False) или запрещает (True) модификацию со-
держимого ячеек в ситуации, когда лист в целом защищен
от внесения изменений.
• Возвращает соответствующее булево значение или Null,
если ячейки диапазона имеют разные значения этого
свойства.
Пример
'Разрешить модификацию ячеек
Range("АЗ:С9").Locked = False
516
7.7. Форматирование ячеек — объект Range
Style
Определяет стиль, заданный для ячеек диапазона.
Пример
Range("АЗ").Style = "Процентный"
UseStairdaictHeight
Я Разрешает (Тrue) строкам диапазона принять стандартную
для данного листа высоту.
Пример
Range("АЗ:С9").UseStandardHeight = True
d^St^ndarOWititti j
И Разрешает (True) столбцам диапазона принять стандарт-
ную для данного листа ширину.
Пример
Range("АЗ:С9").UseStandardWidth = True
VerticatAh'jnnVint
Определяет режим вертикального выравнивания в ячейках
диапазона.
Пример
Range("АЗ:С9").VerticalAlignment = _
xlVAlignCenter
7.7. Форматирование ячеек — объект Range
517
Wrap Тех t
Разрешает (True) перенос непомещающихся строк.
Пример
Range("АЗ").WrapText = True
1П.1.. Методы
C/earFurmafs
Комментарий
Удаляет форматирование ячеек диапазона.
• Не влияет на содержимое ячеек и примечания к ним.
Пример
'Удалить форматирование
Range("А5").ClearFormats
AutitFit
Комментарий
Изменяет ширину столбцов так, чтобы их содержимое
было видно полностью.
• Может применяться только в отношении столбцов.
Пример
Range("А5:Al0").EntireColumn.AutoFit
(gOlPOMW
518 7.8. Операции co списками — объект Range
7.8. Операции со списками —
объект Range
Списки Excel позволяют решать многие сложные задачи, как,
например, фильтрация и сортировка данных. Для работы со
списками в VBA используется все тот же вездесущий объект—
Range.
7.8.1. Свойства
AutoFlItcrMocte
Возвращает булево значение True, если ячейка отобража-
ет поле автофильтра, и False в противном случае (для объ-
екта Worksheet).
• Позволяет задать значение False, чтобы запретить ото-
бражение поля автофильтра.
• Не позволяет задать значение True. Вместо этого следу-
ет воспользоваться методом AutoFilter.
Пример
If ActiveSheet.AutoFilterMode Then
ActiveSheet.AutoFilterMode = False
End If
7.8.2. Методы
AutoFilter (Пале, Критерии!, Оператор, Критерий2)
Комментарий
В варианте без параметров включает и выключает отобра-
жение поля автофильтра в ячейке.
При наличии параметров выполняет фильтрацию списка в
соответствии с заданными критериями.
7.8. Операции co списками — объект Range 519
Параметр Назначение
Поле Относительный номер поля в списке (счет с 1, на- чиная с крайнего левого)
Критерий! Строка, задающая критерий фильтрации
Оператор Константа, определяющая фильтрацию в случае ис- пользования двух критериев
Критерий? Строка, задающая второй критерий фильтрации
Пример
'Включить поле автофильтра и выбрать записи,
'где второе поле содержит значение, большее 2
Range("А7:С9").AutoFilter 3, ">2"
RemoveSubtotal
Комментарий
Удаляет промежуточные итоги из списка.
Пример
Range("А7:С9").Removesubtotal
ShawAIIData
Комментарий
Делает видимыми все строки списка, в поле автофильтра
при этом автоматически выбирается пункт Все (для объ-
екта Worksheet).
520 7.8. Операции co списками — объект Range
Пример
ActiveSheet.ShowAllData
Sh{»w!3ataFi>im : •
Комментарий
Включает режим просмотра и модификации данных с по-
мощью формы (для объекта Worksheet).
• Текущая ячейка листа должна при этом находиться в пре-
делах списка.
Пример
ActiveSheet.ShowDataForm
Sort(Ключ 1. НапрзвлениеСартиравкм1, Ключ2, . <
ТипЭлсллгнгча, НаправлениеСортироаки2, КлючЗ,
Напраол&нн&СарпцкшкиЗ, Заголовок,
ПорядсжСор-пгроок», НеИгн1^иршапРипкт))г
СтрокмСтолбцы, МетйдСортмровки)
Комментарий
Выполняет сортировку в заданном диапазоне.
• Применим не только к спискам.
7.8. Операции co списками — объект Range
521
Параметр Назначение
Ключ1 Поле, по которому сортировка производится в первую очередь
Направление- Сортировки! Константа, определяющая направление сорти- ровки по первому ключу
Ключ2 Поле, по которому сортировка производится во вторую очередь
ТипЭлементов (Только для сводных таблиц) константа, опре- деляющая тип элементов, подлежащих сорти- ровке
Направление- Сортировки2 Константа, определяющая направление сорти- ровки по второму ключу
КлючЗ Поле, по которому сортировка производится в последнюю очередь
Направление- СортировкиЗ Константа, определяющая направление сорти- ровки по третьему ключу
Заголовок Константа, определяющая, должна ли первая строка рассматриваться в качестве заголовка
Порядок- Сортировки Определяет порядок сортировки
Не- Игнорировать- Регистр Определяет, должно ли (True) при сортировке делаться различие между верхним и нижним регистрами
Строки- Столбцы Константа, определяющая направление сорти- ровки (по строкам или по столбцам)
Метод- Сортировки Константа, определяющая метод сортировки (фонетический или по кодовой странице)
522
7.8. Операции co списками — объект Range
Пример
'Сортировать данные в диапазоне по возрастанию
'значения в столбце с заголовком "Имя"
Range("Al:CIO").Sort "Имя", xlAscending, , ,
, , , xlYes
ЗиЬТоТаЦГруппироаатъПо, Функция, Спис&кЛолей,
За маня, РазрыаыС траниц, Над ПоДгруппай)
Параметр Назначение
ГруппироватьПо Номер поля, по которому должна произво- диться группировка
Функция Константа, определяющая вид функции, вы- числяющей промежуточные итоги
СписокПолей Массив, содержащий список номеров полей, которые подлежат обработке
Замена Разрешает (True) замену существующих про- межуточных итогов
РазрывыСтраниц Разрешает (True) вставлять разрывы страниц между группами
НадПоДгруппой Константа, определяющая положение проме- жуточного итога (над или под группой)
Комментарий
Вычисляет промежуточные результаты для списка.
• Список должен быть предварительно отсортирован.
7.9. Внедренные диаграммы — объект Chartobject
523
Пример
'Сортировать данные в диапазоне по возрастанию
'значения в столбце с заголовком "Имя"
Range("Al:CIO").Sort "Имя", xlAscending, , ,
, , , xlYes
'Построить промежуточный итог (Сумму) для
'столбца 3, и сгруппировать по 1-му столбцу
Range ("Al: СЮ"). Subtotal 1, xlSum, 3
'Построить промежуточный итог (Среднее) для
'столбцов 3 и 6, и сгруппировать по 1-му столбцу
Range("Al:CIO").Subtotal 1, xlAverage,
Array(3, 6)
7.9. Внедренные диаграммы —
объект Chartobject
Объект Chartobject представляет собой контейнер, предназ-
наченный для внедрения диаграмм (т.е. объектов Chart) на
обычный лист книги Excel. Визуально—это просто рамка, раз-
меры и положение которой на листе можно произвольно ме-
нять.
7.9.1. Свойства
Chart
Возвращает объект Chart, т. е. собственно диаграмму.
Пример
'Разрешить отображение заголовка
ActiveSheet.Chartobjects(1)
.Chart.HasTitle = True
(gOlPfeWliW
524
7.9. Внедренные диаграммы — объект Chartobject
Count
Возвращает число внедренных диаграмм на листе (для
коллекции Chartobjects).
Пример
MsgBox ActiveSheet.ChartObjects.Count
& " диаграмм"
Name
Имя диаграммы.
Пример
Dim MyChO As Chartobject
'Создать контейнер для диаграммы
'и задать ему имя
Set MyCho = ActiveSheet.Chartobjects
.AdddOO, 200, 300, 400)
MyCho.Name = "Диаграмма 1"
RoundedCorners
Задает (True) для рамки признак «скругленные углы».
Пример
ActiveSheet.ChartObj ects(1)
.RoundedCorners = True
ShuJuw
Задает (True) для рамки признак «с тенью».
7.9. Внедренные диаграммы — объект Chartobject 525
Пример
ActiveSheet.Chartobjects(1).Shadow = True
7.9.2. Методы
A0'r;/3te
Комментарий
И Делает контейнер (рамку) активным.
Пример
ActiveSheet.Chartobjects(1).Activate
А&1(Слеаа. Снерху, Ширина. Высота).
Параметр Назначение
Слева Отступ слева от края листа
Сверху Отступ сверху от края листа
Ширина Ширина рамки
Высота ... Высота рамки
Комментарий
Создает новый объект Chartobject и помещает его на
лист (для коллекции Chartobjects).
• Все параметры обязательны.
(gOlPfeWliW
526 7.9. Внедренные диаграммы — объект Chartobject
Пример
Dim MyCho As Chartobject
Set MyCho = ActiveSheet.Chartobjects _
.Add(100, 200, 300, 400)
"Ofj
Комментарий
Копирует диаграмму в буфер обмена.
Пример
ActiveSheet.Chartobjects(1).Copy
Cut
Комментарий
Вырезает диаграмму в буфер обмена.
Пример
ActiveSheet.Chartobjects(1).Cut
Delete
Комментарий
Удаляет диаграмму вместе с контейнером.
7.10. Диаграммы — объект Chart
527
Пример
ActiveSheet.Chartobjects(1).Delete
7.10. Диаграммы — объект Chart
Объект Chart — это и есть собственно диаграмма. При этом
Chart-объект может быть диаграммой, внедренной на обыч-
ный лист книги Excel (при этом он заключен в контейнер Chart-
Object и доступен через коллекцию Chartobjects этого листа).
С другой стороны, объект Chart может быть элементом кол-
лекции Charts, принадлежащей книге, и в этом случае он вхо-
дит в книгу на правах листа (тогда говорят о листе диаграммы).
7.10.1. События
Событие Описание
Activate Диаграмма стала активной
BeforeDoubleClick Происходит после двойного щелчка мышью, но до запуска обработчика данного события
BeforeRightclick Происходит после щелчка правой кнопкой мыши, но до запуска обработчика данного события
Calculate Диаграмма отобразила новые или изменен- i ные данные
Deactivate Диаграмма перестала быть активной
DragOver Происходит при перетаскивании диапазона ячеек через область диаграммы
DragPlot Диапазон ячеек, подвергавшийся перетаски- ванию, оставлен в области диаграммы
528
7.10. Диаграммы — объект Chart
Событие Описание
Mouse Down Нажата одна из кнопок мыши (указатель на - ходится над областью диаграммы)
MouseMove Указатель переместился (над областью диа- граммы)
MouseUp Отпущена ранее нажатая кнопка мыши (ука- затель находится над областью диаграммы)
Resize Размеры диаграммы изменились
| Select Выделен один из элементов диаграммы
Serieschange Изменилось содержимое ряда данных, свя- занного с диаграммой
7.10.2. Свойства
Определяет вид объемного элемента гистограммы.
Пример
'Объемная гистограмма состоит из цилиндров
Charts (1) .BarShape = xlCylinder
QhartArea
Содержит объект, представляющий область диаграммы.
Пример
Charts(1).ChartArea.Interior.Colorindex = 12
7.10. Диаграммы — объект Chart
529
ChartTUt^
Определяет заголовок диаграммы.
Пример
'Разрешить отображение заголовка
'и задать его текст
Charts(1).HasTitle = True
Charts(1).ChartTitle.Text = _
"Динамика цен за 1999 год"
Chart
Определяет тип диаграммы.
Пример
'Тип диаграммы — "Пирамидальная"
Charts (1) .ChartType = xlPyramidColStacked
Count
Возвращает число листов диаграмм в книге (число эле-
ментов коллекции Charts).
Пример
MsgBox "В книге " & Charts.Count &
" листов диаграмм."
itepthperc&nt
Определяет глубину трехмерной диаграммы в процентах
от ее ширины (от 20 до 2000).
Ж|й1Ж»[11й
530 7.10. Диаграммы — объект Chart
Пример
'Глубина диаграммы — 250%
Charts (1).DepthPercent = 250
Si&vatfoa
Угловое значение в градусах, определяющее высоту рас-
положения точки зрения на объемную диаграмму.
Пример
Charts(1).Elevation = 20
HeightPerc&nt
Определяет высоту объемной диаграммы в процентах от
ее ширины (от 5 до 5000).
Пример
Charts(1)-HeightPercent =75
Ligetuj
Определяет свойства легенды.
Пример
'Задать шрифт легенды
Charts(1).Legend.Font-Name = "Arial"
Nume
Имя листа диаграммы.
7.10. Диаграммы — объект Chart
531
Пример
'Изменить имя листа диаграммы
Charts(1).Name = "Обзор цен"
PageSetup
Обеспечивает доступ к параметрам страницы.
Пример
'Согласовать размер диаграммы
'с размером страницы
Charts(1).PageSetup.Chartsize = xlFitToPage
РЫАгеа
Возвращает объект, представляющий область построения
диаграммы.
Пример
Charts(1).PlotArea.Interior.Colorindex = 14
notation
Для объемных диаграмм определяет угол поворота облас-
ти построения вокруг оси Z в градусах.
Пример
Charts(1).Rotation = 45
532 7.10. Диаграммы — объект Chart
7.10.3. Методы
Activate
Комментарий
Делает диаграмму активной.
Пример
Charts(1).Activate
А(М(Лм<згДа, ЛисгП&але, ЧислаЛкстаи}
Параметр Назначение
ЛистДо Номер или имя листа, перед которым требуется вставить лист диаграммы
ЛистПосле Номер или имя листа, после которого требуется вставить лист диаграммы
ЧислоЛистов Число листов диаграмм, подлежащих вставке
Комментарий
Вставляет один или несколько листов диаграмм в задан-
ную позицию в книге (для коллекции Charts).
Пример
Charts.Add
7.10. Диаграммы — объект Chart
533
ApplyCustomType(Tnn, ИмяТипз)
Параметр Назначение
Тип Константа, определяющая тип диаграммы
ИмяТипа Имя пользовательского (нестандартного) типа
Комментарий
Применяет заданный тип диаграммы.
Пример
'Применить стандартный тип "Поверхность"
Charts(1).ApplyCustomType xlBuiltln,
"Поверхность"
Ахес(Тип, Группа)
Параметр Назначение
Тип Константа, определяющая тип оси
Группа Константа, определяющая группу
Комментарий
Возвращает коллекцию осей (вариант без параметров)
или определенную параметрами ось.
Пример
'Задать для оси значений пределы шкалы
Charts (1) -Axes(xlValue) .MinimumScale = 1
534
7.10. Диаграммы — объект Chart
Charts(1).Axes(xlValue).Maximumscale = 5
СОРУ
Комментарий
Копирует диаграмму в буфер обмена.
Пример
Charts(1).Сору
De/ete
Комментарий
Удаляет диаграмму.
Пример
Charts(1).Delete
Paste .
Комментарий
Выполняет вставку данных для диаграммы из буфера.
Пример
Charts(1).Paste
7.10. Диаграммы — объект Chart
535
PrintOutfOr, Ди, ЧислиКипнй,
Пр&дварттельныйПросмотр, Принтер,
ПечатьВФейл, РэзибратъПоКипиим, ФзйлПечэти)
Параметр Назначение
От Номер начальной страницы
До Номер конечной страницы
ЧислоКопий Число копий
Предварительный - Просмотр Открыть (True) перед печатью диалог Предварительный просмотр
Принтер Имя принтера
ПечатьВФайл Значение True разрешает печать в файл
РазобратьПоКопиям (Для случая печати нескольких копий) Значение True соответствует печати копий целыми диаграммами. False - печати ко- пий постранично
ФайлПечати Имя файла, в который выполняется пе- чать (необязательный параметр)
Комментарий
Выводит диаграмму на печать.
Пример
Charts(1).Printout
536
7.10. Диаграммы — объект Chart
S&tBackqrcwndf4cture(MM*i&tMna)
Параметр Назначение
ИмяФайла Имя графического файла
Комментарий
Загружает подложку (фоновый рисунок).
Пример
Charts (1) .SetBackgroundPicture _
"С:\Data\Logo.bmp"
5е13еигсеОа1а(Диапазон, Ориентация)
Параметр Назначение
Диапазон Диапазон (Range-объект), содержащий данные
Ориентация Константа, определяющая ориентацию для считы - вания данных (по столбцам или по строкам)
Комментарий
Задает диапазон, служащий источником данных для по-
строения диаграммы.
Пример
'Отобразить данные (считывать построчно)
Charts(1).SetSourceData Range("Al:F7"), xlRows
7.10. Диаграммы — объект Chart
537
7.10.4. Пример
В данном примере диаграмма будет построена по данным
таблицы, описывающей динамику оборотов за три месяца по
четырем округам.
ЦДинамика оборотов
Север Восток Юг Запад За квартал
j Й Яшарь 370 ОООр 350 000р. 340 000р. 340 000р. 1 400 ОООи.
Ц Февоаль |330 000о. 290 000о. [300 000и. 290 000р. 1 210 000о. Щв^Маот |2В0 000о. Ж0 0П(]р 260 000о. ЩОПИр. 2610000j.
Чтобы отобразить такую таблицу, потребуется объемная гис-
тограмма, надлежащим образом отформатированная.
538 7.10. Диаграммы — объект Chart
'Построить объемную гистограмму
Sub Dia3D()
Dim МуСО As Chartobject
Dim MyC As Chart
'Создать и инициализировать объекты
Set МуСО = ActiveSheet.Chartobjects
.Add(5, 190, 475, 285)
Set MyC = MyCO.Chart
'Вначале свойства рамки-контейнера
With МуСО
.Name = "Dia3D"
.RoundedCorners = True
.Shadow = True
End With
'Строим собственно диаграмму
With MyC
'Источник данных и тип
.SetSourceData Range("А4:Е7"), xlColumns
.ChartType = x!3dColumn
.HasLegend = False
'Определить углы
.Elevation = 15
.Rotation = 115
.Perspective = 30
'Определить подложку
.ChartArea.Fill.PresetTextured _
msoTextureRecycledPaper
'Заголовок диаграммы
.HasTitle = True
With .ChartTitle
.Characters.Text = Range("Al")
.Font.Size = 14
End With
7.10. Диаграммы — объект Chart 539
'Форматировать оси
With .Axes(xlCategory)
.HasMajorGridLines = True
.TickLabels.Font.Size = 8
End With
With .Axes(xlSeries)
.HasMajorGridLines = True
.TickLabels.Font.Size = 8
End With
With .Axes(xlValue)
.TickLabels.Font.Size = 8
.MinorUnit = 50000
.MajorUnit = 100000
End With
End With
End Sub
(gOlPfeWliW
Объект PowerPoint
В рамках программы работы с презентациями Microsoft Po-
werPoint 2002 программисту на языке VBA 6.3 доступны сред-
ства управления презентациями, как таковыми, и их элемен-
тами — слайдами, таблицами, надписями.
Возможности оперирования таблицами и их элементами в
этой версии PowerPoint существенно расширены по сравне-
нию с предыдущей.
Обзор. Структура объекта PowerPoint
8.1. Обзор объектной модели PowerPoint
541
8.1. Обзор объектной модели PowerPoint
8.1.1. Приложение
Application
542
8.1. Обзор объектной модели PowerPoint
Объект Назначение
Application Приложение, корневой объект иерархии
Addin Надстройка Addin, элемент коллекции Ad- dins - в PowerPoint она представляет все надстройки, включая незагруженные
Answerwizard Мастер Answerwizard
Assistant Помощник Office
AutoCorrect Средства автокоррекции
COMAddln СОМ-надстройка в приложении
CommandBar Панель инструментов или панель меню
DefaultWeb- Options Глобальные атрибуты открытия/сохранения Web-страницы
Documentwindow Окно открытого файла (документа)
FileDialog Диалог выбора файла
FileSearch Диалог Открытие документа
Languagesettings Установка языка в приложении
NewFile Список файлов на панели Создание пре- зентации в области задач
Options Параметры приложения Power Point
Presentation Презентация
SlideShowWindow Окно демонстрации слайдов
VBE Редактор Visual Basic
8.1. Обзор объектной модели PowerPoint
543
Documentwindows
544 8.1. Обзор объектной модели PowerPoint
Объект Назначение
Document- Window Окно открытого файла (документа)
Pane Область окна документа
Presentation Представляет презентацию в целом
Selection Выделенная область
ShapeRange Представляет одну или несколько автофигур
Table Таблица
Column Колонка таблицы
CeliRange Область ячеек в таблице
Borders Границы ячейки (области ячеек) в таблице
Shape Автофигура
Row Строка в таблице
SlideRange Представляет один или несколько слайдов
TextRange Представляет непрерывный фрагмент текста (текст выделенной области, текст, связанный с автофигурой и т. д.)
View Режим просмотра (режим окна)
8.1. Обзор объектной модели PowerPoint 545
SlideShowWindows
SlideShowWindows
(SlideShowWindow)
Presentation
SlideShowView
Объект Назначение
SlideShow- Window Окно показа слайдов
Presentation Представляет презентацию в целом
SlideShowView Определяет параметры показа слайдов
8.1.2. Презентация
Presentations (Presentation)
— ColorSchemes (ColorScheme) — CommandBars Documentproperties (Documentproperty) Documentwindows (Documentwindow) ExtraColors Fonts (Font) HTMLProject — Master — PageSetup — Printoptions — PublishObjects — Slides (Slide) — SlideShowSettings — Tags — WebOptions
18 1855
546 8.1. Обзор объектной модели PowerPoint
Объект Назначение
Presentation Презентация
ColorScheme Цветовая схема
CommandBar Панель команд (инструментов, меню)
Documentproperty Представляет общие свойства документа (автор, название и т. д.)
Documentwindow Окно документа
ExtraColors Дополнительные, не включенные в цветовую схему цвета
Font Представляет параметры шрифта
HTMLProject HTML-проект
Master Образец слайда (заголовка, заметки, выдачи)
PageSetup Обеспечивает доступ к параметрам страницы
PrintOptions Содержит параметры вывода на печать
PublishObjects Презентация, которую можно сохранить в HTML-формате
Slide Слайд
SlideShowSettings Обеспечивает доступ к параметрам показа слайдов
Tags Содержит имя и значение определенного пользователем свойства
WebOptions Параметры сохранения/открытия веб-страниц
8.1. Обзор объектной модели PowerPoint
547
ColorScheme
ColorScheme
RGBColor
Объект Назначение
ColorScheme Цветовая схема.
RGBColor Значение цвета в цветовой схеме.
PrintOptions
Printoptions
PrintRanges (PrintRange)
Объект Назначение
PrintOptions Опции печати.
PrintRange Область печати.
SlideShowSettings
548
8.1. Обзор объектной модели PowerPoint
Объект Назначение
SlideShowSettings Обеспечивает доступ к параметрам показа | слайдов
ColorFormat Цвет объекта
NamedSlideShow Представляет определенное пользователем подмножество слайдов презентации
SlideShowWindow Окно показа слайдов
8.1.3. Слайды
Slides
8.1. Обзор объектной модели PowerPoint 549
Объект Назначение
Slide Слайд
Application Приложение PowerPoint
ColorScheme Цветовая схема
HeadersFooters Верхние и нижние колонтитулы
Hyperlink Г иперссылка
Master Образец, принадлежащий слайду
Scripts Коллекция HTML-скриптов
Shape Объект на рабочей поверхности слайда - местозаполнитель, текст, автофигура, рису- нок или OLE-объект
ShapeRange Диапазон объектов слайда
SlideShow- Transition Представляет параметры «перехода слайда» в процессе презентации (эффект)
Tags Содержит имя и значение определенного по- льзователем свойства
HeadersFooters
HeadersFooters
।— HeaderFooter
Объект Назначение
HeadersFooters Коллекция объектов HeaderFooter.
HeaderFooter Представляет верхние и нижние колонтитулы (слайда, страницы, выдачи и т. д.)
550
8.1. Обзор объектной модели PowerPoint
SlideShowTransition
SlideShowT ransition
'— SoundEffect
Объект Назначение
SlideShowTransition Представляет параметры «перехода слай - да» в процессе презентации (эффект)
SoundEffect Определяет звуковой эффект, сопровожда- ющий переход слайда
8.1.4. Образцы
Master
8.1. Обзор объектной модели PowerPoint 551
Объект Назначение
Master Образец слайда (заголовка, заметки, выдачи)
ColorScheme Цветовая схема
Design Дизайн (шаблон) слайда
HeaderFooter Представляет верхние и нижние колонтитулы об- разца
HyperLink Гиперссылка
Shape Объект на рабочей поверхности образца слайда - местозаполнитель, текст, автофигура, рисунок или OLE-объект
ShapeRange Диапазон объектов слайда
SlideShow- Transition Представляет параметры «перехода слайда» в процессе презентации (эффект)
Textstyle Стиль (шаблон формата) текстового объекта
TimeLine Анимационные параметры
HeadersFooters
HeadersFooters
HeaderFooter
Объект Назначение
HeadersFooters Коллекция объектов HeaderFooter
HeaderFooter Представляет верхние и нижние колонтитулы (слайда, страницы, выдачи и т. д.)
(gOlPOMW
552
8.1. Обзор объектной модели PowerPoint
Textstyles
Textstyles (Textstyle)
Ruler
TextFrame
TextStyleLevels
Объект Назначение
Textstyle Шаблон стиля для текстового объекта
Ruler Представляет линейку (содержит сведения о пози- циях табуляции и втяжках)
TextFrame Область текста в автофигуре
TextStyle- Level Формат уровня в текстовой структуре слайда
Ruler
Ruler
RulerLevels (RulerLevel)
TabStops (TabStop)
Объект Назначение
Ruler Представляет линейку (содержит сведения о пози - циях табуляции и втяжках)
RulerLevel Линейка для отдельного уровня в текстовой структу- ре слайда
TabStop Позиция табуляции
8.1. Обзор объектной модели PowerPoint
553
TextFrame
TextFrame
Ruler
TextRange
Actionsettings
Font
ParagraphFormat
Объект Назначение
TextFrame Область текста в автофигуре
Ruler Представляет линейку (содержит сведения о пози - циях табуляции и втяжках)
TextRange Представляет непрерывный фрагмент текста (текст выделенной области, текст, связанный с автофигу- рой и т.д.)
Action- Setting Определяет реакцию автофигур и фрагментов текста на действия пользователя в процессе выполнения презентации
Font Определяет параметры шрифта
Paragraph - Format Определяет параметры форматирования абзаца
554
8.1. Обзор объектной модели PowerPoint
TextStyleLevels
TextStyleLevels
Font
ParagraphFormat
I—| BulletFormat
I—| Font
Объект Назначение
TextStyle- Level Формат отдельного уровня в текстовой структуре слайда
Font Определяет параметры шрифта
Paragraph- Format Определяет параметры форматирования абзаца
BulletFormat Определяет параметры маркера абзаца
Font Определяет параметры шрифта
8.1. Обзор объектной модели PowerPoint
555
Shapes
Shapes (Shape)
ActionSettings OLEFormat
Adjustment Pictu reFormat
— Animationsettings PlaceholdersFormat
CalloutFormat ShadowFormat
ConnectorFormat ShapeNodes (ShapeNode)
— Diagram ShapeRange
— DiagramNode Table
FillFormat Tags
GroupShapes T extEff ectFormat
LineFormat TextFrame
LinkFormat ThreeDFormat
Объект Назначение
Shape Объект на рабочей поверхности слайда, пред- ставляющим текстовый элемент, автофигуру, рисунок или OLE-объект
ActionSetting Определяет реакцию объекта Shape на дейст- вия пользователя в процессе выполнения пре- зентации
Adjustments Представляет маркеры изменения размеров
Animationsettings Содержит параметры анимации
556 8.1. Обзор объектной модели PowerPoint
Объект Назначение
CalloutFormat Определяет формат выноски
Connector Format Определяет формат соединительной линии
Diagram Диаграмма
DiagramNode Узел диаграммы
FillFormat Определяет формат заливки
GroupShape Группа объектов слайда
LineFormat Определяет формат линий и рамок
LinkFormat Служит для форматирования связанного объекта
OLEFormat Служит для форматирования связанного или внедренного объекта
PictureFormat Служит для форматирования рисунка или OLE-объекта
Placeholder Format Параметры местозаполнителя
ShadowFormat Определяет параметры тени объекта
ShapeNode Содержит геометрические свойства рисован - ных фигур
ShapeRange Диапазон объектов слайда
Table Таблица на слайде
Tags Содержит имя и значение определенного по- льзователем свойства
TextEffect Format Содержит свойства и методы объекта WordArt
TextFrame Область текста
ThreeDFormat Содержит параметры эффектов объемности
8.1. Обзор объектной модели PowerPoint
557
ActionSettings
ActionSettings
Hyperlink
SoundEffect
Объект Назначение
ActionSetting Определяет реакцию объекта Shape на действия пользователя в процессе выполнения презентации
Hyperlink Гиперссылка
SoundEffect Определяет звуковой эффект
Animationsettings
Animationsettings
ColorFormat
PlaySettings
— SoundEffect
Объект Назначение
Animationsetting Определяет эффекты анимации, сопровожда - ющие объект в ходе презентации
ColorFormat Определяет цветовое оформление объекта
PlaySettings Определяет параметры воспроизведения клипа
SoundEffect Определяет звуковой эффект
558
8.1. Обзор объектной модели PowerPoint
OLEFormat
OLEFormat
ObjectVerbs
Объект Назначение
OLEFormat Представляет свойства и методы, служащие для до- ступа к внедренному OLE-объекту
ObjectVerbs Список действий, возможных в отношении OLE-объекта
TextFrame
TextFrame
Ruler
TextRange
Actionsettings
Font
ParagraphFormat
Объект Назначение
TextFrame Область текста.
Ruler Представляет линейку (содержит сведения о по- зициях табуляции и втяжках)
TextRange Представляет непрерывный фрагмент текста
ActionSetting Определяет реакцию Shape-объекта на действия пользователя в процессе выполнения презентации
Font Определяет параметры шрифта
Paragraph- Format Определяет параметры форматирования абзаца
8.2. Уровень приложения — объект Application
559
8.2. Уровень приложения —
объект Application
Корневой объект в иерархии объектной модели PowerPoint —
объект Application. Его многочисленные свойства, методы и
события предназначены для решения самых общих задач,
связанных с функционированием приложения PowerPoint.
8.2.1. События
Событие Описание
ColorSchemeChanged Изменена цветовая схема
NewPresentation Создана новая книга
Presentation BeforeSave Перед выполнением сохранения пре- зентации
Presentationclose Закрытие презентации
PresentationNewSlide Создан новый слайд
PresentationOpen Открытие презентации
PresentationPrint Распечатка презентации (перед вы- полнением распечатки)
PresentationSave Сохранение презентации (перед вы- полнением сохранения)
SlideShowBegin Начало показа слайдов
SlideShowEnd Конец показа слайдов
SlideShowNextBuild Появление анимируемого объекта (по щелчку мыши или по таймеру)
SlideShowNextSlide Переход к новому слайду при показе (перед переходом)
WindowActivate Окно стало активным
560
8.2. Уровень приложения — объект Application
Событие Описание
WindowBeforeDoubleClick Двойной щелчок на объекте в окне
WindowBeforeRightClick Щелчок правой кнопкой мыши на объекте в окне
WindowDeactivate Окно перестало быть активным
WindowSelectionChange Смена выбранного объекта в окне
8.2.2. Свойства
ActivePres&ntatian
Возвращает активную презентацию.
Пример
'Закрыть текущую презентацию
ActivePresentation.Close
ActivePrintur
Возвращает имя текущего принтера.
Пример
'Сообщить имя текущего принтера
MsgBox Application.ActivePrinter
Ас tiveWinduw
Возвращает объект Documentwindow, представляющий ак-
тивное окно документа.
8.2. Уровень приложения — объект Application
561
Пример
'Развернуть текущее окно на весь экран
ActiveWindow.Windowstate = ppWindowMaximized
Build
Возвращает полный номер версии приложения.
Пример
MsgBox Application.Build
Сьрнап
Определяет текст титульной строки окна приложения.
Пример
'Изменить титульную строку окна PowerPoint
Application.Caption = _
"Новые горизонты кролиководства"
Name « . '-л :- •
Содержит имя программы.
Пример
1 Сообщить имя приложения
MsgBox Application.Name
562
8.2. Уровень приложения — объект Application
Opara ting Sys tam
Возвращает имя и номер версии операционной системы.
Пример
MsgBox Application.OperatingSystem
Р'в' ^ntatiois
Возвращает коллекцию,, элементами которой являются
все открытые презентации.
Пример
'Добавить новый слайд в 1-ю презентацию
Presentations(1).Slides.Add 2, ppLayoutChart
SlidaSha wWind aWS
Возвращает коллекцию,, элементами которой являются
все открытые окна показа слайдов.
Пример
If SlideShowWindows.Count = 0 Then
MsgBox "В данный момент показ слайдов"
& "не выполняется . "
End If
(gOlPfeWliW
8.2. Уровень приложения — объект Application
563
Version
Возвращает номер версии программы.
Пример
'Сообщить номер версии
MsgBox Application.Version
WinduwStutv -
Определяет состояние окна приложения.
Пример
1 Развернуть окно PowerPoint на весь экран
Application.Windowstate = ppWindowMaximized
8.2.3. Методы
Activate
Комментарий
Делает окно приложения активным.
Пример
'Сделать окно PowerPoint активным
Application.Activate
564 8.3. Основной объект — Presentation
Не1р(ФайлСпрааки, КонтексгСпрааки)
Параметр Назначение
ФайлСправки Контекст- Справки Имя файла справки Идентификатор контекста справки
Комментарий
Выводит на экран справку.
Пример
Application.Help "Analyse.hip", 12001
Ourt
Комментарий
Закрывает окно PowerPoint, при необходимости предло-
жив пользователю сохранить измененные файлы.
Пример
Application.Quit
8.3. Основной объект — Presentation
Данные PowerPoint хранятся в файлах презентаций. Каждая
презентация представлена объектом типа Presentation. Пре-
зентация включает в себя слайды, диалоги а также макросы
(процедуры VBA). Все открытые презентации представлены
коллекцией Presentations.
8.3. Основной объект — Presentation
565
8.3.1. Свойства
CiilorSchenws
Содержит коллекцию цветовых схем презентации.
Пример
'Задать цвет фона для цветовой схемы 1
ActivePresentation.ColorSchemes(1)
.Colors(ppBackGround)
.RGB = RGB(204, 236, 255)
'Применить ко 2-му слайду 1-ю цветовую схему
With ActivePresentation
.Slides(2).ColorScheme = .ColorSchemes(1)
End With
Count
Возвращает число открытых в данный момент презента-
ций (для коллекции Presentations).
Пример
'Сообщить число открытых презентаций
MsgBox "Открыто презентаций: " _
& Presentations.Count
Defaultshape
Возвращает объект типа Shape, представляющий автофи-
гуру по умолчанию (виртуальную автофигуру, которая со-
держит параметры форматирования для всех вновь созда-
ваемых автофигур).
• Изменения, вносимые в объекты по умолчанию, прояв-
ляются только при создании новых объектов.
566
8.3. Основной объект — Presentation
Пример
'Задать цвет переднего плана для вновь
'создаваемых автофигур
Presentations(1).Defaultshape.Fill
.ForeColor.RGB = RGB(64, 128, Г92)
ExtraCalurs '
Возвращает объект ExtraColors, представляющий допол-
нительные цвета презентации (цвета, не входящие в цве-
товые схемы).
• Всего объект ExtraColors может содержать до 8 RGB-
значений.
Пример
'Добавить дополнительный цвет
Presentations (1).ExtraColors.Add
RGB(64, 128, 164)
'Задать для переднего плана 1-й автофигуры
'1-го слайда 1-й дополнительный цвет
With Presentations(1)
.Slides(1).Shapes(1).Fill.ForeColor.RGB _
= .ExtraColors(1)
End With
FullName
Содержит полное имя файла презентации.
8.3. Основной объект — Presentation
567
Пример
MsgBox "Файл презентации: "
& ActivePresentation.FuTlName
HdntJuirtMuStijr J
Возвращает объект типа Master, представляющий обра-
зец выдачи.
• Заданные для этого объекта значения свойств будут ав-
томатически повторяться во всех вновь создаваемых
выдачах.
Пример
'Задать дату и время для колонтитула
'образца выдачи
Presentations(1).HandoutMaster _
.HeadersFooters.DateAndTime.Visible = True
HasTitieMa^tvr
Возвращает булево True, если презентация обладает об-
разцом заголовков.
Пример
With ActivePresentation
If .HasTitleMaster Then
.TitleMaster.Textstyles(ppTitleStyle)
.Levels(1).Font.Bold = True
End If
End With
568
8.3. Основной объект — Presentation
Narue
Имя файла презентации.
Пример
MsgBox "Имя файла презентации :"
& ActivePresentation.Name
NutesMaster
Возвращает объект типа Master, представляющий обра-
зец заметок.
• Заданные для этого объекта значения свойств будут ав-
томатически повторяться во всех вновь создаваемых за-
метках.
Пример
'Задать дату и время для колонтитула образца заметок
Presentations(1).NotesMaster
.HeadersFooters.DateAndTime-Visible = True
P.yyrSetup
Возвращает объект, служащий для задания параметров
страницы.
Пример
'Задать ориентацию "Альбомная"
'при выводе на печать
Presentations(1).PageSetup.SlideOrientation =
msoOrientationHorizontal
8.3. Основной объект — Presentation
569
Path
Возвращает полное имя каталога (путь), в котором нахо-
дится файл презентации.
Пример
MsgBox "Каталог: " & ActivePresentation.Path
РппЮ^Иапз
Содержит в себе параметры вывода на печать.
Пример
'Все слайды печатать в 4-х экземплярах
Presentations(1).PrintOptions.NumberOfCopies = 4
Stid&Mnr.ter ' .... Гу.
Возвращает объект типа Master, представляющий обра-
зец слайдов.
• Заданные для этого объекта значения свойств будут ав-
томатически повторяться во всех вновь создаваемых
слайдах.
Пример
'Отображать в колонтитулах слайдов дату и время
Presentations(1).SlideMaster
.HeadersFooters.DateAndTirne.Visible = True
Slides
Содержит одноименную коллекцию, представляющую все
слайды презентации.
570
8.3. Основной объект — Presentation
Пример
Dim MySlide As Slide
Dim MyShape As Shape
'Доступ к первому слайду презентации
Set MySlide = ActivePresentation.Slides(1)
'Задать имя
MySlide.Name = "Стартовый слайд"
'Поместить на слайд текстовый объект
Set MyShape = MySlide.Shapes.AddTextbox
(msoTextOrientationHorizontal, 200, 170, 330, 40)
Slisl&ShawS&ttings
Определяет параметры показа слайдов.
Пример
'Начать презентацию
ActivePresentation.SlideShowSettings.Run
Titl&Masier
Возвращает образец заголовков.
Пример
With ActivePresentation
If .HasTitleMaster Then
.TitleMaster.Textstyles(ppTitleStyle)
.Levels(1).Font.Bold = True
End If
End With
8.3. Основной объект — Presentation
571
Win daws
Возвращает коллекцию Documentwindows, представляю-
щую все окна документов.
• Окна показа слайдов в коллекцию не входят.
Пример
'Закрыть все окна документов,
'открытые раньше текущего
For I = 1 То ActivePresentation.Windows.Count - 1
ActivePresentation.Windows(I).Close
Next
8.3.2. Методы
Add(BmtHMatrQKHa) '
Параметр Назначение
ВидимоеОкно Булево значение, разрешающее (True) создать презентацию вместе с новым (видимым) окном.
Комментарий
Создает новую презентацию (для коллекции Presentations).
Пример
Dim MyPres As Presentation
'Создать презентацию вместе с видимым окном
Set MyPres = Presentations-Add(True)
'Создать невидимую презентацию
Set MyPres = Presentations.Add(False)
572
8.3. Основной объект — Presentation
AJdTitleMaster
Комментарий
Создает образец заголовков и включает его в состав пре-
зентации.
• Если презентация уже обладает образцом заголовков,
произойдет ошибка выполнения.
Пример
'Если образца заголовков нет, то создать
If Not MyPres.HasTitleMaster Then
MyPres.AddTitleMaster
End If
А1>^1уТетрк^е(ИмяФайла)
Параметр Назначение
ИмяФайла Имя файла, в котором содержится шаблон
Комментарий
Применяет к презентации указанное оформление (шаблон
дизайна).
Пример
'Применить оформление "блокнот"
ActivePresentation.ApplyTemplate _
"Template\Designs\Notebook.pot"
8.3. Основной объект — Presentation
573
Close
Комментарий
Молча закрывает презентацию. Изменения не сохраняют-
ся, запрос пользователю на сохранение изменений не вы-
дается!
Пример
изменений
Закрыть все открытые презентации
без сохранения
For Each MyPres
MyPres.Close
Next
In Presentations
ЕхроН(ИмыКаталога, Иглофильтра, ПоШирине, Повысите')
Параметр Назначение
ИмяКаталога Имя каталога, куда требуется поместить файл
ИмяФильтра Имя экспортного фильтра или расширение, определяющее формат графического файла
ПоШирине Коэффициент масштабирования по ширине
ПоВысоте Коэффициент масштабирования по высоте
Комментарий
Экспортирует все слайды презентации в графические фай-
лы заданного формата.
574 8.3. Основной объект — Presentation
Пример
'Сохранить слайды в WMF-файлах
ActivePresentation.Export "С:\", "WMF"
Ореп(ИмяФайла, ТолькаДляЧтенин, безИмени,
ВидимеаОкни)_______________________
Параметр Назначение
ИмяФайла Имя подлежащего открытию файла презентации
ТолькоДля- Чтения Определяет (True), что файл должен быть открыт в режиме «только для чтения»
БезИмени Определяет (True), что презентация должна быть открыта на правах вновь созданного файла (имя открываемого файла ей не присваивается)
Видимое- Окно Булево значение, разрешающее (True) создать презентацию вместе с новым (видимым) окном
Комментарий
Открывает файл презентации (для коллекции Presentati-
ons).
Пример
'Открыть существующую презентацию
Presentations.Open "С:\Data\MyPresl.ppt"
8.3. Основной объект — Presentation
575
PrintOut(Or, До, ПечатьВФайл,ЧислоКолий,
РазобратьПоКогшям)
Параметр Назначение
От Номер начального слайда
До Номер конечного слайда
Печать- ВФайл Значение True разрешает печать в файл
ЧиспоКопий Число копий
Разобрать- ПоКопиям (Для случая печати нескольких копий) Значение True соответствует печати копий целыми документа- ми, False соответствуете печати копий постранично
Комментарий
Выводит документ на печать.
Пример
'Напечатать слайды 1-5
ActivePresentation.Printout 1, 5
Save
Комментарий
Сохраняет презентацию в файле с ранее заданным име-
нем.
Пример
ActivePresentation.Save
576
8.3. Основной объект — Presentation
5ауеА$(ИмяФайла, Формзт^ВнедритьШ^ифгы)
Параметр Назначение
ИмяФайла Имя сохраняемого файла
Формат Константа, определяющая формат файла
Внедрить- Шрифты Разрешает (True) внедрить шрифты TrueType в сохраняемую презентацию
Комментарий
Сохраняет презентацию в файле заданного формата с за-
данным именем.
Пример
'Сохранить презентацию в файле
'"MyPresl" с внедренными шрифтами
ActivePresentation.SaveAs "MyPresl.ppt", , True
WebPaggPr&Wgw *
Комментарий
Позволяет выполнить предварительный просмотр презен-
тации в активном обозревателе в таком виде, какой она
приобретет, будучи сохранена как Web-документ.
Пример
Presentation(1).WebPagePreview
8.4. Образцы — объект Master
577
8.3.3. Пример
VBA-процедура, текст которой приведен ниже, создает новую
презентацию на основе существующего оформления (шабло-
на дизайна).
'Создать презентацию
Sub NewPresO
'Определить каталог, где находятся
'шаблоны дизайна
Const TemplPath = _
"С:\Office\Template\Designs\"
Dim ThePr As Presentation
'Создать презентацию
Set ThePr = Presentations.Add
With ThePr
'Применить оформление "Notebook"
.ApplyTemplate TemplPath & "Notebook.pot"
'Сохранить и закрыть
-SaveAs "C:\Data\Presl"
End With
End Sub
8.4. Образцы — объект Master
Образцы (объекты типа Master) могут быть созданы в презен-
тации для слайдов, заголовков, выдач или заметок докладчика.
Образец может содержать информацию о форматировании
объекта, а также разного рода заготовки — неизменяемый
текст, логотип фирмы и т. п. Образцы разных видов представ-
лены объектами типа Master, которые доступны через разно-
именные свойства презентации: SlideMaster для образца
слайдов, TitleMaster для образца заголовков, HandoutMaster
для образца выдач и NotesMaster для образца заметок до-
кладчика.
19 1855
578 8.4. Образцы — объект Master
8.4.1. Свойства
Background
Возвращает объект типа ShapeRange, представляющий
задний план слайда.
Пример
Dim MyMaster As Master
Set MyMaster = ActivePresentation.TitleMaster
MyMaster.Background.Fill.ForeColor _
.RGB = RGB(128, 32, 64)
Представляет цветовую схему.
Пример
Dim MyMaster As Master
'Задать цветовую схему 1 для заднего плана образца
Set MyMaster = ActivePresentation.SlideMaster
MyMaster.ColorScheme.Colors(ppBackground)
.RGB = RGB(204, 236, 255)
Head^rbFooti-rr
Обеспечивает доступ к колонтитулам.
Пример
Dim MyMaster As Master
'Отображать дату и время в колонтитулах
8.4. Образцы — объект Master
579
Set MyMaster = ActivePresentation.SlideMaster
MyMaster.HeadersFooters.DateAndTime _
.Visible = True
Shape*
Содержит коллекцию Shape-объектов.
Пример
Dim MyMaster As Master
Dim MyShape As Shape
'Поместить в левый верхний угол
'образца логотип фирмы
Set MyMaster = ActivePresentation.SlideMaster
Set MyShape = MyMaster.Shapes.AddPicture
("C:\Data\Logo.bmp", False, True, 10, 10, 75, 75)
T&xtStyles
Содержит коллекцию Textstyles, представляющую шабло-
ны стиля для текстовых объектов.
Пример
Dim MyMaster As Master
'Задать параметры шрифта для основного
'текста слайда
Set MyMaster = ActivePresentation.SlideMaster
With MyMaster.Textstyles(ppBodyStyle)
.Levels(1).Font
.Name = "Arial"
-Size = 36
.Bold = True
End With
580 8.4. Образцы — объект Master
8.4.2. Пример
В данном примере создается презентация, а затем образец
слайдов для этой презентации. Образцы выдач, заголовков
или заметок можно создать аналогичным образом.
Sub CreateSlideMaster()
'Объявить рабочую переменную
Dim ThePr As Presentation
'Создать экземпляр презентации
Set ThePr = Presentations.Add
'Определить образец слайдов
With ThePr.SlideMaster
'Определить фон
.Background.Fill.ForeColor.RGB _
= RGB(200, 155, 100)
'Определить колонтитулы
With .HeadersFooters
.DateAndTime.UseFormat = True
. DateAndTime.Format = ppDateTimedMMMyy
.Footer.Text = "Realsoft"
.SlideNumber.Visible = True
End With
'Формат основного текста
With .Textstyles(ppBodyStyle)
'Одинаковый шрифт для всех уровней
.TextFrame.TextRange.Font.Name = "Arial"
'Отдельно форматировать уровень 1
With .Levels(1).Font
.Bold = True
.Shadow = True
.Size = 42
End With
8.5. Слайды — объект Slide
581
End With
End With
End Sub
8.5. Слайды — объект Slide
Презентация состоит из слайдов, каждый из которых пред-
ставлен объектом типа Slide, а все вместе они доступны че-
рез коллекцию Slides. Слайды могут обладать именами, бла-
годаря чему упрощается их идентификация внутри коллекции
(имена слайдов имеют смысл только в рамках VBA).
8.5.1. Свойства
Background
Возвращает объект типа ShapeRange, представляющий
задний план слайда.
Пример
Dim MySlide As Slide
'Определить цвет фона слайда,
'отличный от образца
Set MySlide = ActivePresentation.Slides(1)
MySlide.FollowMasterBackground = False
MySlide.Background.Fill.ForeColor.RGB
= RGB(128, 32, 64)
Count
Число слайдов в презентации (для коллекции Slides)
582 8.5. Слайды — объект Slide
Пример
MsgBox "Число слайдов: "
& ActivePresentation.Slides.Count
OisplayMasterShapas
Разрешает (True) или запрещает (False) отображение на
заднем плане объектов образца.
Пример
ActivePresentation.Slides(1).
DisplayMasterShapes = False
FallowMasterBackgrourKi ____________• . \
Определяет (True), что свойства заднего плана слайда
должны соответствовать образцу.
Пример
'Цвет фона слайда, отличный от образца
ActivePresentation.Slides(1).
FollowMasterBackground = False
Lay.mt__________________________'
Содержит константу, значение которой задает вариант ав-
торазметки слайда.
8.5. Слайды — объект Slide
583
Пример
'Авторазметка: "Диаграмма и текст"
ActivePresentation.Slides(1)
.Layout = ppLayoutChartAndText
Name
Имя, присвоенное слайду для его идентификации в преде-
лах коллекции Slides.
Пример
'Вначале присвоим слайду имя...
ActivePresentation.Slides(1).Name = "Январь"
'Затем обратимся к нему по имени
Set MySlide = ActivePresentation _
.Slides("Январь")
Shapes
Коллекция Shape-объектов, принадлежащих слайду.
Пример
Dim MyShape As Shape
'Изменить цвет объекта
Set MyShape = ActivePresentation.Slides(1)_
.Shapes (1)
MyShape.Fill.ForeColor.RGB = RGB(128, 192, 64)
584 8.5. Слайды — объект Slide
SlideShowTransition
Представляет параметры появления слайда в процессе
презентации (эффект перехода слайда).
Пример
Dim MySlide As Slide
'Задать эффект
Set MySlide = ActivePresentation.Slides (1)
MySlide.SlideShowTransition.EntryEffeet = _
ppEffectCoverRight
8.5.2. Методы
Аии(Н^мврСлайда, Аиторазматка)
Параметр Назначение
НомерСпайда Порядковый номер создаваемого слайда в кол - лекции
Авторазметка Константа, определяющая вид авторазметки со- здаваемого слайда
Комментарий
Создает новый слайд и включает его в состав коллекции
слайдов.
Пример
'Включить в позицию 5 новый слайд
'с разметкой "Диаграмма"
ActivePresentation.Slides.Add 5, ppLayoutChart
8.5. Слайды — объект Slide
585
Сиру
Комментарий
Копирует слайд в буфер обмена.
Пример
ActivePresentation.Slides(1).Copy
Cut
Комментарий
Вырезает слайд в буфер обмена.
Пример
ActivePresentation.Slides(1)-Cut
Delete
Комментарий
Удаляет слайд (исключает из состава презентации).
Пример
ActivePresentation.Slides(2).Delete
586 8.5. Слайды — объект Slide
Duplicate
Комментарий
Создает копию слайда и вставляет его в коллекцию непо-
средственно после слайда-оригинала.
Пример
ActivePresentation.Slides(1).Duplicate
Pasta(HoMw'pCnait^a)
Параметр Назначение
НомерСлайда Порядковый номер вставляемого слайда в кол- лекции
Комментарий
Выполняет вставку слайда из буфера обмена в указанную
позицию в рамках коллекции Slides.
Пример
ActivePresentation.Slides.Paste 3
8.5.3. Пример
Вначале здесь создается образец слайдов, затем на его осно-
ве будут созданы два слайда, которые подвергнутся дальней-
шему редактированию.
8.5. Слайды — объект Slide 587
Sub TwoSlidesO
'Каталог с графическими файлами
Const Scrbeans = "OFFICE\BITMAPS\DBWIZ\"
'Объявить рабочие переменные
Dim ThePr As Presentation
Dim SlideTitle As Slide
'Создать новую презентацию
Set ThePr = Presentations.Add
'Определить образец слайдов
With ThePr.SlideMaster
.Background.Fill.ForeColor.RGB _
= RGB(200, 155, 100)
End With
'Создать слайд с разметкой "Титульный слайд"
Set SlideTitle = ThePr.Slides.Add(1,
ppLayoutTitle)
With SlideTitle
'Задать эффект: "Прямоугольник наружу"
.SlideShowTransition.EntryEffect _
= ppEffectBoxOut
'Тексты заголовка и подзаголовка
.Shapes(1).TextFrame.TextRange.Text _
= "Цифры" & " и факты"
.Shapes (2) .TextFrame.TextRange.Text = _
"Статистика за неделю"
End With
'Создать второй слайд с разметкой
'"Только заголовок"
ThePr.Slides.Add 2, ppLayoutTitleOnly
With ThePr.Slides(2)
'Задать эффект: "Прямоугольник внутрь"
.SlideShowTransition.EntryEffeet _
= ppEffectBoxin
'Текст заголовка и рисунок
588
8.6. Объекты слайда - коллекция Shapes
.Shapes(1).TextFrame.TextRange.Text _
= "Тенденция"
.Shapes.AddPicture Scrbeans & _
"Contacts.gif"
, msoFalse, msoTrue, 217, 150, 286, 310
End With
End Sub
8.6. Объекты слайда - коллекция Shapes
Все элементы на поверхности слайда — будь то пустой местоза-
полнитель, текст или автофигура, рисунок или OLE-объект —
представлены коллекцией Shapes. Собственно, в визуальном
отношении слайд состоит из набора Shape-объектов и фона
(заднего плана). Свойства и методы коллекции Shapes исполь-
зуются для манипуляций с Shape-объектами, принадлежащими
данному слайду.
8.6.1. Свойства
Ctunt
Число Shape-объектов в коллекции и соответственно на
слайде.
Пример
Dim MyShapes As Shapes
Set MyShapes = ActivePresentation
.Slides(1).Shapes
MsgBox "Слайд состоит из " _
& MyShapes.Count & " элементов."
HasTitla
И Возвращает булево значение True, если коллекция содер-
жит заголовок.
8.6. Объекты слайда - коллекция Shapes
589
Пример
Dim MyShapes As Shapes
'Если заголовка нет, то добавить
Set MyShapes = ActivePresentation
.Slides(1).Shapes
If Not MyShapes.HasTitle Then
MyShapes.AddTitle
End If
Title
Содержит Shape-объект, представляющий заголовок слайда.
Пример
Dim MyShapes As Shapes
'Если есть заголовок, то задать текст
Set MyShapes = ActivePresentation _
.Slides(1).Shapes
If MyShapes.HasTitle Then
MyShapes.Title.TextFrame.TextRange _
-Text = "Январь 1999"
End If
8.6.2. Методы
AdtfCaltoutfTHnBbiHocKn, ОгступСлева, ОтступСверху,
Ширина, Высота) h. л: ' . 'ъЛ "tT "
Включает в состав коллекции и помещает на слайд новую
выноску с заданными параметрами.
590
8.6. Объекты слайда - коллекция Shapes
Параметр Назначение
ТипВыноски Константа, определяющая тип выноски
ОтступСлева, ОтступСверху Координаты (в пунктах) левого верхнего угла выноски
Ширина, Высота Размеры выноски в пунктах
Пример
Dim MyShape As Shape
Set MyShape = ActivePresentation.Slides(1).Shapes
.AddCallout(msoCalloutThree, 200, 150, 100, 100)
ДйУСатгпйскеишгупСлекя, OrcrynCH&fixy, Ширина, Высота)
Параметр Назначение
ОтступСлева, ОтступСверху Координаты (в пунктах) левого верхнего угла примечания
Ширина, Высота Размеры примечания в пунктах
Комментарий
Включает в состав коллекции Shapes и помещает на слайд
примечание.
Пример
Dim MyShape As Shape
Set MyShape = ActivePresentation.Slides(1)
.Shapes.AddComment(250, 100, 100, 100)
8.6. Объекты слайда - коллекция Shapes
591
AddCarai&Gtor(TnifJlHHUn, Нэч&лоХ, НачалоУ,
КонсцХ, КанецУ)
Параметр Назначение
ТипЛинии Константа, определяющая тип соедините- льной линии
НачалоХ, НачалоУ Координаты начала линии
КонецХ, КонецУ Координаты конца линии
Комментарий
Включает в состав коллекции Shapes и помещает на слайд
соединительную линию.
• Непосредственно после создания линия ни к чему не
присоединена (для этого необходимо воспользоваться
методами BeginConnect и EndConnect).
Пример
Dim MyShape As Shape
Set MyShape = ActivePresentation.Slides(1)
.Shapes.AddConnector(msoConnectorCurve,
300, 200, 150, 150)
AddLabtfl(Opntenrannn, ОгступСл^аа, ОтцгулСаерху,
« Ширина, га) _____________ , s
Комментарий
Включает в состав коллекции Shapes и помещает на слайд
надпись.
592
8.6. Объекты слайда - коллекция Shapes
Параметр Назначение
Ориентация Константа, определяющая ориентацию текста надписи
ОтступСлева, ОтступСверху Координаты (в пунктах) левого верхнего угла надписи
Ширина, Высота Размеры надписи в пунктах
Пример
Dim MyS As Shape
'Поместить на слайд вертикальную надпись
Set MyS = ActivePresentation.Slides(1).Shapes
.AddLabel(msoTextOrientationVerticalFarEast
, 300, 200, 150, 150)
AddUnefHavaaoX, Начало*, КанецХ.Конец*)
Параметр Назначение
НачалоХ, НачалоУ Координаты начала линии |
КонецХ, КонецУ Координаты конца линии
Комментарий
Включает в состав коллекции Shapes и помещает на слайд
линию.
Пример
Dim MyShape As Shape
Set MyShape = ActivePresentation.Slides(1)
.Shapes-AddLine(150, 200, 250, 100)
8.6. Объекты слайда - коллекция Shapes
593
A МММе&ифЬ^сЦИмяФайла, Orc гупСлеаа,
ОтступСвврху, Ширина, Высота)
Параметр 1 Назначение
ИмяФайла Имя мультимедийного файла
ОтступСлева, ОтступСверху Координаты (в пунктах) левого верхнего угла объекта
Ширина, Высота Размеры объекта в пунктах
Комментарий
Создает объект мультимедиа, помещает его на слайд и
включает в состав коллекции Shapes.
Пример
Dim MyShape As Shape
Set MyShape = ActivePresentation.Slides(1)
.Shapes.AddMediaObject("C:\Date\Logo.avi",
150, 200, 250, 100)
яМО1.Е(Мес1(У1ыяФайла, ОтступСлева, ОтступСверху
Мирин? Выест?, ИмяКласса, Имя'райг , Значок,
ФлйлЗничкэ, НомерЗначка Ьадпгсь, Связал.}
Комментарий
Создает или загружает из файла OLE-объект, помещает
его на слайд и включает в состав коллекции Shapes.
594
8.6. Объекты слайда - коллекция Shapes
Параметр Назначение
ОтступСлева, ОтступСверху Координаты (в пунктах) левого верхнего угла объекта
Ширина, Высота Размеры объекта в пунктах
ИмяКласса Имя класса, к которому относится объект
ИмяФайла Имя файла, где находится объект
Значок Разрешает (True) отображать объект в виде значка
ФайлЗначка Имя файла, где находится значок
НомерЗначка Порядковый номер значка в файле
Надпись Определяет текст надписи под значком
Связать Разрешает (True) связать объект
Пример
Dim MyShape As Shape
'Поместить на слайд таблицу Excel
Set MyShape = ActivePresentation.Slides(1)
.Shapes.AddOLEObject(150, 200, 250,
100, , "C:\Date\tabl.xls")
Аи&РкЛиге(Им*Файлэ, Связать, СохрзнятьСДокуменгом,
iОтступСлева,’ОтступСверху, Ширина, Высота)-
Комментарий
Загружает из файла рисунок, помещает его на слайд и
включает в состав коллекции Shapes.
8.6. Объекты слайда - коллекция Shapes
595
Параметр Назначение
ИмяФайла Имя графического файла
Связать Определяет, должен ли (True) рисунок быть связанным с файлом-первоисточником или же (False) являться независимой копией
Сохранять- СДокументом Разрешает (True, обязательно в случае Связать = False) сохранять рисунок вместе с докумен- том
ОтсгупСлева, ОтступСверху Координаты (в пунктах) левого верхнего угла рисунка
Ширина, Высота Размеры рисунка в пунктах
Пример
Dim MyShape As Shape
Set MyShape = ActivePresentation.Slides(1)
.Shapes.AddPicture("C:\Date\logo.bmp",
False, True, 150, 200, 250, 100)
АдйЗЬавефийФигурь,> О гступС„евв Orc, iCBeo^y.
Ширина,Высота) - - -w •
Параметр Назначение
ТипФигуры Константа, определяющая тип автофигуры
ОтсгупСлева, ОтступСверху Координаты (в пунктах) левого верхнего угла объекта
Ширина, Высота Размеры объекта в пунктах
596
8.6. Объекты слайда - коллекция Shapes
Комментарий
Создает автофигуру, помещает ее на слайд и включает в
состав коллекции Shapes.
Пример
Dim MyShape As Shape
Set MyShape = ActivePresentation.Slides(1)
.Shapes.AddShape _
(msoShapeActionButtonlnformation,
150, 200, 250, 100)
АШТаЫ^ЧислоСтрок, ЧислоСтолбцоа, ОтступСл&за,
ОтступСеарху, Ширина, Высота)
Параметр Назначение
ЧислоСтрок Число строк в таблице
ЧислоСтолбцов Число столбцов в таблице ।
ОтступСлева, ОтступСверху Координаты (в пунктах) левого верхнего угла объекта
Ширина, Высота Размеры объекта в пунктах
Комментарий
Создает таблицу указанного размера, помещает ее на
слайд и включает в состав коллекции Shapes.
Пример
Dim MyShape As Shape
8.6. Объекты слайда - коллекция Shapes 597
Set MyShape = ActivePresentation _
.Slides(1).Shapes _
,AddTable(3, 4, 150, 200, 250, 100)
А44ТехМ>ох(Ориентация, ОтступСлеею, ОтступСверху,
Ширина, Высота)
Параметр Назначение
Ориентация Константа, определяющая ориентацию текста
Отступ Слева, ОтступСверху Координаты (в пунктах) левого верхнего угла текста
Ширина, Высота Размеры автофигуры с текстом в пунктах
Комментарий
Создает, включает в состав коллекции Shapes и помещает
на слайд автофигуру с текстом.
Пример
Dim MyShape As Shape
Set MyShape = ActivePresentation.Slides(1)
.Shapes.Addlextbox(msoTextOrientationHorizontal
, 300, 200, 150, 150)
Past*
Комментарий
Выполняет вставку Shape-объекта из буфера обмена.
598 8.7. Объект Shape
Пример
Set MyShape = ActivePresentation.Slides(1)
.Shapes.Paste
SetectAil
Комментарий
Выделяет все Shape-объекты на слайде.
Пример
ActivePresentation.Slides(1).Shapes.SelectAll
8.7. Объект Shape
Каждый Shape-объект, вне зависимости от того, какого типа
элемент слайда он представляет, обладает стандартным на-
бором свойств и методов. Поскольку все видимые элементы
слайда представлены Shape-объектами, понятно, какую роль
объект типа Shape играет в программировании для среды Po-
werPoint.
8.7.1. Свойства
ActionSettings
Возвращает объект ActionSetting, определяющий реакцию
Shape-объекта на действия пользователя.
8.7. Объект Shape
599
Пример
'При щелчке на объекте завершить презентацию
MyShape-ActionSettings(ppMouseClick)
.Action = ppActionEndShow
AnimatiunSa ttings
И Определяет анимационные эффекты, сопровождающие
объект в ходе презентации.
Пример
'Задать анимационный эффект
MyShape.AnimationSettings.EntryEffeet =
ppEffectBlindsVertical
AutaShapeType
Определяет тип автофигуры.
Пример
'Автофигура: 32-конечная звезда
MyShape.AutoShapeType = msoShape32pointStar
Callout
Определяет параметры выноски.
Пример
MyShape.Callout.Angle = msoCalloutAngle45
600
8.7. Объект Shape
Fill
Определяет параметры заливки.
Пример
MyShape.Fill.ForeColor.RGB = RGB(64, 52, 192)
HasTaLle-
Возвращает булево значение True, если объект представ-
ляет собой таблицу.
Пример
With ActiveWindow.Selection.ShapeRange
If .HasTable = True Then
-Table.Columns(1).Width = 35
End If
End With
lasTextFrame
Возвращает булево значение True, если объект распола-
гает областью текста.
Пример
If MyShape.HasTextFrame Then
MyShape.TextFrame.TextRange.Text
= "Лучший показатель года"
End If
Height
Определяет высоту объекта в пунктах.
8.7. Объект Shape
601
Пример
MyShape.Height = 200
Left
Определяет отступ по горизонтали от левого верхнего
угла слайда в пунктах.
Пример
MyShape.Left = 150
Name
Имя объекта, идентифицирующее его среди элементов
коллекции Shapes.
Пример
'Вначале присвоим объекту имя...
MyShape.Name = "Logo"
'Затем обратимся к нему по имени
ActivePresentation.Slides(1).Shapes("Logo")
.Top = 20
PictureFormat •
Содержит одноименный объект, чьи свойства и методы
предназначены для форматирования рисунков и OLE-объ-
ектов.
Пример
MyShape.PictureFormat.Brightness = 0.6
602
8.7. Объект Shape
Rotation
Определяет угол вращения объектов в градусах.
Пример
MyShape.Rotation = 45
Shadow '• <
Содержит объект ShadowFormat, который позволяет управ-
лять эффектами, связанными с тенью объекта.
Пример
'Включить тень и задать для нее
'смещение относительно объекта
With MyShape.Shadow
.Visible = True
.OffsetX = 5
•OffsetY = 10
End With
Tattle
Содержит объект Table, входящий в данную автофигуру
или объединение автофигур.
Пример
ActivePresentation.Slides(3).Shapes(7)
.TableColumns(1).Width = 25
8.7. Объект Shape
603
TextFrame
Определяет свойства области текста.
Пример
If MyShape.HasTextFrame Then
MyShape.TextFrame.TextRange.Text
= "Лучший показатель года"
End If
Thr^eD
Служит для управления эффектом объемности.
Пример
'Включить эффект объемности
MyShape.ThreeD.Visible = True
TOP • f
Определяет отступ по вертикали от левого верхнего угла
слайда в пунктах.
Пример
MyShape.Тор = 250
Width
Определяет ширину объекта в пунктах.
604
8.7. Объект Shape
Пример
MyShape.Width = 150
8.7.2. Методы
Дрр/у
Комментарий
Служит для форматирования Shape-объекта в соответст-
вии с форматом, скопированным ранее с помощью метода
PickUp.
Пример
'Отформатировать 2-й объект по образцу 1-го
ActivePresentation.Slides(1).Shapes(1).PickUp
ActivePresentation.Slides(1).Shapes(2).Apply
Qupy_________________________<
Комментарий
Копирует объект в буфер обмена.
Пример
MyShape.Сору
8.7. Объект Shape
605
Cut
Комментарий
Вырезает объект в буфер обмена.
Пример
MyShape.Cut
Oe/efe
Комментарий
Удаляет Shape-объект.
Пример
MyShape.Delete
Duplicate
Комментарий
Создает дубликат Shape-объекта и включает его в коллек-
цию Shapes непосредственно за объектом-оригиналом.
Пример
MyShape.Duplicate
606
8.7. Объект Shape
РИ^(ОсьОгражинич)
Параметр Назначение
ОсьОтражения Константа, определяющая ось отражения объ- екта (слева направо или сверху вниз)
Комментарий
Выполняет зеркальное отражение объекта.
Пример
MyShape.Flip msoFlipHorizontal
Параметр Назначение
Шаг Количество пунктов, на которые необходимо пере- местить объект. Положительные значения соответ- ствуют движению вправо, отрицательные - влево
Комментарий
Перемещает объект по горизонтали на заданное число
пунктов.
Пример
'Переместить объект на 40 пунктов вправо
MyShape.IncrementLeft 40
'Переместить объект на 40 пунктов влево
MyShape.IncrementLeft -40
8.7. Объект Shape
607
Iпесете n tRota t ion (Угол)
Параметр Назначение
Угол Угол (в градусах), на который требуется повернуть объект
Комментарий
Поворачивает объект на заданный угол вокруг оси Z.
Пример
'Повернуть объект на 45 градусов
MyShape.IncrementRotation 45
IncrementTw(UJar)
Параметр Назначение
Шаг Количество пунктов, на которые необходимо пере- местить объект. Положительные значения соответ - ствуют движению вниз, отрицательные - вверх
Комментарий
Перемещает объект по вертикали на заданное число пунктов.
Пример
'Переместить объект на 40 пунктов вниз
MyShape.IncrementTop 40
'Переместить объект на 40 пунктов вверх
MyShape.IncrementTop -40
608 8.7. Объект Shape
PickUp
Комментарий
Копирует параметры форматирования объекта так, что
позднее они могут быть применены к другому объекту с
помощью метода Apply.
Пример
'Отформатировать 2-й объект по образцу 1-го
ActivePresentation.Slides(1).Shapes(1).PickUp
ActivePresentation.Slides(1).Shapes(2).Apply
ScaltfHifight(Ko3ip<pnuincHT, ОтносительноОригинала, -
7\эчка Фиксации)__________________ " ’ " '".
Параметр Назначение
Коэффициент Коэффициент масштабирования
Относительно- Оригинала Определяет, должен ли объект масштабирова - ться относительно своих первоначальных раз- меров (True) или относительно текущих (False)
ТочкаФиксации Константа, определяющая точку объекта, кото- рая должна остаться неподвижной при масш - табировании
Комментарий
Масштабирует объект по высоте в соответствии с задан-
ными параметрами.
• Метод применим только к рисункам и OLE-объектам.
8.7. Объект Shape
609
Пример
1 Увеличить объект по высоте
'в два раза против оригинала
MyShape.ScaleHeight 2, True, msoScaleFromMiddle
'Увеличить объект по высоте
'в два раза против текущей высоты
MyShape.ScaleHeight 2, False, _
msoScaleFromMiddle
&сл1в№1МЬ(Канффициент, ОтнсюлттлыюОрмгмнала,
_____Точки Фиксации) _________________: -
Параметр Назначение
Коэффициент Коэффициент масштабирования
Относительно- Ори пинала Определяет, что объект должен масштабирова - ться относительно своих первоначальных раз - меров (True) или относительно текущих (False)
ТочкаФиксации Константа, определяющая точку объекта, кото- рая должна остаться неподвижной при масш- табировании
Комментарий
Масштабирует объект по ширине в соответствии с задан-
ными параметрами.
• Метод применим только к рисункам и OLE-объектам.
Пример
'Увеличить объект по ширине
'в два раза против оригинала
MyShape.ScaleWidth 2, True, msoScaleFromMiddle
20 1855
610
8.7. Объект Shape
'Увеличить объект по ширине
'в два раза против текущей
MyShape.Scalewidth 2, False, msoScaleFromMiddle
5е1асЦЗместоИлиВместе)
Параметр Назначение
Вместо- ИлиВместе Булево значение, указывающее, должен ли объект быть выделен вместо (True) ранее выделенных или вместе (False) с ними
Пример
MyShape.Select
SttShapesDufaultPruperties
Комментарий
Применяет форматирование текущего объекта к объекту
по умолчанию.
Пример
MyShape.SetShapesDeafaultProperties
| ZQrii? г (Позиция)
Параметр Назначение
Позиция Константа, определяющая новую позицию объекта или ее изменение
8.7. Объект Shape
611
Комментарий
Изменяет положение объекта относительно других объек-
тов «в глубину».
Пример
'Вывести объект на передний план
MyShape.ZOrder msoBringToFront
8.7.3. Пример
С использованием свойств и методов объекта Shape в этом
примере будет построен набор диаграмм.
Sub DemoShapes()
'Каталог с графикой
Const PicPath = "Clipart\Popular\"
'Значения для Юга, Севера, Востока и Запада
Dim UW(1 То 4) As Double
Dim Region (1 To 4) As String
Dim Total As Double
'Рабочие переменные
Dim TheSlide As Slide
Dim TheShape As Shape
Dim I As Integer
'Подготовить данные
Region(1) = "Север"
Region(2) = "Восток"
Region(3) = "Юг"
Region(4) = "Запад"
UW(1) = 100
UW(2) = 200
UW(3) = 150
UW(4) = 300
612
8.8. Обработка событий — объект ActionSetting
'Вычислить сумму
For I = 1 То 4
Total = Total + UW(I)
Next
'Создать новый слайд в новой презентации
Set TheSlide = Presentations.Add.Slides.Add(1, _
ppLayoutTitleOnly)
With TheSlide
-Shapes(1).TextFrame.TextRange.Text = "1999 год"
For I = 1 To 4
'Создать автофигуру с текстом
Set TheShape = .Shapes.AddTextbox _
(msoTextOrientationHorizontal,
1*125, 400, 80, 30)
'Задать и отформатировать текст
With TheShape.TextFrame
.HorizontalAnchor = msoAnchorCenter
.TextRange.Text = Region(I)
.TextRange.Font.Name = "Arial"
End With
'Добавить рисунок
Set TheShape = .Shapes.AddPicture(PicPath & _
"COINS.WMF", msoFalse, msoTrue,
I * 125, -50, 80, 420)
'Отмасштабировать рисунок
TheShape.ScaleHeight UW(I)/Total, False, _
msoScaleFromBottomRight
Next
End With
End Sub
8.8. Обработка событий —
объект ActionSetting
Для обработки событий, связанных с действиями пользовате-
ля, и соответственно для управления ходом презентации в Po-
werPoint используется объект ActionSetting, который доступен
посредством свойства ActionSettings объектов типа Shape.
8.8. Обработка событий — объект ActionSetting
613
8.8.1. Свойства
Actiun
Определяет вид действия, которое должно быть предпри-
нято в случае выбора пользователем данного Shape-объ-
екта.
Пример
'При щелчке на объекте — переход
'к первому слайду
MyShape.ActionSettings(ppMouseClick).Action =
ppActionFirstSlide
AnimataAction
Определяет (True), что объект инвертирует свой цвет при
наступлении заданного события мыши.
Пример
MyShape.ActionSettings(ppMouseClick)
.AnimateAction = True
Run
Определяет имя процедуры (макроса), подлежащей вы-
полнению при наступлении указанного события.
Пример
'При щелчке запустить процедуру GetData
MyShape.ActionSettings(ppMouseClick).Action =
ppActionRunMacro
MyShape-ActionSettings(ppMouseClick)
.Run = "GetData"
614 8.9. Параметры анимации — объект Animationsettings
8.9. Параметры анимации —
объект Animationsettings
Объект Animationsettings (доступен через одноименное свой-
ство Shape-объектов) служит для задания параметров анима-
ционных эффектов, которые должны сопровождать Shape-объ-
ект в ходе презентации.
8.9.1. Свойства
A Jv.vncc Моь'е
Задает режим запуска анимации — по щелчку на объекте
или автоматически через заданный интервал времени.
Пример
'Анимация через 5 секунд
With MyShape.Animationsettings
.AdvanceMode = ppAdvanceOnTime
.AdvanceTime = 5
End With
AilvanceTima
Задает интервал времени в секундах для режима автома-
тической анимации.
Пример
'Анимация через 5 секунд
With MyShape.Animationsettings
.AdvanceMode = ppAdvanceOnTime
.AdvanceTime = 5
End With
8.9. Параметры анимации — объект Animationsettings 615
Aftereffect »
Определяет вид объекта после завершения анимации.
Пример
'Скрыть объект после завершения анимации
MyShape.Animationsettings.AfterEffect _
= ppAfterEffectHide
Animate ' >
Разрешает (True) или запрещает (False) анимацию объекта.
Пример
MyShape.Animationsettings.Animate = True
ChartUnitEftect
Определяет вид анимации для диаграмм.
Пример
'Анимация диаграммы по ряду данных
MyShape.Animationsettings.ChartUnitEffect
= ppAnimateBySeries
EntrySffect
Определяет вид специального эффекта, сопровождающе-
го анимацию.
616
8.9. Параметры анимации — объект Animationsettings
Пример
'Спецэффект: "Жалюзи горизонтальные"
MyShape.Animationsettings.EntryEffect =
ppEffectBlindsHorizontal
8.9.2. Пример
Пример иллюстрирует некоторые возможности анимации, до-
ступные в среде PowerPoint.
Sub SetAnimation()
'Рабочие переменные
Dim TheSlide As Slide
Dim TheShape As Shape
'Создать новый слайд в новой презентации
Set TheSlide = Presentations.Add.Slides.Add(1,
ppLayoutBlank)
'Добавить автофигуру
Set TheShape = TheSlide.Shapes.AddShape _
(msoShapeRightArrow, 80, 170, 100, 40)
'Задать параметры анимации
With TheShape.Animationsettings
.AdvanceMode = ppAdvanceOnTime
.AdvanceTime = 1
.EntryEffeet = ppEffectFlyFromLeft
End With
'Добавить текст
Set TheShape = TheSlide.Shapes.AddTextbox
(msoTextOrientationHorizontal, 200, 170, 350, 40)
'Сам текст и анимация для него
With TheShape
.TextFrame.TextRange.Text = "Анимация текста"
With .Animationsettings
.AdvanceMode = ppAdvanceOnTime
.AdvanceTime = 0
8.10. Параметры заливки — объект FillFormat
617
.EntryEffect = ppEffectStretchLeft
End With
End With
End Sub
8.10. Параметры заливки —
объект FillFormat
Параметры заливки Shape-объекта определяются их свойст-
вом FillFormat, в котором содержится одноименный объект.
Заливка может быть сплошной или текстурной, ее роль может
играть узор или рисунок.
8.10.1. Свойства
BackColor
Определяет цвет фона (заднего плана).
Пример
'В качестве цвета фона использовать цвет фона,
'Заданный цветовой схемой
MyShape.Fill.BackColor.SchemeColor _
= ppBackground
'В качестве цвета фона использовать
'дополнительный цвет
MyShape.Fill.BackColor.RGB = RGB(128, 64, 192)
ForeColor
Определяет цвет переднего плана заливки (узора, рисунка).
Пример
'В качестве цвета переднего плана использовать
'Цвет переднего плана, заданный цветовой схемой
618
8.10. Параметры заливки — объект FillFormat
MyShape.Fill.ForeColor.SchemeColor _
= ppForeground
'В качестве цвета переднего плана использовать
'дополнительный цвет
MyShape.Fill.ForeColor.RGB = RGB(128, 64, 192)
Tranuparuncy
Определяет прозрачность цвета (только для сплошного
фона и линий, значения от 0 до 1).
Пример
'Полупрозрачная заливка
MyShape.Fill.Transparency = 0.5
8.10.2. Методы
ОпаСа1игСга<Л^п1(ТипШтрихаеки, Вариант, Градиент}
Параметр Назначение
ТипШтриховки Константа, определяющая тип штриховки
Вариант Константа, определяющая вариант для вы- бранного типа штриховки
Г радиент Значение градиента (от 0 до 1)
Комментарий
Задает одноцветную градиентную заливку с указанными
параметрами.
8.10. Параметры заливки — объект FillFormat 619
Пример
'Одноцветный градиент типа "диагональная 2"
MyShape.Fill.OneColorGradient
msoGradientDiagonalDown, Г, 0.2
PatternedfYaop)
Параметр Назначение
Узор Константа, определяющая вид узора
Комментарий
Задает заливку-узор с указанными параметрами.
Пример
'Заливка: узор типа "горизонтальные кирпичи"
MyShape.Fill.Patterned _
msoPatternHorizontalBrick
ЯгевсАЗг.^гцп^ТилШгрихияки, Вариант, ТипГрадыента)
Параметр Назначение
ТипШтриховки Константа, определяющая тип штриховки
Вариант Константа, определяющая вариант для выбран- ного типа штриховки
ТипГ радиента Константа, определяющая тип градиента
620 8.10. Параметры заливки — объект FillFormat
Комментарий
Задает заливку с одним из предопределенных типов гра-
диента («горизонт», «рассвет», «пустыня» и т.д.).
Пример
'Градиентная заливка: штриховка — "диагональная 1"
'Тип градиента — "Туман"
MyShape.Fill.PresetGradient
msoGradientDiagonalUp, Г,
msoGradientFog
PresetTextured(TeKcrypa)
Параметр Назначение
Текстура Константа, определяющая тип текстуры
Комментарий
Задает текстурную заливку с текстурой указанного типа.
Пример
'Текстурная заливка: "коричневый мрамор"
MyShape.Fill.PresetTextured _
msoTextureBrownMarble
Solid
Комментарий
Задает сплошную заливку.
8.10. Параметры заливки — объект FillFormat
621
Пример
MyShape.Fill.Solid
Т\лгоСок->гСгяс/<сп((ТипШтрижааки, Вариант)
Параметр Назначение
ТипШтриховки Константа, определяющая тип штриховки
Вариант Константа, определяющая вариант для выбран- ного типа штриховки
Комментарий
Задает двухцветную градиентную заливку.
Пример
'Двухцветный градиент типа "диагональная 1"
MyShape.Fill.TwoColorGradient
msoGradientDiagonalDown, Г
изигРМиге(ИмяФэйла)
Параметр Назначение
ИмяФайла Имя графического файла, содержащего рисунок
Комментарий
Использует в качестве заливки рисунок, загруженный из
графического файла.
• Рисунок, содержащийся в файле масштабируется так,
чтобы заполнить весь объект.
622 8.11. Форматирование линии — объект LineFormat
Пример
MyShape.Fill.UserPicture "С:\Date\Logo.bmp"
UserTextured(HM8&a&fla)
Параметр Назначение
ИмяФайла Имя графического файла, содержащего образец текстуры
Комментарий
Задает текстуру, определенную пользовательским графи-
ческим файлом.
• Рисунок, содержащийся в файле повторяется до запол-
нения объекта.
Пример
MyShape.Fill.UserTextured "С:\Date\Logo.bmp"
8.11. Форматирование линий — объект
LineFormat
Объект LineFormat служит для форматирования линий, как та-
ковых, а также для форматирования линий, из которых состоят
автофигуры. Этот объект содержится в свойстве Line объектов
типа Shape.
8.11. Форматирование линий — объект LineFormat
623
8.11.1. Свойства
BjckCal&r
Определяет цвет заднего плана линии.
• Свойство применимо только в отношении линий узоров.
Пример
MyShape.Line.BackColor.RGB = RGB(192, 64, 192)
BeginArrowheeicfLength
Определяет длину стрелки в начале линии.
Пример
MyShape.Line.BeginArrowheadLength
= msoArrowheadLengthMedium
BaginArrttWheadStyle
Определяет стиль стрелки в начале линии.
Пример
MyShape.Line.BeginArrowheadStyle
= msoArrowheadOval
BeginAmwhesdWidth__________________v ..°--
Определяет толщину стрелки в начале линии.
624 8.11. Форматирование линий — объект LineFormat
Пример
MyShape.Line.BeginArrowheadWidth
= msoArrowheadWidthMedium
3i t.rStyl.*
Определяет шаблон линии (стиль пунктира).
Пример
MyShape.Line.DashStyle = msoLineDashDot
EndArruwheadLength ' « s-** »
Определяет длину стрелки в конце линии.
Пример
MyShape.Line.EndArrowheadLength
= msoArrowheadLengthMedium
EndArrowheadStyte
Определяет стиль стрелки в конце линии.
Пример
MyShape.Line.EndArrowheadStyle
= msoArrowheadOval
EndArrowhaadWidth
Определяет толщину стрелки в конце линии.
(gOlPfeWliW
8.11. Форматирование линий — объект LineFormat 625
Пример
MyShape.Line.EndArrowheadWidth
= msoArrowheadWidthMedium
FcHvColor
Определяет цвет линии.
Пример
MyShape.Line.ForeColor.RGB = RGB(192, 64, 192)
Puttcrn
Задает узор линии.
Пример
MyShape.Line.Pattern = msoPattern30Percent
StyK
Определяет стиль линии.
Пример
MyShape.Line.Style = msoLineThinThick
Transparency
Определяет степень «прозрачности» линии (значения от О
до 1).
626 8.12. Управление тенью — объект ShadowFormat
Пример
MyShape.Line.Transparency = 0.5
Visible
True, если линия должна быть видимой, и False в против-
ном случае.
Пример
MyShape.Line.Visible = True
Weight
Определяет толщину линии в пунктах.
Пример
MyShape.Line.Weight = 5
8.12. Управление тенью — объект
ShadowFormat
Объект ShadowFormat содержится в свойстве Shadow объ-
ектов типа Shape и служит для управления тенью.
8.12.1. Свойства
ForeColsr
Определяет цвет тени.
8.12. Управление тенью — объект ShadowFormat 627
Пример
MyShape.Shadow.ForeColor.RGB = RGB(192, 64, 32)
Obscured
Разрешает (False) незалитому объекту заслонять свою тень.
Пример
MyShape.Shadow.Obscured = True
Offset*
Определяет смещение тени относительно объекта по го-
ризонтали (в пунктах).
Пример
MyShape.Shadow.OffsetX = 5
Определяет смещение тени относительно объекта по вер-
тикали (в пунктах).
Пример
MyShape.Shadow.OffsetY = 7
628 8.12. Управление тенью — объект ShadowFormat
Transparency
Определяет степень «прозрачности» тени (значения от О
до 1).
Пример
MyShape.Shadow.Transparency = 0.5
«Уре
Определяет тип тени.
Пример
MyShape.Shadow.Туре = msoShadowll
Л £
True, если тень должна быть видимой, и False в противном
случае.
Пример
MyShape.Shadow.Visible = True
8.12.2. Методы
IncrementQffsetX(UJar)
Параметр Назначение
Шаг Число пунктов, на которые необходимо изменить смещение
8.12. Управление тенью — объект ShadowFormat 629
Комментарий
Изменяет смещение тени относительно объекта по гори-
зонтали на заданное число пунктов.
• Положительные числа соответствуют смещению вправо,
отрицательные — влево.
Пример
MyShape.Shadow.IncrementOffsetX 15
fncremeiitOffsei I'ttJJai J
Параметр Назначение
Шаг Число пунктов, на которые необходимо изменить смещение
Комментарий
Изменяет смещение тени относительно объекта по верти-
кали на заданное число пунктов.
• Положительные числа соответствуют смещению вниз,
отрицательные — верх.
Пример
MyShape.Shadow.IncrementOffsetY -5
630 8.13. Эффекты объемности — объект ThreeDFormat
8.13. Эффекты объемности —
объект ThreeDFormat
Объект ThreeDFormat содержится в свойстве ThreeD объек-
тов типа Shape и служит для управления эффектами объем-
ности.
8.13.1. Свойства
Depth
Определяет глубину проекции (значение от -600 до 9600).
Пример
MyShape.ThreeD.Depth = 100
ExtrusionColot
Определяй т цвет линий проекции.
Пример
MyShape.ThreeD.ExtrusionColor.RGB
= RGB(192, 64, 32)
Extrusi Со/orType
Определяет, должен ли цвет линий проекции зависеть от
заливки объекта или быть независимым от нее.
Пример
MyShape.ThreeD.ExtrusionColorType =
msoExtrusionColorAutomatic
8.13. Эффекты объемности — объект ThreeDFormat 631
Perspective
Определяет направление проекции: True соответствует
направлению «в перспективе», False — «параллельно».
Пример
MyShape.ThreeD.Perspective = True
PreseHJgMingSoftness я , *4»
Определяет яркость освещения.
Пример
MyShape.ThreeD.PresetLightingSoftness
= msoLightingBright
PresfttMaterial
Определяет отражающие свойства поверхности («матери-
ал» поверхности).
Пример
MyShape.ThreeD.PresetMaterial
= msoMaterialMetal
RutatianX
Задает вращение вокруг оси X в градусах (значения от -90
до 90).
Ж1Й1РОМ11Й
632 8.13. Эффекты объемности — объект ThreeDFormat
Пример
MyShape.ThreeD.RotationX = 45
HuttttktnY
Задает вращение вокруг оси Y в градусах (значения от -90
до 90).
Пример
MyShape.ThreeD.RotationY = 45
Visible
Разрешает (True) отображение объемных эффектов для
Shape-объекта.
Пример
MyShape.ThreeD.Visible = True
8.13.2. Методы
IncrementRotutionXfyniA)
Параметр Назначение
Угол Угол поворота в градусах
Комментарий
Поворачивает объект вокруг оси X на заданный угол.
8.13. Эффекты объемности — объект ThreeDFormat 633
Пример
MyShape.ThreeD.IncrementRotationX 15
| Incrwfientitot&ti&n У(Уг^л)
Параметр Назначение
Угол Угол поворота в градусах
Комментарий
Поворачивает объект вокруг оси Y на заданный угол.
Пример
MyShape.ThreeD.IncrementRotationY 15
R&setRotatian
Комментарий
Возвращает значения углов поворота объекта вокруг осей
X и Y к исходным величинам.
Пример
MyShape.ThreeD.ResetRotation
634 8.13. Эффекты объемности — объект ThreeDFormat
SetS^trusiunOirectiunfHinpjaAeHHe)
Параметр Назначение
Направление Константа, определяющая направление проекции
Комментарий
Задает направление линий проекции.
Пример
MyShape.ThreeD.SetExtrusionDirection
msoExtrusionTopLeft
SatThi u^OFjjrmat(0opiwaiJ ‘ ‘ -4- •* *M ~
Параметр Назначение
Формат Константа, определяющая формат объемной проекции
Комментарий
Задает формат объемной проекции.
Пример
MyShape.ThreeD.SetThreeDFormat msoThreeDlO
8.14. Форматирование текста — объект Textstyle
635
8.14. Форматирование текста —
объект Textstyle
Коллекция Textstyles содержится в одноименном свойстве
объектов типа Master и включает в себя все TextStyle-объек-
ты для данного образца. Каждый объект Textstyle отвечает за
параметры форматирования либо заголовка, либо основного
текста, либо текста по умолчанию. Доступ к конкретному Text-
Style-объекту возможен благодаря коллекции Textstyles и ин-
дексу, указывающему конкретный объект: ppBodyStyle — для
основного текста, ppDefaultStyle — для текста по умолчанию и
ppTitleStyle — для заголовков.
8.14.1. Свойства
revels
Служит для доступа к уровням в текстовой структуре слайда.
Пример
'Форматировать 1-й и 2-й уровни
'основного текста
With ActivePresentation.TitleMaster _
.Textstyles(ppBodyStyle)
.Levels(1).Font.Name = "Arial"
.Levels(1).Font.Size = 36
.Levels(2).Font.Name = "Times New Roman"
.Levels(2).Font.Size = 24
End With
Ruler
Представляет линейку, содержащую сведения о втяжках и
позициях табуляции.
636
8.15. Область текста — объект TextFrame
Пример
'Позиция табуляции в 50-ти пунктах от начала
строки
With ActivePresentation.TitleMaster _
.Textstyles(ppBodyStyle)
.Ruler.Tabstops-Add ppTabStopRight, 50
End With
TextFrame
Представляет собственно область текста.
Пример
'Отступ левой границы текста — 50 пунктов
With ActivePresentation.TitleMaster _
.Textstyles(ppBodyStyle)
.TextFrame.MarginLeft = 50
End With
8.15. Область текста — объект TextFrame
Объект TextFrame представляет прямоугольник на рабочей
поверхности слайда, где размещается текст. Текст и его об-
ласть можно рассматривать как составную часть Shape-объ-
екта (см. 8.7), доступ к параметрам форматирования текста
возможен посредством объекта TextStyle (см. 8.14).
8.15.1. Свойства
MasTexi
Возвращает булево значение True, если объект содержит
текст (и False в противном случае).
8.15. Область текста — объект TextFrame
637
Пример
'Если объект содержит текст, то...
With MyShape.TextFrame
If .HasText Then
.Orientation = _
msoTextOrientationVerticalFarEast
.TextRange.Font.Italic = True
End If
End With
HorUontalAnsh&r •- > •-.%* * < . w
Задает неподвижную по горизонтали точку для формати-
рования текста внутри Shape-объекта.
Пример
With MyShape.TextFrame
.HorizontalAnchor = msoAnchorCenter
End With
MarginDottnm
Определяет расстояние (в пунктах) между нижней грани-
цей области текста и нижней границей Shape-объекта, в
состав которого входит данный текст.
Пример
With MyShape.TextFrame
.MarginBottom = 50
End With
638
8.15. Область текста — объект TextFrame
MarginLaft
Определяет расстояние (в пунктах) между левой границей
области текста и левой границей Shape-объекта, в состав
которого входит данный текст.
Пример
With MyShape.TextFrame
.MarginLeft = 80
End With
MarginRigM
Определяет расстояние (в пунктах) между правой грани-
цей области текста и правой границей Shape-объекта, в
состав которого входит данный текст.
Пример
With MyShape.TextFrame
.MarginRight = 40
End With
Ma.ginTop
Определяет расстояние (в пунктах) между верхней грани-
цей области текста и верхней границей Shape-объекта, в
состав которого входит данный текст.
Пример
With MyShape.TextFrame
.MarginTop = 80
End With
8.15. Область текста — объект TextFrame
639
Orientation
Определяет ориентацию текста внутри области
Пример
With MyShape.TextFrame
.Orientation = _
msoTextOrientationVerticalFarEast
End With
Ruler
Служит для доступа к параметрам линейки.
Пример
With MyShape.TextFrame
.Ruler.TabStops.Add ppTabstopCenter, 85
End With
TextRange
Представляет непрерывный фрагмент текста.
Пример
With MyShape.TextFrame
.TextRange.Font.Italic = True
End With
VerticalAnchor
Задает неподвижную по вертикали точку для форматиро-
вания текста внутри Shape-объекта.
640 8.16. Объект TextRange
Пример
With MyShape.TextFrame
.VerticalAnchor = msoAnchorMiddle
End With
Wordwrap
Разрешает (True) автоматический перенос текста по сло-
вам внутри области.
Пример
With MyShape.TextFrame
.Wordwrap = True
End With
8.16. Объект TextRange
Объект TextRange представляет непрерывный фрагмент текс-
та, который позволяет обращаться к себе как к неделимому
целому. Свойства и методы объекта TextRange относятся ко
всем символам заключенного в нем текста.
8.16.1. Свойства
Actionsettings
Содержит объект ActionSetting, определяющий реакцию
на действия пользователя.
Пример
With MyShape.TextFrame.TextRange
8.16. Объект TextRange
641
.Actionsettings(ppMouseClick).Action
= ppActionNextSlide
End With
BoundHeigM
Возвращает высоту наименьшего прямоугольника, в кото-
рый можно было бы заключить текст.
Пример
With MyShape.TextFrame.TextRange
MsgBox .BoundHeight
End With
BoundLeft
Возвращает расстояние (в пунктах) от левого края слайда
до левой границы наименьшего прямоугольника, в кото-
рый можно было бы заключить текст.
Пример
With MyShape.TextFrame.TextRange
MsgBox .BoundLeft
End With
BoundTop
Возвращает расстояние (в пунктах) от верхнего края слай-
да до верхней границы наименьшего прямоугольника, в
который можно было бы заключить текст.
21 1855
642
8.16. Объект TextRange
Пример
With MyShape.TextFrame.TextRange
MsgBox .BoundTop
End With
BoundWldth
Возвращает ширину наименьшего прямоугольника, в ко-
торый можно было бы заключить текст.
Пример
With MyShape.TextFrame.TextRange
MsgBox .Boundwidth
End With
FOnt
Обеспечивает доступ к параметрами шрифта.
Пример
With MyShape.TextFrame.TextRange
.Font.Name = "Arial"
End With
IndentLevel ** ms - .<«
Определяет уровень втяжки текста (значения от 1 до 5).
8.16. Объект TextRange
643
Пример
With MyShape.TextFrame.TextRange
.IndentLevel = 2
End With
ParagraphFormat
Обеспечивает доступ к параметрам форматирования аб-
заца.
Пример
With MyShape.TextFrame.TextRange
.ParagraphFormat.SpaceBefore = 12
End With
Text
Содержит собственно текст фрагмента.
Пример
With MyShape.TextFrame.TextRange
.Text - "Собственно текст"
End With
644
8.16. Объект TextRange
8.16.2. Методы
AddPeriods
Комментарий
Добавляет точку в конце каждого абзаца, входящего во
фрагмент текста.
Пример
MyShape.TextFrame.TextRange.AddPeriods
ChangeCase(Tun)
Параметр Назначение
Тип Константа, определяющая вид преобразования символов
Комментарий
Изменяет регистр символов текста.
Пример
'Изменить регистр всех символов
'на противоположный
With MyShape.TextFrame.TextRange
.ChangeCase ppCaseToggle
End With
8.16. Объект TextRange
645
Copy
Комментарий
Копирует фрагмент в буфер обмена.
Пример
MyShape.TextFrame.TextRange.Copy
Cut
Комментарий
Вырезает текст в буфер обмена.
Пример
MyShape.TextFrame.TextRange.Cut
Oe/ute
Комментарий
Удаляет фрагмент текста.
Пример
MyShape.TextFrame.TextRange.Delete
646
8.16. Объект TextRange
InsertA fter(Hoabi&Tt.-KC r)
Параметр Назначение
НовыйТекст Строка, содержащая вставляемый текст
Комментарий
Вставляет новый текст в конец фрагмента.
Пример
With MyShape.TextFrame.TextRange
.InsertAfter "Новый текст"
End With
•nsertBeforefHoBb.nTexcT)
Параметр Назначение
НовыйТекст Строка, содержащая вставляемый текст
Комментарий
Вставляет новый текст в начало фрагмента.
Пример
With MyShape.TextFrame.TextRange
.InsertBefore "Новый текст"
End With
8.16. Объект TextRange
647
1пзег1Оа1еТнЛ&(Фирм4тД.ат1.1Врем>зны, КякПэле)
Параметр Назначение
ФорматДаты- Времени Константа, определяющая формат значения да - ты-времени
КакПоле Разрешает (True) вставку значения даты-време- ни в форме поля, обновляемого при открытии презентации
Комментарий
Выполняет вставку в текст значения даты-времени.
Пример
With MyShape.TextFrame.TextRange
.InsertDateTime ppDateTimeMMMMdyyyy, True
End With
InsartSliduNumber
Комментарий
Выполняет вставку в текст номера слайда.
Пример
MyShape.TextFrame.TextRange.InsertSlideNumber
648
8.16. Объект TextRange
1пзсг15ут1»аЦИмнШрифта, КидСимиила, UniCwJ?)
Параметр Назначение
Имя Шрифта Имя шрифта
КодСимвола Номер символа в кодах ASCII или UniCode
UniCode Разрешает (True) интерпретировать символ, как символ кода UniCode
Комментарий
Вставляет в текст символ.
Пример
With MyShape.TextFrame.TextRange
.Insertsymbol "Arial", 74
End With
LinesfnepeaaCrpoKa, ЧислоСтрок)
Параметр Назначение
ПерваяСтрока Номер первой строки выделяемого подмножест- ва текста
ЧислоСтрок Число строк в выделяемом подмножестве текста
Комментарий
Возвращает TextRange-объект, заключающий в себе за-
данное подмножество строк того TextRange-объекта, ме-
тод которого вызван.
8.16. Объект TextRange
649
Пример
With MyShape.TextFrame.TextRange
.Lines(l, 3).Font.Bold = True
End With
Paragiiaph >П<.реыяАйзац ЧислоАбзяцев)
Параметр Назначение
ПервыйАбзац Номер первого абзаца выделяемого подмноже - ства текста
ЧислоАбзацев Число абзацев в выделяемом подмножестве текста
Комментарий
Возвращает TextRange-объект, заключающий в себе за-
данное подмножество абзацев того TextRange-объекта,
метод которого вызван.
Пример
With MyShape.TextFrame.TextRange
.Paragraphs(1, 3).Font.Bold = True
End With
Paste
Комментарий
Выполняет вставку фрагмента текста из буфера обмена.
650 8.16. Объект TextRange
Пример
MyShape.TextFrame.TextRange.Paste
RemovePer:jds
Комментарий
Удаляет точки в концах абзацев.
Пример
MyShape.TextFrame.TextRange.RemovePeriods
Select
Комментарий
Выделяет текст.
Пример
MyShape.TextFrame.TextRange.Select
Santences(nepaoeПредложение, ЧислаПредлажений)
Параметр Назначение
ПервоеПредложение Номер первого предложения в выделяе- мом подмножестве текста
ЧислоПредложений Число предложений в выделяемом под- множестве текста
8.16. Объект TextRange
651
Комментарий
Возвращает TextRange-объект, заключающий в себе за-
данное подмножество предложений того TextRange-объ-
екта, метод которого вызван.
Пример
With MyShape.TextFrame.TextRange
.Sentences (1, 3).Font.Bold = True
End With
1<Уогс/з<ПераоеСлизо, ЧислоСлоа)
Параметр Назначение
ПервоеСпово Номер первого слова в выделяемом подмноже- стве текста
ЧислоСпов Число слов в выделяемом подмножестве текста
Комментарий
Возвращает TextRange-объект, заключающий в себе задан-
ное подмножество слов того TextRange-объекта, метод ко-
торого вызван.
Пример
With MyShape.TextFrame.TextRange
.Words(1, 3).Font.Bold = True
End With
652 8.17. Форматирование абзаца — объект ParagraphFormat
8.17. Форматирование абзаца —
объект ParagraphFormat
Объект ParagraphFormat позволяет форматировать абзацы
текста.
8 .17.1. Свойства
Alignment
Определяет режим горизонтального выравнивания текста
в абзаце.
Пример
With MyShape.TextFrame.TextRange
.ParagraphFormat
.Alignment = ppAlignRight
End With
B-jseLineAlignment
Определяет позицию базовой строки абзаца.
Пример
With MyShape.TextFrame.TextRange _
.ParagraphFormat
.BaseLineAlignment = ppBaselineAlignTop
End With
Bullet
Обеспечивает доступ к маркеру абзаца.
8.17. Форматирование абзаца — объект ParagraphFormat 653
Пример
With MyShape.TextFrame.TextRange
.ParagraphFormat
.Bullet.Font.Name - "Arial"
End With
uineRuteA+ter
True, если интервал после абзаца исчисляется в строках, и
False, если в пунктах.
Пример
With MyShape.TextFrame.TextRange
.ParagraphFormat
.LineRuleAfter = True
End With
LineRult'Befure
True, если интервал перед абзацем исчисляется в строках,
и False, если в пунктах.
Пример
With MyShape.TextFrame.TextRange
.ParagraphFormat
.LineRuleBefore = True
End With
654 8.17. Форматирование абзаца — объект ParagraphFormat
LineRule wthln
True, если интервалы внутри абзаца исчисляются в стро-
ках, и False, если в пунктах.
Пример
With MyShape.TextFrame.TextRange
.ParagraphFormat
.LineRuleWithin = True
End With
SpaceAftet
Определяет интервал после абзаца (в строках или пунктах).
Пример
With MyShape.TextFrame.TextRange
.ParagraphFormat
.SpaceAfter = 2
End With
SptaceBefore
Определяет интервал перед абзацем (в строках или пунктах).
Пример
With MyShape.TextFrame.TextRange
.ParagraphFormat
.SpaceBefore = 2
End With
8.18. Форматирование символов — объект Font 655
Spaca Within
Определяет интервал внутри абзаца (в строках или пунктах).
Пример
With MyShape.TextFrame.TextRange
.ParagraphFormat
.SpaceWithin = 2
End With
WvrdWrap
Разрешает (True) автоматический перенос.
Пример
With MyShape.TextFrame.TextRange _
.ParagraphFormat
.Wordwrap = True
End With
8.18. Форматирование символов —
объект Font
Свойства объекта Font отвечают за параметры шрифта во
фрагменте текста, определенном объектом TextRange.
8.18.1. Свойства
Bvid
Задает для шрифта начертание «жирный».
656
8.18. Форматирование символов — объект Font
Пример
MyShape.TextFrame.TextRange.Font.Bold = True
Cn»or
Определяет цвет шрифта.
Пример
MyShape.TextFrame.TextRange.Font.Color _
.SchemeColor = ppAccentl
Erofoess
Задает эффект «рельеф» для символов.
Пример
MyShape.TextFrame.TextRange.Font.Emboss = True
italic
Задает для шрифта начертание «курсив».
Пример
MyShape.TextFrame.TextRange.Font.Italic = True
| Name
Имя шрифта.
(gOlPfeWliW
8.18. Форматирование символов — объект Font 657
Пример
MyShape.TextFrame.TextRange.Font.Name = "Arial"
Shadow
Разрешает отображение тени символов.
Пример
MyShape.TextFrame.TextRange.Font.Shadow = True
Sfca
Размер символа в пунктах.
Пример
MyShape.TextFrame.TextRange.Font.Size = 24
Subscript
Задает эффект «нижний индекс» для символов.
Пример
MyShape.TextFrame.TextRange.Font.Subscript
= True
658
8.19. Таблица — объект Table
Superscript
Пример
MyShape.TextFrame.TextRange.Font.Superscript
= True
Задает эффект «верхний индекс» для символов.
Underline
Задает эффект «подчеркивание» для символов.
Пример
MyShape.TextFrame.TextRange.Font.Underline
= True
8.19. Таблица — объект Table
Объект Table представляет собой таблицу на слайде, создан-
ную средствами самой программы PowerPoint, т.е. командой
Вставка / Таблица. Объект Table является элементом коллек-
ции Shapes и включает коллекции строк Columns и столбцов
Rows. Чтобы определить является ли данный элемент коллек-
ции Shapes таблицей, необходимо обратиться к свойству Has-
Table элемента коллекции 8Ьарев(индекс).
8.19.1. Свойства
Columns
Возвращает коллекцию Columns всех столбцов таблицы.
8.19. Таблица — объект Table
659
Пример
With ActiveWindow.Selection.ShapeRange
If .HasTable = True Then
.Table.Columns(1).Width = 72
End If
End With
Rows
Возвращает коллекцию Rows всех строк таблицы.
Пример
With ActiveWindow.Selection.ShapeRange
If .HasTable = True Then
.Table.Rows(3).Delete
End If
End With
8.19.2. Методы
СеЩСтрока, Столбец)
Параметр Назначение
Строка Номер строки таблицы (строки нумеруются с 1)
Столбец Номер столбца таблицы (солбцы нумеруются с 1)
Комментарий
Возвращает объект типа Cell, представляющий ячейку таб-
лицы.
660
8.20. Столбец — объект Column
Пример
'Записать в 1-ую ячейку текст "Ячейка 1"
With Presentations.Add
With .Slides.Add(1, ppLayoutBlank)
.Shapes.AddTable(3, 3).Select
.Shapes(1).Table.Cell (1, 1).Shape
.TextFrame.TextRange.Text = "Ячейка I11
End With
End With
8.20. Столбец — объект Column
Объект Column представляет собой столбец таблицы на слай-
де. Объект Column является элементом коллеции Columns,
включающей все столбцы таблицы.
8.20.1. Свойства
Ceils
Возвращает коллекцию CellRange всех ячеек столбца таб-
лицы.
Пример
'Занесение в ячейки их номеров в виде
1"столбец№ строкам"
Dim i As Integer
Dim j As Integer
With Presentations.Add
.Slides.Add(1, ppLayoutBlank).Shapes _
.AddTable(3, 3).Select
Set myTable = .Slides(1).Shapes(1).Table
For i = 1 To myTable.Columns.Count
For j = 1 To myTable _
.Columns(i).Cells.Count
8.20. Столбец — объект Column
661
MyTable.Columns (i) .Cells (j)
.Shape.TextFrame _
.TextRange.Text = "столбец "
& i & " строка " & j
Next j
Next i
End With
'Mdtt'
Ширина колонки в пунктах.
Пример
ActivePresentation.Slides(2).Shapes(5)
.Table.Columns(1).Width = 80
8.20.2. Методы
Delete
Комментарий
Удаление столбца.
Пример
ActivePresentation.Slides(2).Shapes(5)
.Table.Columns(1).Delete
Select
Комментарий
Выбор столбца.
662
8.21. Строка — объект Row
Пример
ActivePresentation.Slides(2).Shapes(5)
.Table.Columns(1).Select
8.21. Строка — объект Row
Объект Row представляет собой строку таблицы на слайде и
является элементом коллеции Rows, включающей все строки
таблицы.
8.21.1. Свойства
Cells
Возвращает коллекцию CellRange всех ячеек строки таб-
лицы.
Пример
'Занесение в ячейки их номеров в виде
'"строкам столбецМ"
Dim i As Integer
Dim j As Integer
With Presentations.Add
.Slides-Add(1, ppLayoutBlank).Shapes _
.AddTable(3, 3).Select
Set myTable = .Slides(1).Shapes(1).Table
For i = 1 To myTable.Rows.Count
For j = 1 To myTable.Rows(i).Cells _
.Count myTable.Rows(i) .Cells (j)
.Shape.TextFrame.TextRange.Text _
= "строка " & i & " столбец " & j
Next j
Next i
End With
8.21. Строка — объект Row 663
Height
Высота строки в пунктах.
Пример
ActivePresentation.Slides(2).Shapes(5)
.Table.Rows(1).Height = 50
8.21.2. Методы
Delete
Комментарий
Удаление строки.
Пример
ActivePresentation.Slides(2).Shapes(5)
.Table.Rows(1).Delete
Se/ect
Комментарий
Выбор строки.
Пример
ActivePresentation.Slides(2).Shapes(5)
.Table.Rows(1).Select
664
8.22. Ячейка — объект Cell
8.22. Ячейка — объект Cell
Объект Cell представляет собой ячейку таблицы на слайде и
является элементом коллекции CellRange, которая включает
все ячейки заданной строки или столбца. Для обращения к
коллекции CellRange используется ключевое слово Cells. Для
обращения к ячейке в таблице используют конструкцию Cell
(строка, столбец), а для обращения к ячейке в строке или
столбце — конструкцию Cells(HOMep).
8.22.1. Свойства
Borders
Возвращает коллекцию Borders всех границ и диагональ-
ных линий ячейки.
Пример
'Задание толщины левой границы первой ячейки
' второй строки таблицы
ActiveWindow.Selection.ShapeRange.Table.Rows(2)
.Cells(1).Borders.Item(ppBorderLeft)
.Weight = 3
Shjpe
Возвращает объект, расположенный в ячейке таблицы.
Пример
'Создание таблицы размером 3*3 и занесение
' в первую ее ячейке четырехугольной звезды
With Presentations.Add
With .Slides.Add(1, ppLayoutBlank)
8.22. Ячейка — объект Cell 665
.Shapes.AddTable(3, 3).Select
.Shapes(1).Table.Cell (1, 1).Shape _
.AutoShapeType = msoShape4pointStar
End With
End With
8.22.2. Методы
Merye (Спить С)
Параметр Назначение
СлитьС Координаты ячейки, с которой спивается текущая
Комментарий
Сливает текущую ячейку таблицы с указанной.
Пример
'Слить первую ячейку таблицы с соседней справа
With ActivePresentation.Slides(2)
.Shapes(5).Table
.Cell(l, 1).Merge MergeTo:=.Cell(1, 2)
End With
Select
Комментарий
Выбор ячейки.
666 8.22. Ячейка — объект Cell
Пример
ActivePresentation.Slides(2).Shapes(5)
.Table.Cell(1,2).Select
>ptit ЧислоСтрок, ЧислаСтолбцов
Параметр Назначение
ЧислоСтрок Число строк, на которые разбивается текущая ячейка
ЧислоСтолбцов Число столбцов, на которые разбивается теку- щая ячейка
Комментарий
Разбивает текущую ячейку таблицы на указанное число
ячеек.
Пример
'Разбить первую ячейку на две,
'расположив их в столбец
ActivePresentation.Slides(2).Shapes(5)
.Table.Cell(l, 1).Split 2, 1
Объект Access
9.1. Обзор
VBA интегрирован в среду Access на несколько иных правах и с
использованием несколько других подходов, чем в отношении
остальных компонентов Office. Эти отличия касаются как среды
разработки, так и принципов, на которых построена объектная
модель Access.
Собственно объектная модель Access достаточно проста. Она
включает в себя ряд объектов, обеспечивающих доступ:
к элементам базы/проекта данных:
• таблицам
• формам
• запросам
• отчетам
• страницам
• макросам
• модулям VBA
к элементам пользовательского интерфейса
к среде разработки.
Доступ же непосредственно к данным Access осуществляется
посредством так называемых DAO-объектов (Data Access Ob-
jects — объекты доступа к данным), которые будут рассмотре-
ны в следующей главе (см. гл. 10).
668 9.1. Обзор
Обзор. Структура объекта Access
Application ►
— —— — — —
Forms (Form) Controls L Properties (Control) Module Properties (Form) Reports (Report) - Controls L Properties (Control) - Module ” Properties (Form) Modules (Module) References (Reference) DataAccessPages (DataAccessPage) - WebOptions Printers (Printer) - Screen - DoCmd - VBE - DefaultWebOptions - Assistant - CommandBars — DBEngine - FileSearch - COMAddlns — AnswerWizard — LanguageSettings — FileDialog
9.2. Уровень приложения — объект Application
669
670
9.2. Уровень приложения — объект Application
9.9. Проект — объект Currentproject 671
Объект Назначение
Application Приложение, корневой объект иерархии
Forms Экранные формы
Reports Отчеты
Controls Элементы управления
Modules Программные модули
References Доступ к объектам других приложений
DataAccessPages Страницы доступа к данным
Screen Специальный объект, всегда указывающий на форму, элемент управления или отчет, облада- ющий в данный момент фокусом клавиатуры.
DoCmd Объект, методы которого эквивалентны мак- рокомандам Access
VBE Редактор Visual Basic
DefaultWeb- Options Глобальные атрибуты открытия/сохранения Web-страницы
Assistant Помощник Office
CommandBars Панели инструментов
DBEngine DAO-объекты
FileSearch Диалог Открытие документа
COMAddlns COM-надстройки в приложении
AnswerWizard Мастер AnswerWizard
Languagesettings Установка языка в приложении
CurrentProject Активный проект
CurrendData Объекты активной базы данных
672
9.2. Уровень приложения — объект Application
9.2. Уровень приложения —
объект Application
Свойства и методы объекта Application служат для решения
самых общих задач, имеющих отношение к функционирова-
нию приложения в целом. Кроме того, некоторые задачи
уровня приложения решаются с помощью методов объекта
DoCmd (см. 9.3).
9.2.1. Свойства
CurrentData
Использууется для доступа к активной в данный момент
(текущей) базе CurrentData.
Пример
' Печать имени активной базы
Debug.Print Application.CurrentData.FullName
CurrentQbfeatName
Имя активного в данный момент (текущего) объекта.
Пример
'Если форма активна, то сообщить ее имя
If CurrentObjectType = acForm Then
MsgBox "Форма " & CurrentObjectName _
& " активна"
End If
9.2. Уровень приложения — объект Application 673
Curr&ntObfOCtTyp&
Возвращает тип активного в данный момент объекта.
• Возвращаемое свойством значение следует сравнивать
с константами acTable, acMacro, acModule и acReport.
Пример
'Если форма активна, то сообщить ее имя
If CurrentObjectType = acForm Then
MsgBox "Форма " & CurrentObjectName _
& " активна"
End If
Curr&ntProject
Использууется для доступа к активному в данный момент
(текущему) проекту CurrentProject.
Пример
' Печать имени и типа проекта
Debug.Print Application.CurrentProject.
FullName
Debug.Print Application.CurrentProject.
ProjectType
OataAccassPagas
Используется для обращения к страницам доступа к данным.
Пример
Sub AllOpenDataAccessPages()
Dim dap As DataAccessPage
22 1855
674 9.2. Уровень приложения — объект Application
Set dbs = Application.Currentproject
' Поиск всех открытых страниц доступа
'к данным.
For Each dap In dbs.AllDataAccessPages
If dap.IsLoaded = TRUE then
' Печать имен открытых страниц.
Debug.Print dap.Name
End If
Next dap
End Sub
DBEngine______________ ___________________- '
Корневой объект в иерархии DAO обеспечивает доступ к
базам данных (см. 10.3).
Пример
'Сообщить номер версии DAO
MsgBox DBEngine.Version
DoCmti
Содержит одноименный объект, чьи методы эквивалентны
макрокомандам среды Access.
Пример
'Открыть форму с именем "MyForml"
DoCmd.OpenForm "MyForml"
Forms
Содержит все открытые формы (см. 9.4).
9.2. Уровень приложения — объект Application
675
Пример
Dim MyFrm As Form
'Скрыть все открытые формы
For Each MyFrm In Forms
MyFrm.Visible = False
Next
Re* m 3
Содержит все открытые отчеты (см. 9.6).
Пример
Dim MyRep As Report
'Скрыть все открытые отчеты
For Each MyRep In Reports
MyRep.Visible = False
Next
Sateen
Служит для доступа к активной области экрана.
Пример
'Изменить вид указателя мыши на "песочные часы"
Screen.MousePointer = 11
'Изменить вид указателя мыши на стандартный
Screen.MousePointer = О
676
9.2. Уровень приложения — объект Application
9.2.2. Методы
BuiltJCriteriafnune, ТипПоля. Выражение) ->
Параметр Назначение
Поле Строка, определяющая поле данных
ТипПоля Константа, задающая тип поля
Выражение Строка, задающая условие отбора
Комментарий
Возвращает строку условий отбора в виде, какой она име-
ла бы в фильтре для формы или бланке запроса.
Пример
'Открыть форму с именем "MyForml"
DoCmd.OpenForm "MyForml"
'Установить фильтр на записи:
'строка в поле "Namel" начинается с символа "G"
With Forms!MyForml
.Filter = BuildCriteria("Namel", dbText, "G*")
.FilterOn = True
End With
CloseCurrentDatabase
Комментарий
Закрывает текущую базу данных.
Пример
CloseCurrentDatabase
9.2. Уровень приложения — объект Application
677
CreateAccassPrvj‘i<.:t(l/lMHnp<>eKTa, СтракаГкщключнния)
Параметр Назначение
ИмяПроекта Имя файла создаваемого проекта
Строка- Подключения Строка параметров подключения проекта к внешней базе данных (необязательный пара- метр)
Комментарий
Создает новый проект.
• Служит для создания проекта Access из другого прило-
жения с помощью механизма программирования объек-
тов (ранее называемого механизмом управления объек-
тами OLE).
Пример
'Создать проект HGT
CreateAccessProject("С:\HGT.adp")
CurrentDB
Комментарий
Возвращает ссылку на активную (текущую) базу данных в
форме объекта типа DataBase (см. 10.5).
Пример
Dim db As Database
'Получить ссылку на текущую базу данных
Set db = CurrentDB
678
9.2. Уровень приложения — объект Application
'Сообщить имя базы
MsgBox CurrentDB.Name
Currentuser
Комментарий
Возвращает имя текущего пользователя.
Пример
'Сообщить имя пользователя
MsgBox Currentuser
£спо(0оно& чение Сосбщение,‘
Параметр Назначение
Обновление True (по умолчанию) указывает на то, что теку- щий экран обновлен; False — текущий экран не обновлен
Сообщение Строковое выражение, определяющее текст, вы - водимый в строке состояния при включении и выключении обновления
Комментарий
Задает режим обновления экрана Microsoft Access.
Пример
'Не обновлять экран, пока выполняется запрос
Echo False, "Выполняется запрос..."
'Снова обновлять экран
Echo True, "Запрос выполнен"
9.2. Уровень приложения — объект Application
679
NewAccessProfect(HM»npoeKra, СтрокаПодключэнии)
Параметр Назначение
ИмяПроекта Строка- Имя файла создаваемого проекта Строка параметров подключения проекта к внеш-
Подключения ней базе данных (необязательный параметр)
Комментарий
Создает и открывает новый проект.
• Служит для создания и открытия проекта Access из дру-
гого приложения с помощью механизма программиро-
вания объектов (ранее называемого механизмом управ-
ления объектами OLE).
Пример
'Создать и открыть проект HGT
NewAccessProject("С:\HGT.adp")
NewCurrentDataBase(HMaSa:ibi)
Параметр Назначение 1
ИмяБазы Имя файла создаваемой базы данных
Комментарий
Создает новую базу данных.
• Служит для создания баз данных Access из другого при-
ложения с помощью механизма программирования объ-
ектов (ранее называемого механизмом управления объ-
ектами OLE).
680
9.2. Уровень приложения — объект Application
Пример
'Создать базу данных Tdb
NewCurrentDataBase("С:\Tdb.mdb")
0рапСиггапЮаЫ1>ага(ИмиБазь1, Монопольный, Пароль)
Параметр Назначение
ИмяБазы Имя файла открываемой базы данных
Монопольный Указывает(Тгие), что база должна быть откры- та в монопольном режиме
Пароль Пароль открытия базы данных
Комментарий
Открывает существующую базу данных.
• Служит для открытия баз данных Access из другого при-
ложения.
Пример
'Открыть базу данных Tdb
OpenCurrentDatabase("С:\Tdb.mdb")
ОрепАссея&Рго)еа(ИмаПрс^кта, Монопольно)
Параметр Назначение
ИмяПроекта Имя файла создаваемого проекта
Монопольный Указы вает(Тгие), что проект должен быть от- крыт в монопольном режиме
9.3. Управление приложением — объект DoCmd
681
Комментарий
Открывает существующий проект.
• Служит для открытия проекта Access из другого прило-
жения с помощью механизма программирования объек-
тов (ранее называемого механизмом управления объек-
тами OLE).
Пример
'Открыть проект HGT
OpenAccessProject("С:\HGT.adp")
RefreshDt tabaseWindow
Комментарий
Обновляет окно базы данных после создания, удаления или
переименования таблицы, запроса, формы, отчета, мак-
роса или модуля.
Пример
RefreshDatabaseWindow
9.3. Управление приложением —
объект DoCmd
Объект DoCmd служит для выполнения действий, которые в
среде Access осуществляются с использованием команд
меню, его методы эквивалентны макрокомандам среды Ac-
cess. Имена методов объекта DoCmd совпадают с именами
параметров инструкции DoCmd, использовавшейся в языке
Access Basic, который существовал в старых версиях пакета
Microsoft Access.
682 9.3. Управление приложением — объект DoCmd
9.3.1. Методы
Арр1уРН(ег(ИмяФнльгра, УслоьиеМЬэге)
Параметр Назначение
ИмяФильтра Имя запроса (фильтра) в текущей базе данных
УсловиеМЬеге Допустимое предложение SQL WHERE без клю- чевого слова WHERE
Комментарий
Устанавливает заданный фильтр на записи текущей базы
данных.
Пример
'Открыть таблицу и отобразить записи,
'где в поле "ЬапсГ'содержится значение "Испания"
DoCmd.OpenTable "MyTablel"
DoCmd.ApplyFilter , "Land='Испания'"
Beep
Комментарий
Служит для издания звука.
Пример
DoCmd.Веер
9.3. Управление приложением — объект DoCmd
683
С1озе(ТипООъакта, ИмяОбъакта, Сохранение)
Параметр Назначение
ТипОбъекта Константа, определяющая тип объекта
ИмяОбъекта Строковое выражение, представляющее допус- тимое имя объекта, тип которого указан в па - ра метре ТипОбъекта
Сохранение Константа, определяющая тип сохранения
Комментарий
Закрывает объект и сохраняет изменения в нем.
Пример
'Закрыть все открытые формы
For Each MyFrm In Forms
DoCmd.Close acForm, MyForm.Name, acSavePrompt
Next
СоруОЬ]ес((БДПолучатело, Новое Имя, ТипИсточника
ИмяИст'™ти'&)
Параметр Назначение
БДПолучатель Имя файла базы данных, в которую копируется объект
НовоеИмя Новое имя копируемого объекта
ТипИсточника Константа, определяющая тип объекта-источника
ИмяИсточника Имя копируемого объекта
684 9.3. Управление приложением — объект DoCmd
Комментарий
Копирует объект.
Пример
'Копировать форму MyForml с новым именем
'MyForm2
DoCmd.CopyObject CurrentDb.Name, "MyForm2",
acForm, "MyForml"
DeleteuDject(TnnO6TbeKTa, ИмяОбъекта)
Параметр Назначение
ТипОбъекта Константа, определяющая тип объекта
ИмяОбъекта Имя подлежащего удалению объекта
Комментарий
Удаляет из базы данных указанный объект.
Пример
'Удалить форму MyForm2
DoCmd.DeleteObject acForm, "MyForm2"
<1оТоСоЩго1{ИмяЭлеменга)
Параметр Назначение
ИмяЭлемента Имя элемента управления, которому требуется передать фокус
9.3. Управление приложением — объект DoCmd 685
Комментарий
Переносит фокус клавиатуры на указанный элемент управ-
ления.
Пример
'Открыть форму MyForml и поместить курсор
'в поле Price
DoCmd.OpenForm "MyForml"
DoCmd.GoToControl "Price"
GoToRecord(rnnO6betaa, ИмяОбъекта,Запись, Смещение}
Параметр Назначение
ТипОбъекта Константа, определяющая тип объекта
ИмяОбъекта Имя объекта, где расположена запись
Запись Константа, определяющая разновидность пере- хода к записи
Смещение Число записей, на которые искомая запись от- стоит от текущей
Комментарий
Делает текущей указанную запись.
Пример
'Открыть форму MyForml и перейти к записи 5
DoCmd.OpenForm "MyForml"
DoCmd.GoToRecord acDataForm, "MyForml",
acGoTo, 5
686 9.3. Управление приложением — объект DoCmd
Maximize
Комментарий
Разворачивает текущее окно до размеров экрана.
Пример
'Открыть форму MyForml и развернуть ее на весь экран
DoCmd.OpenForm "MyForml"
DoCmd.Maximize
Minimize
Комментарий
Сворачивает текущее окно в значок.
Пример
'Открыть форму MyForml и свернуть ее в значок
DoCmd.OpenForm "MyForml"
DoCmd.Minimize
Миу»81гв(ОтЛевогоКрая, ОтВерхнегоКрая, Ширина,
Высота)
Параметр Назначение
ОтЛевогоКрая Новая координата верхнего левого угла окна по горизонтали
ОтВерхнегоКрая Новая координата верхнего левого угла окна ло вертикали
Ширина Новая ширина окна
Высота Новая высота окна
9.3. Управление приложением — объект DoCmd 687
Комментарий
Изменяет положение и размеры текущего окна. Все рас-
стояния задаются в твипах (1/20 пункта).
Пример
'Открыть форму MyForml, переместить
'и изменить размеры окна
DoCmd.OpenForm "MyForml"
DoCmd.MoveSize 1000, 1000, 9000, 4000
QpenU taAccessPaч v (ИмиСтр^ницы, Режим)
Параметр Назначение
ИмяСтраницы Имя страницы доступа к данным
Режим Константа, определяющая режим открытия страницы
Комментарий
Открывает страницу доступа к данным.
Пример
'Открыть страницу доступа к данным
'MyPage1 в режиме конструктора
DoCmd.DataAccessPage "MyPagel",
acDataPageDesign
688
9.3. Управление приложением — объект DoCmd
ОрепР<згт(ИмяФормы, Режим, ИмиФильтра, '
Условие IWiere, РежимДэнных, РвжммОкяа,
ДргуменгмОгкрыгия)
Параметр Назначение
ИмяФормы Имя формы
Режим Константа, определяющая режим открытия формы
ИмяФильтра Имя файла запроса (фильтра)
YcnoBneWhere Допустимое предложение SQL WHERE без ключевого слова WHERE
РежимДанных Константа, определяющая режим доступа к данным
РежимОкна Константа, определяющая режим окна формы
Аргументы - Открытия Строка, определяющая значение свойства формы OpenArg
Комментарий
Открывает форму.
Пример
'Открыть форму MyForml с условием Price 10
DoCmd.OpenForm "MyForml", acNormal,
, "Price > 10"
9.3. Управление приложением — объект DoCmd
689
Оречвиег] 'ИмяЗапрочс Режим- РежимДанчь^)
Параметр Назначение
ИмяЗапроса Имя открываемого запроса
Режим Константа, определяющая режим открытия за- проса
РежимДанных Константа, определяющая режим доступа к данным
Комментарий
Открывает запрос.
Пример
'Открыть запрос "MyCalcl" в режиме
'"только для чтения"
DoCmd.OpenQuery "MyCalcl", acViewNormal,
acReadOnly
e f АерчгЦНмяОтч*. та, Режим, Имяфиль ipa,
ycaoBMeWhere} ________________________
Параметр Назначение
ИмяОтчета Имя открываемого отчета
Режим Константа, определяющая режим открытия отчета
ИмяФильтра Имя файла запроса (фильтра)
Условие\Л/Неге Допустимое предложение SQL WHERE без клю- чевого слова WHERE
690
9.3. Управление приложением — объект DoCmd
Комментарий
Открывает отчет.
Пример
'Открыть отчет
DoCmd.OpenReport "Сводные итоги за год"
Ореп31оге«1Ртсес1иге(ИмиПроцедурь^ Режим,
РежимДанных) * . ________
Параметр Назначение
ИмяПроцедуры Имя открываемой сохраненной процедуры
Режим Константа, определяющая режим открытия процедуры
РежимДанных Константа, определяющая режим доступа к данным
Комментарий
Открывает сохраненную процедуру.
Пример
'Открыть процедуру "MySPl" в режиме
'"только для чтения"
DoCmd.OpenStoredProcedure "MySPl",
acViewNormal, acReadOnly
9.3. Управление приложением — объект DoCmd 691
ОрепТаЫе/ИмяТаблицы, Режим, РежимДанных)
Параметр Назначение
ИмяТаблицы Имя открываемой таблицы
Режим Константа, определяющая режим открытия таб- лицы
РежимДанных Константа, определяющая режим доступа к данным
Комментарий
Открывает таблицу.
Пример
'Открыть таблицу
DoCmd.OpenTable "MyTablel"
ОрепМек(ИмяПр-адстзаления, Режим, РежимДанных)
Параметр Назначение ।
ИмяПредставления Имя открываемого представления
Режим Константа, определяющая режим открытия представления
РежимДанных Константа, определяющая режим доступа к данным
Комментарий
Открывает представление (виртуальную таблицу).
692
9.3. Управление приложением — объект DoCmd
Пример
'Открыть представление "MyViewl"
'в режиме "только для чтения"
DoCmd.OpenView "MyViewl", acViewNormal,
acReadOnly
СШриГГо(ТилОбъекта, ИйяОбъекта, Форматвывода,
ИмяФайла, Автозагрузка, ФайлШаблона)
Параметр Назначение
ТипОбъекта Константа, определяющая тип объекта, содер- жащего данные
ИмяОбъекта Имя объекта, содержащего данные, которые подлежат выводу
ФорматВывода Константа, определяющая формат вывода дан- ных
ИмяФайла Имя файла, в который выводятся данные
Автозагрузка Разрешает (True) автоматический запуск соот- ветствующего приложения с загрузкой файла, в который выведены данные
Файл Шаблона Имя файла шаблона
Комментарий
Выводит данные в файл заданного формата.
• Возможные форматы вывода определяются константа-
ми: acFormatActiveXServer, acFormatHTML, acFormatllS,
acFormatRTF, acFormatTXT и acFormatXLS.
9.3. Управление приложением — объект DoCmd
693
Пример
'Вывести таблицу "MyTablel" в файл формата HTML
DoCmd.OutputTo acOutputTable, "MyTablel",
acFormatHTML, "C:\MyTablel.htm"
PrintOutfPacneyaTatb, От, Да, Разрешение,
ЧислоКопии РазабратьПоКапням)
Параметр Назначение
Распечатать Константа, задающая диапазон печати
От Номер начальной страницы
До Номер конечной страницы
Разрешение Константа, определяющая разрешение (качество печати)
ЧислоКопий Число копий
РазобратьПоКопиям (Для случая печати нескольких копий) Значение True соответствует печати копий целыми документами. False соответствует печати копии постранично
Комментарий
Выводит на печать активный объект.
Пример
'Открыть таблицу "MyTablel" и напечатать
'страницы 1-5
DoCmd.OpenTable "MyTablel"
DoCmd.Printout acPages, 1, 5
694 9.3. Управление приложением — объект DoCmd
Quit (Сохранение) » «Ма: г:-л
Параметр Назначение
Сохранение Константа, определяющая поведение приложения в отношении несохраненных изменении
Комментарий
Завершает выполнение программы и закрывает окно при-
ложения.
Пример
'Завершить с запросом на сохранение
DoCmd.Quit acQuitPrompt
Непате(НсааоИмя, ТипОбъекга, СтароеИмя)
Параметр Назначение
НовоеИмя Имя, которое требуется присвоить объекту
ТипОбъекта Константа, определяющая тип объекта
СтароеИмя Имя объекта
Комментарий
Переименовывает объект.
Пример
'Переименовать таблицу MyTablel в NewTable
DoCmd.Rename "NewTable", acTable, "MyTablel"
9.3. Управление приложением — объект DoCmd 695
Яециегу(ИмяЭлемен та)
Параметр Назначение
ИмяЭлемента Имя элемента управления
Комментарий
Обновляет данные, отображаемые указанным элементом
управления.
Пример
'Открыть форму MyForml
DoCmd.OpenForm "MyForml"
'Обновить поле "Price"
DoCmd.Requery "Price"
Restore
Комментарий
Восстанавливает исходные размеры окна объекта.
Пример
'Открыть форму MyForml
DoCmd.OpenForm "MyForml"
'Развернуть окно формы на весь экран
DoCmd.Maximi ze
'Восстановить исходные размеры окна
DoCmd.Restore
696
9.4. Экранная форма — объект Form
Save (Тип Объекта, ИмяОбъекта)
Параметр Назначение
ТипОбъекта Константа, определяющая тип сохраняемого объекта
ИмяОбъекта Имя объекта, подлежащего сохранению
Комментарий
Сохраняет указанный объект в базе данных.
Пример
'Сохранить измененную форму
DoCmd.Save acForm, "MyForml"
ShowAIIRecords
Комментарий
Отменяет действие всех ранее установленных фильтров.
Пример
'Показывать все записи
DoCmd.ShowAIIRecords
9.4. Экранная форма — объект Form
Экранные формы представлены в VBA объектами типа Form.
Для объекта Form автоматически генерируется целый ряд со-
бытий.
9.4. Экранная форма — объект Form
697
9.4.1. События
Событие Описание
Activate Объект стал активным
AfterBegin- Transaction Происходит после того, как началась транзакция
AfterCommit- Transaction Происходит после того, как завершились измене- ния в результате транзакции
AfterDel- Confirm Происходит после того, как пользователь под- твердил в диалоге удаление объекта
AfterFinal- Render Происходит после того, как завершилось отобра - жение сводной таблицы
AfterInsert Происходит после вставки записей
AfterLayout Происходит после того, как все элементы свод- ной таблицы расположены, но еще не выведены
AfterRender Происходит после того, как выведена диаграмма
AfterUpdate Происходит после обновления измененных записей
ApplyFilter Происходит после включения или выключения фильтра
BeforeBegin- Transaction Происходит перед тем, как начинается транзакция
BeforeCom- mitTransacti- on Происходит перед тем, как завершились измене- ния в результате транзакции
BeforeDei- Confirm Происходит перед появлением диалога, запраши- вающего у пользователя подтверждение на уда - ление объекта
Beforeinsert Происходит при вводе пользователем первого символа новой записи, но до фактического со - здания и вставки записи
698 9.4. Экранная форма — объект Form
Событие Описание
BeforeQuery Происходит при запросе сводной таблицей ис- точника данных
BeforeRender Происходит перед отображением объекта в свод- ной таблице
BeforeScreen - Tip Происходит перед отображением подсказки для элемента сводной таблицы
BeforUpdate Происходит перед обновлением измененных за- писей
BeginBatch- Edit Происходит при первом изменении данных в форме, поддерживающей пакетные обновления
Click На объекте выполнен щелчок
Close Происходит при закрытии формы
Comma nd Be- foreExecute Происходит перед выполнением команды
Command - Checked Происходит, когда команда проверена
Command- Enabled Происходит, когда команда разрешена
Command- Execute Происходит, когда команда выполнена
Current Запись получила фокус и стала текущей
DataChange Происходит, когда изменяются свойства или вы- полняются методы сводной таблицы
DataSet- Change Происходит, когда изменяется набор данных сводной таблицы
DbICIick На объекте выполнен двойной щелчок
Deactivate Объект перестал быть активным
Delete При удалении объекта - после нажатия клавиши [Del], но до фактического удаления
9.4. Экранная форма — объект Form 699
Событие Описание
Dirty Содержимое формы изменено
Error Произошла ошибка выполнения Access (не отно- сится к ошибкам выполнения VBA)
Filter Открыто одно из окон, связанных с фильтрацией
Got Focus Объект получил фокус
KeyDown Нажата произвольная клавиша
KeyPress Нажата и отпущена одна из ASCII-клавиш
Key Up Отпущена ранее нажатая произвольная клавиша
Load Происходит при загрузке формы
LostFocus Объект потерял фокус
MouseDown Нажата одна из кнопок мыши (указатель нахо- дится над объектом)
MouseMove Указатель мыши переместился над объектом
MouseUp Отпущена ранее нажатая кнопка мыши (указатель находится над объектом)
MouseWheel Прокручено колесико (манипулятор прокрутки) мыши
OnConnect Сводная таблица подключилась к источнику данных
OnDisconnect Сводная таблица отключилась от источника данных
Open Происходит после открытия формы (но до выво - да на экран первой записи)
PivotTable- Change Сводная таблица изменилась
Query Сводная таблица нуждается в обновлении
Record Exit Происходит перед тем, как пользователь покида- ет текущую запись
(gOlPfeWliW
700
9.4. Экранная форма — объект Form
Событие Описание
Resize Размеры объекта изменились
Rollback- Transaction Происходит перед отменой пакетной транзакции
Selection- Change Пользователь выделил другой объект в сводной таблице
Timer Происходит регулярно через интервал времени, заданный значением свойства формы Timerinter- val
Undo Отмена изменений в комбинированном поле, форме или текстовом поле
Undo Batch - Edit Отмена изменений с помощью команды Undo АП Records |
Unload Происходит при выгрузке формы из памяти
ViewChange Перерисовка сводной таблицы
9.4.2. Свойства
ActiveQontrol
Возвращает объект, обладающий в данный момент фоку-
сом клавиатуры.
Пример
Dim MyFrm As Form
Dim MyCtrl As Control
DoCmd.OpenForm "MyForml"
Set MyFrm = Forms!MyForml
Set MyCtrl = MyFrm.ActiveControl
9.4. Экранная форма — объект Form
701
AlluwA JititfMis
Разрешает (True) или запрещает (False) добавление запи-
сей пользователем.
Пример
DoCmd.OpenForm "MyForml"
Set MyFrm = Forms!MyForml
MyFrm.AllowAdditions = True
Alla wOe-ltf tiuns
Разрешает (True) или запрещает (False) удаление записей
пользователем.
Пример
DoCmd.OpenForm "MyForml"
Set MyFrm = Forms!MyForml
MyFrm.AllowDeletions = False
AllowEiiits
Разрешает (True) модификацию записей пользователем.
Пример
DoCmd.OpenForm "MyForml"
Set MyFrm = FormsIMyForml
MyFrm.AllowEdits = True
702
9.4. Экранная форма — объект Form
AlloufFiltet^
Разрешает (True) применение фильтров.
Пример
DoCmd.OpenForm "MyForml"
Set MyFrm = Forms!MyForml
MyFrm.AllowFilters = False
Captiun
Определяет текст титульной строки формы.
Пример
DoCmd.OpenForm "MyForml", acDesign
Set MyFrm = Forms!MyForml
MyFrm.Caption = "Все записи"
HoseButton
Определяет наличие кнопки закрытия окна формы.
Пример
DoCmd.OpenForm "MyForml", acDesign
Set MyFrm = Forms!MyForml
MyFrm.CloseButton = False
9.4. Экранная форма — объект Form
703
ControlBox
Определяет наличие кнопки оконного меню в титульной
строке окна формы.
Пример
DoCmd.OpenForm "MyForml", acDesign
Set MyFrm = Forms!MyForml
MyFrm.ControlBox = False
Controls '
Возвращает одноименную коллекцию, представляющую
все элементы управления, размещенные на форме.
Пример
DoCmd.OpenForm "MyForml", acNormal
Set MyFrm = Forms!MyForml
'Загрузить значение в поле Price
MyFrm.Controls("Price").Value = 19
CurrentBeaard .ч. •
Возвращает номер текущей записи.
Пример
DoCmd.OpenForm "MyForml", acNormal
Set MyFrm = Forms!MyForml
MsgBox "Текущая запись: " & MyFrm.CurrentRecord
704
9.4. Экранная форма — объект Form
Cyclo
Определяет поведение фокуса при нажатии клавиши [Tab]
в ситуации, когда фокус находится на последнем поле по-
следней записи.
Пример
DoCmd.OpenForm "MyForml", acNormal
Set MyFrm = Forms!MyForml
'После последнего поля — на первое поле
'той же записи
MyFrm.Cycle = 1
Dirty
Сигнализирует о том, что запись содержит (True) несохра-
ненные изменения.
Пример
DoCmd.OpenForm "MyForml", acNormal
Set MyFrm - Forms!MyForml
If MyFrm.Dirty Then
MsgBox "Запись изменена. Сохранить?", vbYesNo
End If
I Htc r
Ограничивает (фильтрует) подмножество доступных запи-
сей с помощью SQL-предложения WHERE без ключевого
слова WHERE.
9.4. Экранная форма — объект Form
705
Пример
DoCmd.OpenForm "MyForml", acNormal
Set MyFrm = Forms!MyForml
MyFrm.Filter = "Price > 50"
MyFrm.FilterOn = True
Filt&rO,!
Включает (True) или выключает (False) фильтр, установлен-
ный значением свойства Filter.
Пример
DoCmd.OpenForm "MyForml", acNormal
Set MyFrm = Forms!MyForml
MyFrm.Filter = "Price > 50"
MyFrm.FilterOn = True
HelpCeiitextU}
Определяет контекстный идентификатор раздела справки.
Пример
DoCmd.OpenForm "MyForml", acNormal
Set MyFrm = Forms!MyForml
MyFrm.HelpContextID = 5002
MyFrm.HelpFile = "MyHelpl.hip"
23 1855
706
9.4. Экранная форма — объект Form
HelpFile
Определяет имя файла справки.
Пример
DoCmd.OpenForm "MyForml”, acNormal
Set MyFrm = Forms!MyForml
MyFrm.HelpContextID = 5002
MyFrm.HelpFile = "MyHelpl.hip"
MaxRecButton
Определяет наличие в окне формы кнопки последней за-
писи.
Пример
DoCmd.OpenForm "MyForml", acDesign
Set MyFrm = Forms!MyForml
MyFrm.MaxRecButton = False
MinMaxButtons
Определяет наличие в окне формы кнопок свертывания и
развертывания окна.
Пример
DoCmd.OpenForm "MyForml", acDesign
Set MyFrm = Forms!MyForml
MyFrm.MinMaxButtons = False
9.4. Экранная форма — объект Form
707
Mijdal
True, если форма должна быть открыта в режиме модаль-
ного окна.
Пример
DoCmd.OpenForm "MyForml", acNormal
Set MyFrm = Forms!MyForml
MyFrm.Modal = True
Name
Имя формы.
Пример
DoCmd.OpenForm "MyForml", acNormal
Set MyFrm = Forms!MyForml
MsgBox "Имя текущей формы: " & MyFrm.Name
NavigationButtons
Определяет наличие в окне формы кнопок перехода и поля
номера записи.
Пример
DoCmd.OpenForm "MyForml", acDesign
Set MyFrm = Forms!MyForml
MyFrm.NavigationButtons = False
708
9.4. Экранная форма — объект Form
OrderBy
Имя поля, по значению которого должны сортироваться
записи.
Пример
DoCmd.OpenForm "MyForml", acNormal
Set MyFrm = Forms!MyForml
MyFrm.OrderBy = "Price"
MyFrm.OrderByOn = True
OrderByOn
Разрешает (True) или запрещает (False) сортировку запи-
сей.
Пример
DoCmd.OpenForm "MyForml", acNormal
Set MyFrm = Forms!MyForml
MyFrm.OrderBy = "Price"
MyFrm.OrderByOn = True
RecwdLecks
Определяет способ блокировки записей для многопользо-
вательского режима.
Пример
DoCmd.OpenForm "MyForml", acNormal
Set MyFrm = Forms!MyForml
9.4. Экранная форма — объект Form
709
’При внесении изменений в запись
'блокировать страницу
MyFrm.RecordLocks = 2
RecordSe,:
Определяет ADO- или DAO-набор записей для формы (таб-
лица, SQL-выражение, запрос).
Пример
Sub CheckRSType()
Dim rs as Object
Set rs=Forms(0).Recordset
If TypeOf rs Is DAO.Recordset Then
MsgBox "DAO набор записей"
Elself TypeOf rs is ADODB.Recordset Then
MsgBox "ADO набор записей"
End If
End Sub
RecordSource
Определяет источник записей для формы (таблица, SQL-
выражение, запрос).
Пример
DoCmd.OpenForm "MyForml", acNormal
Set MyFrm = Forms!MyForml
MyFrm.RecordSource = "MyForml"
710
9.4. Экранная форма — объект Form
ScrvurFilter
Определяет подмножество отфильтрованных записей для
серверного фильтра по форме.
Пример
'Отфильтровать записи на сервере в форме
'по значению 'Россия' поля Country
Forms(0).ServerFilter = "Country = 'Россия'"
ServarFitturByF'jrm
Определяет открытие формы в виде окна серверного фильт-
ра по форме.
Пример
'Разрешить применение серверного фильтра
Forms(0).ServerFilterByForm = True
Tlmerlntsrvai
Определяет интервал (в миллисекундах) между автомати-
чески генерируемыми для формы событиями Timer.
Пример
DoCmd.OpenForm "MyForml", acNormal
Set MyFrm = Forms!MyForml
MyFrm.TimerInterval = 100
9.4. Экранная форма — объект Form
711
Visible
Делает форму видимой (True) или скрытой (False).
Пример
DoCmd.OpenForm "MyForml", acNormal
Set MyFrm = Forms!MyForml
'Скрыть форму
MyFrm.Visible = False
9.4.3. Методы
Kienle
Комментарий
Обновляет все вычисляемые поля формы.
Пример
MyFrm.Recalc
Refresh
Комментарий
Обновляет данные в источнике записей, связанном с фор-
мой в соответствии с текущим состоянием формы.
Пример
MyFrm.Refresh
712
9.4. Экранная форма — объект Form
Repaint
Комментарий
Завершает все отложенные операции по обновлению эк-
рана для формы.
Пример
MyFrm.Repaint
Requery
Комментарий
Обновляет данные формы посредством повторного за-
проса к источнику данных.
Пример
MyFrm.Requery
Undti
Комментарий
Восстанавливает состояние формы, которое она имела до
внесения последних изменений.
Пример
MyFrm.Undo
9.5. Элемент управления — Control
713
9.5. Элемент управления — Control
Элементы управления (как стандартные, так и ActiveX-эле-
менты) представлены объектом Control.
9.5.1. Свойства
Column
Используется для ссылки на столбец в списке или поле со
списком.
Пример
Dim MyCtrl As Control
Set MyCtrl = MyFrm.Controls("PriceList")
'Сообщить цену и невидимый номер
MsgBox MyCtrl-Column(0) & ", " & MyCtrl.
Column(1)
4emDat~
Возвращает значение, содержащееся в присоединенном
столбце указанной строки списка или поля со списком.
Пример
'Показать весь список значений
'в присоединенном столбце
For I = 0 То MyCtrl.ListCount - 1
NrStr = NrStr & MyCtrl.ItemData(I) S vbCr
Next
MsgBox NrStr
714
9.5. Элемент управления — Control
Ol'JV.ltua
Определяет исходное (неизменное) значение присоеди-
ненного элемента управления.
Пример
MsgBox MyCtrl.OldValue
9.5.2. Методы
DropDpwn
Комментарий
Раскрывает список в указанном поле со списком.
• Использование метода допустимо только в отношении
поля со списком, обладающим фокусом.
Пример
'Раскрыть список
With MyCtrl
.SetFocus
.DropDown
End With
fle-juery
Комментарий
Обновляет содержимое элемента управления с помощью
повторного запроса к источнику данных.
9.6. Отчеты — объект Report 715
Пример
MyCtrl.Requery
SetFacus
Комментарий
Передает элементу фокус клавиатуры.
Пример
MyCtrl.SetFocus
Undo
Комментарий
Восстанавливает состояние элемента, которое он имел до
внесения последних изменений.
Пример
MyCtrl.Undo
9.6. Отчеты — объект Report
Отчеты Microsoft Access представляются объектами типа Re-
port.
716
9.6. Отчеты — объект Report
9.6.1. События
Событие Описание
Activate Отчет стал активным
Close Закрытие отчета
Deactivate Отчет перестал быть активным
Error Произошла ошибка выполнения Access (не отно- сится к ошибкам выполнения VBA)
NoData Возникает после форматирования отчета для пе- чати в случае, когда отчет не содержит данных
Open Происходит перед открытием отчета
Page Происходит после форматирования страницы от- чета для вывода на печать, но до самого вывода
9.6.2. Свойства
CurrcntHrramt
Содержит номер текущей записи.
Пример
DoCmd.OpenReport "Итоги за год", acViewPreview
Set MyRpt = Reports("Итоги за год")
MsgBox "Номер текущей записи: " & MyRpt.
CurrentRecord
Fitter
Ограничивает (фильтрует) подмножество доступных запи-
сей с помощью SQL-предложения WHERE без ключевого
слова WHERE.
(gOlPfeWliW
9.6. Отчеты — объект Report
717
Пример
DoCmd.OpenReport "Итоги за год", acViewPreview
Set MyRpt = Reports("Итоги за год")
MyRpt.Filter = "Price > 10000"
MyRpt.FilterOn = True
FilterOn
Включает (True) или выключает (False) фильтр, установ-
ленный значением свойства Filter.
Пример
DoCmd.OpenReport "Итоги за год", acViewPreview
Set MyRpt = Reports("Итоги за год")
MyRpt.Filter = "Price 10000”
MyRpt.FilterOn = True
HasOate
Возвращает -1, если отчет содержит данные (его источник
данных не пуст); 0, если отчет не содержит данных (его ис-
точник данных пуст, и 1, если отчет не связан с источником
данных.
Пример
DoCmd.OpenReport "Итоги за год", acViewPreview
Set MyRpt = Reports("Итоги за год")
If MyRpt.HasData = 0 Then
MsgBox "Отчет не содержит данных!"
End If
718
9.6. Отчеты — объект Report
HelpContextID
Определяет контекстн ый идентификатор раздела справки.
Пример
DoCmd.OpenReport "Итоги за год", acViewPreview
Set MyRpt = Reports("Итоги за год")
MyRpt.HelpContextID = 8512
MyRpt.HelpFile = "MyHelpl.hip"
Имя файла справки.
Пример
DoCmd.OpenReport "Итоги за год", acViewPreview
Set MyRpt = Reports("Итоги за год")
MyRpt.HelpContextID = 8512
MyRpt.HelpFile = "MyHelpl.hip"
Name
Имя отчета.
Пример
MsgBox MyRpt.Name
OrderBy
И Имя поля, по значению которого должны быть отсортиро-
ваны записи.
9.6. Отчеты — объект Report
719
Пример
DoCmd.OpenReport "Итоги за год", acViewPreview
Set MyRpt = Reports("Итоги за год")
MyRpt.OrderBy = "Price"
MyRpt.OrderByOn = True
OrderByOn
Включает (True) или выключает (False) сортировку запи-
сей.
Пример
DoCmd.OpenReport "Итоги за год", acViewPreview
Set MyRpt = Reports("Итоги за год")
MyRpt.OrderBy = "Price"
MyRpt.OrderByOn = True
PageFootcr
Определяет режим печати нижнего колонтитула для стра-
ниц отчета.
Пример
DoCmd.OpenReport "Итоги за год", acViewPreview
Set MyRpt = Reports("Итоги за год")
'Печатать нижний колонтитул на всех
'страницах отчета
MyRpt.PageFooter = О
720
9.7. Экран — объект Screen
Pag^Header
Определяет режим печати верхнего колонтитула для стра-
ниц отчета.
Пример
DoCmd.OpenReport "Итоги за год", acViewPreview
Set MyRpt = Reports("Итоги за год")
'Печатать верхний колонтитул
'на всех страницах кроме страницы с заголовком
MyRpt.PageHeader = 1
Rec&rdLi'cks
Определяет, блокируются ли записи в базовой таблице
или запросе при печати или просмотре отчета.
Пример
DoCmd.OpenReport "Итоги за год", acViewPreview
Set MyRpt = Reports("Итоги за год")
MyRpt.RecordLocks = 1
9.7. Экран — объект Screen
9.7.1. Свойства
ActiveDataAccessPaga
Значением свойства является активная страница доступа
к данным, имеющая фокус во время выполнения.
9.7. Экран — объект Screen
721
Пример
Dim pgCurrentPage As DataAccessPage
Set pgCurrentPage = Screen.ActiveDataAccessPage
MsgBox "Текущая страница доступа к данным " _
& pgCurrentPage.Name
ActiveDatnsti&at - a-..,.,. .. ?v-"
Значением свойства является активный объект в режиме
таблицы, имеющий фокус во время выполнения.
Пример
'Открыть таблицу
DoCmd.OpenTable "MyTablel"
'Сообщить имя активной таблицы
MsgBox Screen.ActiveDatasheet-Name
ActiveForm_______1 ' t;- '
Возвращает текущую форму (форму, обладающую фоку-
сом).
Пример
'Открыть форму
DoCmd.OpenForm "MyForml"
'Сообщить имя активной формы
MsgBox Screen.ActiveForm.Name
24 1855
722
9.8. База данных — объект CurrentData
ActiveReport
Возвращает текущий отчет.
Пример
'Открыть отчет
DoCmd.OpenReport "MyRepl"
'Сообщить имя активного отчета
MsgBox Screen.ActiveReport.Name
MausePaintar
Определяет вид указателя мыши.
Пример
'Изменить вид указателя на "песочные
'часы", затем вернуть стандартный вид
Screen.MousePointer = 11
Screen.MousePointer = О
9.8. База данных — объект CurrentData
Объект CurrentData включает коллекции всех таблиц, запро-
сов, представлений, сохраненных процедур и схем данных ак-
тивной базы данных.
9.8.1. Свойства
AttDaiattaseniagrams
Значением свойства является коллекция схем данных ак-
тивной базы данных.
(gOlPfeWliW
9.8. База данных — объект CurrentData
723
Пример
Sub AllDatabaseDiagrams()
Dim obj As Accessobject, dbs As Object
Set dbs = Application.CurrentData
' Поиски открытого объекта
' в коллекции схем данных.
For Each obj In dbs.AllDatabaseDiagrams
If obj.IsLoaded = TRUE then
' Печать имени схемы.
Debug.Print obj.Name
End If
Next obj
End Sub
AHQbkrt&s
Значением свойства является коллекция запросов актив-
ной базы данных.
Пример
Sub AllQueries()
Dim obj As Accessobject, dbs As Object
Set dbs = Application.CurrentData
' Поиски открытого объекта
' в коллекции запросов.
For Each obj In dbs.AllQueries
If obj.IsLoaded = TRUE then
' Печать имени запроса.
Debug.Print obj.Name
End If
Next obj
End Sub
724
9.8. База данных — объект CurrentData
Aii8toi&dPr0ceclures
Значением свойства является коллекция сохраненных про-
цедур активной базы данных.
Пример
Sub AllStoredProcedures()
Dim obj As Accessobject, dbs As Object
Set dbs = Application.CurrentData
' Поиски открытого объекта
' в коллекции сохраненных процедур.
For Each obj In dbs.AllStoredProcedures
If obj.IsLoaded = TRUE then
' Печать имени сохраненной
' процедуры.
Debug.Print obj.Name
End If
Next obj
End Sub
AliTables
Значением свойства является коллекция таблиц активной
базы данных.
Пример
Sub AllTables()
Dim obj As Accessobject, dbs As Object
Set dbs = Application.CurrentData
' Поиски открытого объекта
' в коллекции таблиц.
For Each obj In dbs.AllTables
If obj.IsLoaded = TRUE then
9.9. Проект — объект Currentproject
725
' Печать имени таблицы.
Debug.Print obj.Name
End If
Next obj
End Sub
AlfVh.ws
Значением свойства является коллекция представлений
активной базы данных.
Пример
Sub AllViews()
Dim obj As Accessobject, dbs As Object
Set dbs = Application.CurrentData
' Поиски открытого объекта
' в коллекции представлений.
For Each obj In dbs.AllViews
If obj.IsLoaded = TRUE then
' Печать имени представления.
Debug.Print obj.Name
End If
Next obj
End Sub
9.9. Проект — объект Currentproject
Объект CurrentProject включает коллекции всех форм, отче-
тов, макросов, модулей и страниц доступа к данным активной
базы данных.
(gOlPfeWliW
726
9.9. Проект — объект CurrentProject
9.9.1. Свойства
AIIDataAccessPages
Значением свойства является коллекция страниц доступа
к данным активной базы данных.
Пример
Sub AllDataAccessPagesО
Dim obj As Accessobject, dbs As Object
Set dbs - Application.CurrentData
' Поиски открытого объекта
1 в коллекции страниц доступа к данным.
For Each obj In dbs.AllDataAccessPages
If obj.IsLoaded = TRUE then
' Печать имени страницы доступа
' к данным.
Debug.Print obj.Name
End If
Next obj
End Sub
AIIFonns
Значением свойства является коллекция форм активной
базы данных.
Пример
Sub AllForms()
Dim obj As Accessobject, dbs As Object
Set dbs = Application.CurrentData
9.9. Проект — объект Currentproject 727
' Поиски открытого объекта
' в коллекции форм.
For Each obj In dbs.AllForms
If obj.IsLoaded = TRUE then
' Печать имени формы.
Debug.Print obj.Name
End If
Next obj
End Sub
AttMacras
Значением свойства является коллекция макросов актив-
ной базы данных.
Пример
Sub AllMacros()
Dim obj As Accessobject, dbs As Object
Set dbs = Application.CurrentData
' Поиски открытого объекта
' в коллекции макросов.
For Each obj In dbs.AllMacros
If obj.IsLoaded = TRUE then
' Печать имени макроса.
Debug.Print obj.Name
End If
Next obj
End Sub
AIIMadules
Значением свойства является коллекция модулей актив-
ной базы данных.
728 9.9. Проект — объект Currentproject
Пример
Sub AllModules()
Dim obj As Accessobject, dbs As Object
Set dbs = Application.CurrentData
' Поиски открытого объекта
' в коллекции модулей.
For Each obj In dbs.AllModules
If obj.IsLoaded = TRUE then
' Печать имени модуля.
Debug.Print obj.Name
End If
Next obj
End Sub
MIR
Значением свойства является коллекция отчетов активной
базы данных.
Пример
Sub AllReports()
Dim obj As Accessobject, dbs As Object
Set dbs = Application.CurrentData
' Поиски открытого объекта
' в коллекции отчетов.
For Each obj In dbs.AllReports
If obj.IsLoaded = TRUE then
' Печать имени отчета.
Debug.Print obj.Name
End If
Next obj
End Sub
9.9. Проект — объект CurrentProject
729
9.9.2. Методы
Closeconnection
Комментарий
Разрывает соединение с существующим проектом или ба-
зой данных Access.
Пример
Dim objCurrent As Object
Set objCurrent = Application.CurrentProject
obj Current.CloseConnection
Оиг:пСипп^1Иоп(СтрокаПопключеги1 Идентификатор.
. Пароль)_____
Параметр Назначение
Строка- Подключения Строка параметров подключения проекта к внешней базе данных.
Идентификатор Имя файла проекта.
Пароль Имя файла проекта.
Комментарий
Устанавливает соединение с существующим проектом или
базой данных Access.
Пример
Dim objCurrent As Object
Set objCurrent = Application.CurrentProject
objCurrent.OpenConnection _
(,"C:\MyProj.adp","UserPsw")
W Объекты доступа
к данным (DAO)
10.1. DAO: что это такое?
DAO (Data Access Objects) — объекты доступа к данным игра-
ют роль соединительного звена между VBA и базами данных.
Посредством свойств и методов этих объектов Visual Basic-
программа способна манипулировать базами данных практи-
чески любым мыслимым образом.
10.2. Обзор DAO
731
Механизм DAO-объектов поддерживает две среды работы с
базами данных, называемые также «рабочими областями»:
Рабочая область Microsoft Jet (Jet Engine) обеспечивает
доступ к данным в базах данных Microsoft Jet, базах дан-
ных ODBC, подключенных к ядру Microsoft Jet, а также ис-
точникам данных устанавливаемых драйверов ISAM других
форматов, таких как DBase, Paradox или Lotus 1 -2-3.
Рабочая область ODBCDirect обеспечивает доступ к сер-
верам баз данных по протоколу ODBC без необходимости
загрузки ядра базы данных Microsoft Jet.
10.2. Обзор DAO
Рабочую область Microsoft Jet (Jet Engine) используют при от-
крытии базы данных Microsoft Jet (файла .mdb) или других баз
данных ISAM, выполняющихся на настольных системах, а так-
же в ситуациях, когда требуются уникальные характеристики
Microsoft Jet, такие как возможность объединения данных из
баз данных разных форматов.
Рабочая область ODBCDirect обеспечивает альтернативные
возможности работы в ситуациях, когда требуется выполнять
запросы или сохраненные процедуры на сервере, таком как
Microsoft SQLServer, или если приложению-клиенту требуют-
ся специфические возможности ODBC, как, например, пакет-
ное обновление или выполнение асинхронных запросов.
732
10.2. Обзор DAO
Обзор. Объектная модель рабочей области Jet Engine
| DBEngine^
—| Workspaces (Workspase)
Databases (Database)
-j Groups (Group)
—j Containers (Container)
Users (User)
Documents (Document)
—| QueryPefs (QueryDef)
—| Fields (Field)
—| Parameters (Parameter)
—| RecordSets (RecordSet)
] I UsefS (User)
i—| Groups (GroupT
Fields (Field)
Relations (Relation)
I—I Fields (Field)
-[ TableDefs (TableDef)
—| Fields (Field)
—i *n<^ex
I—I Fields (Field)
10.2. Обзор DAO
733
Объект Назначение
DBEngine Ядро базы данных Microsoft Jet
Error Сохраняет информацию об ошибках, связанных с объектом
Workspace Сеанс ядра базы данных Microsoft Jet
Database Открытая база данных
Container Содержит информацию о встроенном типе объек - тов
Document Содержит информацию о сохраненном встроенном объекте
QueryDef Сохраненное описание запроса
Field Поле (столбец) в таблице запросе или наборе за- писей
Parameter Параметр для запроса с параметрами
Recordset Набор записей из основной таблицы или запроса
Relation Связь, определенная между полями таблиц или за- просов
TableDef Сохраненное определение таблицы
Index Определяет порядок сортировки и уникальность за - писей в таблице ,
Group Группа учетных записей пользователей
User Учетная запись пользователя
734
10.2. Обзор DAO
Обзор. Объектная модель рабочей области ODBCDirect
DBEngine
Errors (Error)
*— Workspaces (Workspase)
Connections (Connection)
QueryDefs (QueryDef)
Parameters (Parameter)
RecordSets (Recordset)
Fields (Field)
— Databases (Database)
RecordSets (Recordset)
Fields (Field)
Объект Назначение
DBEngine Ядро базы данных
Error Сохраняет информацию об ошибках, связанных с объектом
Workspace Сеанс ядра базы данных
Connection Сведения о подключении к источнику данных ODBC
QueryDef Временное определение запроса
10.3. Начало начал — объект DBEngine 735
Объект Назначение
Parameter Параметр для запроса с параметрами
Recordset Набор записей из основной таблицы или запроса
Field Поле в таблице, запросе или наборе записей
Database Открытая база данных
10.3. Начало начал — объект DBEngine
Объект DBEngine («машина данных») содержит и управляет
всеми другими объектами в иерархии объектов доступа к дан-
ным (DAO). Создание дополнительных объектов DBEngine не-
возможно, а сам объект DBEngine не является компонентом
ни одной коллекции. Его свойства и методы решают самые
общие задачи, связанные с доступом к данным.
10.3.1. Свойства
£rrois
Обеспечивает доступ к информации об ошибках доступа к
данным.
Пример
Dim DB As Database
'Установить метку перехода по ошибке
On Error GoTo MyErrorHandlerl
'И вот она, ошибка...
Set DB = OpenDatabase( _
"ИмяНесуществующей БазыДанных")
MyErrorHandlerl:
With Errors
736 10.3. Начало начал — объект DBEngine
MsgBox .Number & " - " & .Description
End With
LoginTtmeout
Определяет временной интервал ожидания (в секундах), по
истечении которого возникает ошибка при попытке под-
ключения к базе данных ODBC.
Пример
'Интервал ожидания — 10 секунд
DBEngine.LoginTimeout =10
Svstem'JB
Полное имя каталога, где содержится файл системной базы
данных.
Пример
'Сообщить имя каталога системной базы данных
MsgBox DBEngine.SystemDB
Version
Возвращает номер версии DAO.
Пример
'Сообщить номер версии DAO
MsgBox "Номер версии DAO: " & DBEngine-Version
10.3. Начало начал — объект DBEngine
737
10.3.2. Методы
BeginTrans .
Комментарий
Открывает новую транзакцию.
• Транзакции необходимо использовать в случаях, когда
ряд операций должен быть гарантированно выполнен до
конца или не выполнен совсем (например, чтобы вне-
запное отключение станции не привело к нарушению ло-
гической целостности данных на сервере).
• Транзакция открывается вызовом метода BeginTrans, по-
сле чего можно начать выполнение требуемых операций.
Все изменения, которые предполагается внести при этом
в базу данных, автоматически записываются в журнал
транзакций.
• Если весь ряд операций успешно доведен до конца, тран-
закция закрывается вызовом метода CommitTrans, при
этом состояние базы реально меняется.
• Если транзакция по тем или иным причинам не заверше-
на, то ее отменяют вызовом метода RollBack (при этом
очищается журнал транзакций и состояние базы стано-
вится таким, каким оно было до открытия транзакции).
Пример
DBEngine.BeginTrans
'Выполняются операции с данными,
'не допускающие прерывания
DBEngine.CommitTrans
'Обработка ошибок
ErrorLabel2:
738
10.3. Начало начал — объект DBEngine
MsgBox "Последняя транзакция не завершена " &
"и будет отменена."
DBEngine.RollBack
C&mmrtTra пи( dbMushQS C<che> Writes)
Параметр Назначение
dbFlashOS- CacheWrites Константа, задающая режим немедленной и бе- зусловной записи на диск всех кэшированных изменений в базе данных
Комментарий
Закрывает транзакцию.
• После вызова этого метода откат (отмена транзакции)
становится невозможным.
Пример
DBEngine.BeginTrans
'Выполняются операции с данными,
'не допускающие прерывания
DBEngine.CommitTrans
'Обработка ошибок
ErrorLabel2:
MsgBox "Последняя транзакция не завершена " &
"и будет отменена."
DBEngine.RollBack
10.3. Начало начал — объект DBEngine
739
CraateOatat>ase(UMv, Порядок, Параметры}
Параметр Назначение
Имя Имя файла создаваемой базы данных
Порядок Константа, определяющая порядок символов, ко- торый будет использоваться в операциях сравне - ния и сортировки в создаваемой базе данных
Параметры Константа или сумма констант, которая определяет один или несколько параметров
Комментарий
Создает новую базу данных.
Пример
'Создать базу данных
DBEngine.CreateDatabase "С:\TempDB",
dbLangGeneral
CreateWorkspacefMMH, Пользователь, Пароль, Тип)
Комментарий
Создает новый объект Workspace.
• Созданием объекта Workspace открывается сеанс ра-
бочей области. Каждый из объектов Workspace обеспе-
чивает только один из двух видов доступа (при этом од-
новременно могут существовать несколько объектов
Workspace с разными видами доступа).
• Вид рабочей области определяется константой, задан-
ной параметром Тип: значение dbUseJet соответствует
рабочей области ядра Microsoft Jet, значение dbllse-
ODBC — рабочей области ODBCDirect.
740
10.3. Начало начал — объект DBEngine
Параметр 1 Назначение
Имя Имя нового объекта Workspace
Пароль Пароль для нового объекта Workspace
Пользователь Определяет владельца нового объекта Workspace
Тип Константа, определяющая тип рабочей области
Пример
Dim WrkSpc As Workspace
'Создать рабочую область Jet
Set WrkSpc = _
DBEngine.CreateWorkspace("JWrk", "Admin",
"Genl", dbUseJet)
'Создать рабочую область ODBC
Set WrkSpc = _
DBEngine.CreateWorkspace("OWrk", "Admin",
"Gen2", dbUseODBC)
OpenCvnn^ction(HMa, Параметры^ ТрлькоДляЧтеняя?
. Стрика)_________. '-Л .
Параметр Назначение
Имя Имя подключения
Параметры Задает параметры подключения ,
ТолькоДляЧтения Задает (True) режим «только для чтения»
Строка Строка подключения ODBC
10.3. Начало начал — объект DBEngine
741
Комментарий
Открывает объект Connection (подключение) для источ-
ника данных ODBC.
• База данных, имя пользователя и пароль могут быть за-
даны посредством диалога.
• Параметр Строка должен содержать информацию о под-
ключении:
"ODBC;DATABASE=database;UID=user;
PWD=password;DSN=datasourcename"
Пример
'Создать рабочую область ODBC
Set WrkSpc = _
DBEngine.CreateWorkspace("WSO", "Admin",
dbUseODBC)
'Создать подключение для источника данных
ODBCStr = "ODBC;DATABASE=Publicbase;UID=sa;"
& "PWD=;DSN=Publ"
Set Con = WrkSpc.OpenConnection("Coni",
dbDriverNoPrompt,
, ODBCStr)
OpenDatabasefHMuBfl, Параметры, ТолькоДляЧтения,
Подключение)
Параметр Назначение
ИмяБД Имя существующего файла базы данных с ядром Microsoft Jet или имя источника дан - ных ODBC
Параметры Определяет режим доступа или вид пригла- шения пользователю
ТолькоДляЧтения Задает (True) режим «только для чтения» |
Подключение Строка, содержащая сведения о подключении
742 10.3. Начало начал — объект DBEngine
Комментарий
Открывает указанную базу данных в объекте Workspace и
возвращает ссылку на объект Database, представляющий
эту базу данных.
Пример
Dim DB As Database
'Открыть базу данных
Set DB = OpenDatabase("С:\Data\Nordwind.mdb")
HepairDatabasz 1м*БД
Параметр Назначение
ИмяБД Имя файла базы данных
Комментарий
Делает попытку восстановить поврежденную базу данных
Microsoft Jet (только для баз данных Microsoft Jet).
• Бызов метода допустим только в отношении закрытой
базы данных.
Пример
'Восстановить базу данных
RepairDatabase "C:\Data\Nordwind.mdb"
(gOlPfeWliW
10.3. Начало начал — объект DBEngine
743
Rollback
Комментарий
Выполняет откат по журналу транзакций (отмену транзак-
ции), см. BeginTrans.
Пример
DBEngine.BeginTrans
'Выполняются операции с данными,
'не допускающие прерывания
DBEngine.CommitTrans
'Обработка ошибок
ErrorLabel2:
MsgBox "Последняя транзакция не завершена " &
"и будет отменена."
DBEngine.RollBack
10.3.3. Пример
В данном примере демонстрируется применение механизма
транзакций. Принцип двойной бухгалтерской проводки подразу-
мевает, что одна и та же сумма должна отразиться в дебетовом
обороте одного счета и кредитовом обороте другого счета — в
этом случае баланс никогда не будет нарушен. Но что, если вы-
полнив оборот по одному счету, программа не найдет второй?
Что, если до завершения оборота по второму счету компью-
тер будет по тем или иным причинам выключен? Баланс будет
нарушен, а бухгалтерская база данных станет непригодной к
использованию. Чтобы защитить данные от подобных угроз, в
примере использована транзакция — поиск обоих счетов и
обороты по ним благодаря этому становятся одной целой и
неделимой операцией.
744
10.3. Начало начал — объект DBEngine
'Двойная проводка
Sub DoubleАс()
Const DBName = "C:\Data\Exmpll.mdb"
Dim DB As Database
Dim Counts As Recordset
Dim Booking As Recordset
Dim LsDeb As Long
Dim LsCred As Long
Dim Sum As Currency
'Открыть базу данных
Set DB = OpenDatabase(DBName)
'Открыть таблицу счетов
Set Counts = DB.OpenRecordset("CountsSaldo")
'Открыть таблицу проводок
Set Booking = DB.OpenRecordset _
("CountsBooking")
'Индекс по первичному ключу (поле COUNT)
Counts.Index = "PrimaryKey"
'Начало цикла — проход по таблице проводок
Do Until Booking.EOF
'Если проводка не выполнена, то выполнить
If Not Booking!Done Then
'Прочитать данные проводки
With Booking
LsDeb = JCountDeb
LsCred = [Countered
Sum = !Sum
End With
'Открыть транзакцию
With Counts
BeginTrans
'Найти первый счет и выполнить оборот
.Seek LsDeb
If Not .NoMatch Then
.Edit
10.4. Подключение к базе данных ODBC
745
!Saldo = !Saldo - Sum
.Update
'Найти второй счет и выполнить оборот
.Seek LsCred
If Not .NoMatch Then
.Edit
1Saldo = !Saldo + Sum
.Update
'Пометить проводку как выполненную
Booking.Edit
Booking!Done = vbYes
Booking.Update
CommitTrans 'Закрыть транзакцию
Else
'Если счет не найден, то
'отменить транзакцию
RollBack
End If
Else
CommitTrans 'Закрыть транзакцию
End If
End With
End If
'Перейти на следующую запись
'в таблице проводок
Booking.MoveNext
Loop
DB.Close 'Закрыть базу данных
End Sub
10.4. Подключение к базе данных ODBC
Объект Connection представляет подключение к базе данных
ODBC в рабочей области ODBCDirect, т. е. в рамках объекта
Workspace, созданного с параметром dbUseODBC. Прежде
чем подключение станет возможным, должно быть определе-
746
10.4. Подключение к базе данных ODBC
но имя источника данных—DSN (Data Source Name), что мож-
но сделать с помощью системных средств или специального
инструментария ODBC.
10.4.1. Свойства
Namtt
Имя подключения.
Пример
Dim Con As Connection
MsgBox "Подключение " & Con.Name & " активно."
duGryTimeaut
Определяет интервал ожидания (в секундах), после кото-
рого возникает ошибка превышения времени ожидания
при выполнении запроса к источнику данных ODBC.
Пример
Con.QueryTimeout = 10
SiillExecu;
Возвращает булево True, если асинхронный запрос еще
выполняется, и False, если выполнение запроса завершено.
Пример
'Создать подключение к базе данных
ODBCStr = "ODBC;DATABASE=Publicbase;UID=sa;"
& "PWD=;DSN=Publ"
10.4. Подключение к базе данных ODBC
747
Set Con = WrkSpc.OpenConnection("Coni",
dbDriverNoPrompt, , ODBCStr)
If Con.StillExecuting Then
MsgBox "Запрос выполняется..."
End If
’’’ra-.sac 'Ions
Возвращает булево True, если подключение поддержива-
ет транзакции, и False в противном случае.
Пример
'Создать подключение к базе данных
ODBCStr = "ODBC;DATABASE=Publicbase;UID=sa;"
& "PWD=;DSN=Publ"
Set Con = WrkSpc.OpenConnection("Coni",
dbDriverNoPrompt, , ODBCStr)
If Con.Transactions Then
MsgBox "Транзакции поддерживаются."
End If
10.4.2. Методы
CIO».!
Комментарий
Закрывает подключение.
Пример
'Создать подключение к базе данных
ODBCStr = "ODBC;DATABASE=Publicbase; UID=sa;"
& "PWD=;DSN=Publ"
748
10.4. Подключение к базе данных ODBC
Set Con = WrkSpc.OpenConnection("Coni",
dbDriverNoPrompt, , ODBCStr)
'Закрыть подключение
Con.Close
CreateQueiyOef{HMa, Ст; *.« iOi.
Параметр Назначение
Имя Имя создаваемого запроса
CrpoKaSQL Строка (SQL-выражение), определяющая запрос
Комментарий
Создает новое временное определение запроса (объект
QueryDef).
Пример
Dim Con As Connection
Dim QDTitle As QueryDef
'Создать подключение к базе данных
ODBCStr = "ODBC;DATABASE=Publicbase;UID=sa;"
& "PWD=;DSN=Publ"
Set Con = WrkSpc.OpenConnection("Coni",
dbDriverNoPrompt, , ODBCStr)
'Запустить определение запроса
Set QDTitle = Con.CreateQueryDef
("QD1", "SELECT Title FROM TitLe")
10.4. Подключение к базе данных ODBC
749
Execute Источник, Параметре!
Параметр Назначение
Источник SQL-выражение, определяющее запрос
Параметры Константа или сумма констант, определяющая ха- рактеристики целостности данных
Комментарий
Выполняет запрос на изменение или инструкцию SQL для
указанного объекта Connection.
Пример
SQLDelStr =
"DELETE * FROM Books WHERE Books.Quant 10”
Con.Execute SQLDelStr, dbRunAsync
OpenRecordabtfИсточник, Тип, Парометры, Блокировки)
Комментарий
Создает новый объект Recordset.
Параметр Назначение
Источник Имя таблицы, запроса или инструкция SQL, кото- рая возвращает записи
Тип Константа, указывающая тип открываемого объекта Recordset
Параметры Произвольная комбинация констант, задающих ха - рактеристики нового объекта Recordset
Блокировки Константа, определяющая тип блокировки объекта Recordset
750
10.4. Подключение к базе данных ODBC
Пример
Dim QDTitle As QueryDef
Dim RSJobs As Recordset
'Запустить определение запроса
Set QDTitle = Con.CreateQueryDef
("QD1", "SELECT Title FROM TitLe")
Set RSJobs = QDTitle.OpenRecordset()
10.4.3. Пример
В данном примере реализовано подключение к SQL-серверу,
результатом которого является доступ к набору записей, по-
лученному посредством запроса к таблице.
Sub ODBCConnection()
Dim WrkSpc As Workspace
Dim Con As Connection
Dim RSJobs As Recordset
Dim QDTitle As QueryDef
Dim Message As String
'Создать рабочую область
Set WrkSpc = CreateWorkspace("WSO", "admin",
"", dbUseODBC)
'Создать подключение к базе данных
Set Con = WrkSpc.OpenConnection("Coni",
dbDriverNoPrompt, ,
"ODBC;DATABASE=Pubi c s;UID= s a;PWD=;DSN=Publ")
1 Создать набор записей
Set RSJobs = Con.Openrecordset("Job")
'Прочитать и отобразить все значения
10.5. База данных — объект Database
751
'поля JobPlace
Message = ""
Do Until RSJobs.EOF
Message = Message & RSJobs!JobPlace & vbCr
RSJobs.MoveNext
Loop
MsgBox Message
'Запустить временное определение запроса...
Set QDTitle - Con.CreateQueryDef _
("QD1”, "SELECT Title FROM Title")
Set RSJobs = QDTitle.OpenRecordset()
'... и прочитать полученное
'подмножество записей
Message = ""
Do Until RSJobs.EOF
Message = Message & RSJobs!Title S vbCr
RSJobs.MoveNext
Loop
MsgBox Message
'Закрыть подключение
Con.Close
End Sub
10.5. База данных — объект Database
Объект Database представляет базу данных в формате Micro-
soft Access, доступ к которой осуществляется посредством
драйвера ядра базы данных Microsoft Jet.
10.5.1. Свойства
&№itingOr<ier w; .-.atr; a
M Возвращает значение, указывающее порядок символов, ис-
пользуемый при сравнении текстовых строк или при опреде-
лении порядка сортировки.
(gOlPfeWliW
752
10.5. База данных — объект Database
Пример
Dim DB As Database
'Открыть базу данных
Set DB = OpenDatabase("С:\Data\Exmpll.mdb")
MsgBox "Порядок сортировки: " _
& DB.CollatingOrder
Wa.nc
Полное имя файла базы данных.
Пример
Dim DB As Database
'Открыть базу данных
Set DB = OpenDatabase("С:\Data\Exmpll.mdb")
MsgBox DB.Name
Updatable
Возвращает булево True, если модификации базы данных
разрешены.
Пример
Dim DB As Database
'Открыть базу данных
Set DB - OpenDatabase("С:\Data\Exmpll.mdb")
If Not DB.Updatable Then
MsgBox "Модификации в базе данных запрещены"
End If
(gOlPfeWliW
10.5. База данных — объект Database
753
Version
Возвращает версию ядра базы данных Microsoft Jet, в ко-
торой был создан файл .mdb.
Пример
Dim DB As Database
'Открыть базу данных
Set DB = OpenDatabase("С:\Data\Exmpll.mdb")
MsgBox "База данных была создана с помощью: "
& DB.Version
10.5.2. Методы
Close «
Комментарий
Закрывает базу данных.
Пример
DB.Close
CreatoQuoryLleffllMH, CrpuK.iSQL) -
Параметр Назначение
Имя Имя создаваемого запроса
CrpoKaSQL Строка (SQL-выражение), определяющая запрос
25 1855
754
10.5. База данных — объект Database
Комментарий
Создает новое сохраненное определение запроса (объект
QueryDef).
• Если параметр Имя не указан, запрос не будет сохранен.
Пример
Dim QD As QueryDef
Dim DB As Database
'Открыть базу данных
Set DB = OpenDatabase("C:\Data\Exmpll.mdb")
'Запустить определение запроса
SQLStr = _
"SELECT [Art - Num], [ArtName] FROM Art"
Set QD = DB.CreateQueryDef("QD1", SQLStr)
CreateTabtaDef'HMK. Атрибуты, Чсточник, Подключен^
Параметр Назначение
Имя Имя нового объекта TableDef
Атрибуты Константа или сумма констант, задающая одну или несколько характеристик нового объекта TableDef
Источник Задает имя таблицы внешней базы данных, яв- ляющейся источником данных
Подключение Содержит информацию об источнике данных от- крытой базы данных, о базе данных, используе- мой в запросе к серверу, или о присоединенной таблице
10.5. База данных — объект Database
755
Комментарий
Создает новый объект TableDef.
• После создания новой таблицы ее необходимо включить
в коллекцию TableDefs с помощью метода Append.
Пример
Dim TDef As TableDef
Dim DB As Database
'Открыть базу данных
Set DB = OpenDatabase("C:\Data\Exmpll.mdb")
'Создать новую таблицу
Set TDef = DB.CreateTableDef("NewTablel")
'Создать в новой таблице два поля
With TDef
.Fields.Append .CreateField("LsDeb", dbLong)
.Fields.Append .CreateField("Sum", dbCurrency)
End With
'Включить новую таблицу в базу данных
DB.TableDefs.Append TDef
OpenFtecordse Источник, Turn, Параметры, блокировки)
Параметр Назначение
Источник Имя таблицы, запроса или инструкция SQL, кото- рая возвращает записи
Тип Константа, указывающая тип открываемого объек- та Recordset
Параметры Произвольная комбинация констант, задающих характеристики нового объекта Recordset
Блокировки Константа, определяющая тип блокировки объек- та Recordset
756
10.5. База данных — объект Database
Комментарий
Создает новый объект Recordset.
Пример
Dim RecSet As Recordset
Dim DB As Database
1 Открыть базу данных
Set DB = OpenDatabase("C:\Data\Exmpll.mdb")
'Открыть как таблицу и сообщить число записей
Set RecSet = DB.OpenRecordset("Art",
dbOpenTable)
MsgBox RecSet.Recordcount
10.5.3. Пример
Процедура, код которой приведен ниже, создает таблицу из
двух полей и включает ее в состав существующей базы дан-
ных. Затем из таблицы проводок удаляется часть записей, а
содержимое оставшихся выводится на экран.
Sub JetConnection()
Const DBName = "C:\data\Exmpll.mdb"
Dim DB As Database
Dim Booking As Recordset
Dim NewTab As TableDef
Dim SQLKill As String
Dim Message As String
'Открыть базу данных
Set DB = OpenDatabase(DBName)
10.5. База данных — объект Database 757
'Создать таблицу
Set NewTab = DB.CreateTableDef ("State")
'Создать в новой таблице два поля
With NewTab
.Fields.Append .CreateField("LsDeb", dbLong)
.Fields.Append .CreateField("Sum",
dbCurrency)
End With
'Включить новую таблицу в базу данных
DB.TableDefs-Append NewTab
'Удалить все выполненные проводки
SQLKill = "DELETE * FROM CountsBooking " &
"WHERE CountsBooking!Done=True"
DB.Execute SQLKill, dbSeeChanges _
+ dbFailOnError
'Доступ к оставшимся записям, как к таблице
Set Booking = DB.OpenRecordset _
("CountsBooking")
'Прочитать и отобразить оставшиеся записи
With Booking
.MoveFirst
Message = "Дебет" & vbTab & "Кредит" _
& vbTab & "Сумма" & vbCr
Do Until .EOF
Message = Message & !LsDeb & vbTab _
& !LsCred & vbTab & !Sum & vbCr
.MoveNext
Loop
End With
MsgBox Message
'Закрыть базу данных
DB.Close
End Sub
758
10.6. Запросы — объект QueryDef
10.6. Запросы — объект QueryDef
Объект QueryDef представляет запрос к базе данных — это
может быть Сохраненное определение запроса (для баз дан-
ных Microsoft Jet) или временное определение запроса (для
рабочей области ODBCDirect).
1 0.6.1. Свойства
DateCraated
Возвращает дату создания запроса.
Пример
Dim QD As QueryDef
Dim DB As Database
'Открыть базу данных и запрос
Set DB = OpenDatabase("С:\Data\Exmpll.mdb")
Set QD = DB.QueryDefs("QD1")
MsgBox QD.DateCreated
L&stUpdatati '
Возвращает значение даты-времени последней модифи-
кации запроса.
Пример
Dim QD As QueryDef
Dim DB As Database
'Открыть базу данных и запрос
Set DB = OpenDatabase("С:\Data\Exmpll.mdb")
Set QD = DB.QueryDefs("QD1")
MsgBox QD.LastUpdated
10.6. Запросы — объект QueryDef
759
SOL
Содержит SQL-выражение, которое определяет запрос.
Пример
Dim QD As QueryDef
Dim DB As Database
'Открыть базу данных и запрос
Set DB = OpenDatabase("С:\Data\Exmpll.mdb")
Set QD = DB.QueryDefs("QD1")
MsgBox QD.Sql
Updatable -‘‘i
Разрешает (True) или запрещает (False) модификацию за-
проса.
Пример
Dim QD As QueryDef
Dim DB As Database
'Открыть базу данных и запрос
Set DB = OpenDatabase("С:\Data\Exmpll.mdb")
Set QD = DB.QueryDefs("QD1")
If QD.Updatable Then
MsgBox "Запрос доступен для модификации"
End If
760
10.6. Запросы — объект QueryDef
10.6.2. Методы
OpanftecurcfsfctfMcruMHMK, Тил, Лараматры, Блокировки)
Параметр Назначение
Источник Имя таблицы, запроса или инструкция SQL, кото- рая возвращает записи
Тип Константа, указывающая тип открываемого объек- та Recordset
Параметры Произвольная комбинация констант, задающих характеристики нового объекта Recordset
Блокировки Константа, определяющая тип блокировки объек- та Recordset
Комментарий
Возвращает новый набор записей как результат выполне-
ния запроса к базе данных.
Пример
Dim Con As Connection
Dim QDTitle As QueryDef
Dim RSJobs As Recordset
'Запустить определение запроса
Set QDTitle = Con.CreateQueryDef
("QD1", "SELECT Title FROM Titre")
Set RSJobs = QDTitle.OpenRecordset()
10.7. Набор записей — объект Recordset
761
10.7. Набор записей — объект Recordset
Объект Recordset представляет набор записей в основной
таблице или набор записей, который получается в результате
выполнения запроса. Каждый объект Recordset состоит из
записей (строк) и полей (столбцов). Существуют объекты Re-
cordset пяти типов:
Тип набора Описание
Table Программное представление основной (физиче - ской) таблицы - только в рабочей области Mic- rosoft Jet
Dynaset Динамический набор записей - набор обновля - емых записей, полученный в результате выпол - нения запроса. В объекте Recordset этого типа могут содержаться поля из одной или несколь - ких таблиц базы данных
Snapshot Статический набор записей — статическая копия набора записей, используемая для поиска дан - ных или создания отчетов. Не допускает обнов- ления полей
Forward Статический набор записей с последовательным доступом - аналогичен статическому набору за - писей с тем лишь исключением, что в нем отсут- ствует указатель. Пользователь имеет возмож ность перемещаться по набору только вперед
Dynamic Результирующий набор записей запроса по од- ной или нескольким основным таблицам, в ко- тором допускается добавление, изменение или удаление записей. В таком объекте Recordset отображаются записи, добавляемые, удаляемые или изменяемые в основных таблицах другими пользователями
762
10.7. Набор записей — объект Recordset
10.7.1. Свойства
AbsolutePositlon
Возвращает абсолютный номер текущей записи.
Пример
'Открыть базу данных и набор записей
Set DB = OpenDatabase("С:\Data\Exmpll.mdb")
Set RecSet = DB.OpenRecordset("Title", _
dbOpenSnapshot)
MsgBox RecSet.AbsolutePosition
aoF
Возвращает булево True в ситуации, когда указатель теку-
щей записи оказывается в позиции перед первой записью
набора Recordset.
Пример
'Открыть базу данных и набор записей
Set DB = OpenDatabase("С:\Data\Exmpll.mdb")
Set RecSet = DB.OpenRecordset("Title",
dbOpenSnapshot)
'Установить указатель перед первой записью
If Not RecSet.BOF Then
RecSet-MoveFirst
RecSet.MovePrevious
End If
(gOlPfeWliW
10.7. Набор записей — объект Recordset
763
EOF
Возвращает булево True в ситуации, когда указатель теку-
щей записи оказывается в позиции после последней запи-
си набора Recordset.
Пример
'Открыть базу данных и набор записей
Set DB = OpenDatabase("С:\Data\Exmpll.mdb")
Set RecSet = DB.OpenRecordset("Title", _
dbOpenSnapshot)
'Просмотреть все записи и сообщить
'значения поля Name
RecSet.MoveFirst
Do While Not RecSet.EOF
ArtName = ArtName & RecSet.Fields _
("Name").Value & vbCr
RecSet.MoveNext
Loop
MsgBox ArtName
LockEdits
Задает или возвращает значение, определяющее режим
блокировки, который будет действовать при изменении
записей.
Пример
'Открыть базу данных и набор записей
Set DB = OpenDatabase("С:\Data\Exmpll.mdb")
Set RecSet = DB.OpenRecordset("Title",
dbOpenTable)
764
10.7. Набор записей — объект Recordset
'Режим нежесткой блокировки.
'Содержащая запись страница
'размером 2К не будет заблокирована до вызова
'метода Update.
RecSet.LockEdits = False
°ercentPosition
Задает или возвращает значение, указывающее пример-
ное положение текущей записи в объекте Recordset, из-
меряемое в процентах от общего числа записей набора.
Пример
'Открыть базу данных и набор записей
Set DB = OpenDatabase("C:\Data\Exmpll.mdb")
Set RecSet = DB.OpenRecordset("Title",
dbOpenTable)
'Поместить указатель в середину набора
RecSet.PercentPosition = 50
Rr CordCount
Возвращает число записей в наборе.
Пример
'Открыть базу данных и набор записей
Set DB = OpenDatabase("С:\Data\Exmpll.mdb")
Set RecSet = DB.OpenRecordset("Title",
dbOpenTable)
'Сообщить число записей в наборе
MsgBox RecSet.Recordcount
10.7. Набор записей — объект Recordset
765
Sort
Определяет порядок сортировки записей — строковое вы-
ражение, задающее порядок сортировки по правилам SQL-
инструкции ORDER BY без ключевых слов ORDER BY.
Пример
'Открыть базу данных и набор записей
Set DB = OpenDatabase("С:\Data\Exmpll.mdb")
Set RecSet = DB.OpenRecordset("Title", _
dbOpenSnapshot)
'Сортировать по имени и фамилии
RecSet.Sort = "Имя, Фамилия"
Transactions
Возвращает булево True, если набор поддерживает тран-
закции, и False в противном случае.
Пример
'Открыть базу данных и набор записей
Set DB - OpenDatabase("С:\Data\Exmpll.mdb")
Set RecSet = DB.OpenRecordset("Title",
dbOpenTable)
If Not RecSet.Transactions Then
MsgBox "Набор не поддерживает транзакции."
End If
UpdataMu__________________
Возвращает булево True, если набор допускает модифи-
кацию записей, и False в противном случае.
766
10.7. Набор записей — объект Recordset
Пример
1 Открыть базу данных и набор записей
Set DB = OpenDatabase("С:\Data\Exmpll.mdb")
Set RecSet = DB.OpenRecordset("Title",
dbOpenTable)
If Not RecSet.Updatable Then
MsgBox "Данные недоступны для модификации"
End If
10.7.2. Методы
ACdNevt
Комментарий
Создает новую запись в обновляемом объекте Recordset.
Пример
'Открыть базу данных и набор записей
Set DB = OpenDatabase("С:\Data\Exmpll.mdb")
Set RecSet = DB.OpenRecordset("Title",
dbOpenTable)
'Создать новую запись и заполнить ее
With RecSet
.AddNew
!Name = "Красный перец"
.Update
End With
10.7. Набор записей — объект Recordset
767
Close
Комментарий
Закрывает набор записей.
Пример
RecSet.Close
delete.
Комментарий
Удаляет текущую запись набора.
Пример
'Открыть базу данных и набор записей
Set DB = OpenDatabase("С:\Data\Exmpll.mdb")
Set RecSet = DB.OpenRecordset("Title",
dbOpenTable)
'Удалить запись 77
With RecSet
.Move 77
.Delete
End With
edit
Комментарий
Копирует текущую запись из обновляемого объекта Recor-
dset в буфер копирования для последующего изменения.
• После вызова метода Edit все изменения, внесенные в
поля текущей записи, помещаются в буфер копирова-
768
10.7. Набор записей — объект Recordset
ния. После того как все необходимые изменения будут
внесены, следует вызвать метод Update для сохранения
изменений.
Пример
'Открыть базу данных и набор записей
Set DB = OpenDatabase("С:\Data\Exmpll.mdb")
Set RecSet ~ DB.OpenRecordset("Title",
dbOpenTable)
'Изменить запись 6
With RecSet
.Move 6
.Edit
!RecState = 0
!DoneRec = True
.Update
End With
FindFirst Условие
Параметр Назначение
Условие Строка, определяющая условие поиска (аналогич - на SQL-выражению WHERE без ключевого слова WHERE)
Комментарий
Находит в объекте Recordset типа динамических и стати-
ческих наборов записей первую, удовлетворяющую задан-
ным условиям, и делает эту запись текущей.
10.7. Набор записей — объект Recordset
769
Пример
'Открыть базу данных и набор записей
Set DB = OpenDatabase("С:\Data\Exmpll.mdb")
Set RecSet = DB.OpenRecordset("Title",
dbOpenSnapshot)
With RecSet
.FindFirst "GoodsAtStocks > 100"
MsgBox IName & " " & !GoodsAtStocks
End With
Find Last Услочие
Параметр Назначение
Условие Строка, определяющая условие поиска (аналогична SQL-выражению WHERE без ключевого слова WHERE)
Комментарий
Находит в объекте Recordset типа динамических и стати-
ческих наборов записей последнюю, удовлетворяющую
заданным условиям, и делает эту запись текущей.
Пример
'Открыть базу данных и набор записей
Set DB - OpenDatabase("С:\Data\Exmpll.mdb")
Set RecSet = DB.OpenRecordset("Title",
dbOpenSnapshot)
770
10.7. Набор записей — объект Recordset
With RecSet
. FindLast "GoodsAtStocks > 100"
MsgBox IName & " " & !GoodsAtStocks
End With
FindNext Условие
Параметр Назначение
Условие Строка, определяющая условие поиска (аналогич - на SQL-выражению WHERE без ключевого слова WHERE)
Комментарий
Находит в объекте Recordset типа динамических и стати-
ческих наборов записей следующую, удовлетворяющую
заданным условиям, и делает эту запись текущей.
Пример
'Открыть базу данных и набор записей
Set DB = OpenDatabase("С:\Data\Exmpll.mdb")
Set RecSet = DB.OpenRecordset("Title",
dbOpenSnapshot)
'Показать названия всех товаров, имеющихся
'на складе в количестве, превышающем 100 штук
With RecSet
.FindFirst "GoodsAtStocks > 100"
Do Until .NoMatch
FStr = FStr & IName & " " & !GoodsAtStocks
& vbCr
.FindNext "GoodsAtStocks > 100"
Loop
End With
MsgBox Fstr
10.7. Набор записей — объект Recordset
771
FindPrevkius Услиние
Параметр Назначение
Условие Строка, определяющая условие поиска (аналогична SQL-выражению WHERE без ключевого слова WHE- RE)
Комментарий
Находит в объекте Recordset типа динамических и стати-
ческих наборов записей предыдущую, удовлетворяющую
заданным условиям, и делает эту запись текущей.
Пример
'Открыть базу данных и набор записей
Set DB = OpenDatabase("С:\Data\Exmpll.mdb")
Set RecSet = DB.OpenRecordset("Title",
dbOpenSnapshot)
'Показать названия всех товаров, имеющихся
'на складе в количестве, превышающем 100 штук
With RecSet
.FindLast "GoodsAtStocks > 100"
Do Until .NoMatch
FStr = FStr S !Name & " " & '.GoodsAtStocks
& vbCr
.FindPrevious "GoodsAtStocks > 100"
Loop
End With
MsgBox Fstr
(gOlPfeWliW
772
10.7. Набор записей — объект Recordset
иеГЯаиоГЧислоСомж)
Параметр Назначение
ЧислоСтрок Число строк из объекта Recordset, подлежащих за- грузке в массив
Комментарий
В Возвращает двумерный массив, состоящий из заданного
числа строк (записей) объекта Recordset.
• Возвращаемое методом значение должно присваивать-
ся переменной типа Variant.
• Первый индекс возвращаемого массива определяет стол-
бец (поле), а второй — номер строки (записи).
Пример
Dim DBRows As Variant
'Открыть базу данных и набор записей
Set DB = OpenDatabase("С:\Data\Exmpll.mdb")
Set RecSet = DB.OpenRecordset("Title",
dbOpenSnapshot)
'Скопировать в массив первые 100 записей
DBRows = RecSet.GetRows(100)
'Поместить данные в текущий лист рабочей книги
For I = 0 То Ubound(DBRows, 2)
For J = 0 То Ubound(DBRows, 1)
ActiveSheet.Cells (I + 1, J + 1) = DBRows(J, I)
Next
Next
(gOlPfeWliW
10.7. Набор записей — объект Recordset
773
Move Строки, Начало
Параметр Назначение
Строки Число строк, на которые требуется переместить указатель
Начало Определяет закладку, указывающую на запись, на- чиная с которой следует отсчитывать число запи - сей, на которые требуется переместить указатель (отсчет по умолчанию — с текущей записи)
Комментарий
Перемещает указатель текущей записи на заданное число
записей.
Пример
'Открыть базу данных и набор записей
Set DB = OpenDatabase("С:\Data\Exmpll.mdb")
Set RecSet = DB.OpenRecordset("Title",
dbOpenSnapshot)
'Переместить указатель на 5 записей вперед
RecSet.Move 5
MoveFIrst
Комментарий
Помещает указатель на первую запись набора.
Пример
'Открыть базу данных и набор записей
Set DB = OpenDatabase("С:\Data\Exmpll.mdb")
774 10.7. Набор записей — объект Recordset
Set RecSet = DB.OpenRecordset("Title",
dbOpenSnapshot)
'Просмотреть все записи и сообщить
'значения поля Name
RecSet.MoveFirst
Do While Not RecSet.EOF
ArtName = ArtName & RecSet.Fields("Name")
.Value & vbCr
RecSet-MoveNext
Loop
MsgBox ArtName
MoveLast
Комментарий
Помещает указатель на последнюю запись набора.
Пример
'Открыть базу данных и набор записей
Set DB = OpenDatabase("С:\Data\Exmpll.mdb")
Set RecSet = DB.OpenRecordset("Title",
dbOpenSnapshot)
'Просмотреть все записи и сообщить
'значения поля Name
RecSet.MoveLast
Do While Not RecSet.BOF
ArtName = ArtName & RecSet.Fields ("Name").
Value & vbCr
RecSet.MovePrevious
Loop
MsgBox ArtName
10.7. Набор записей — объект Recordset
775
MoveNext
Комментарий
Перемещает указатель на следующую запись набора.
Пример
'Открыть базу данных и набор записей
Set DB = OpenDatabase("С:\Data\Exmpll.mdb")
Set RecSet = DB.OpenRecordset("Title",
dbOpenSnapshot)
'Просмотреть все записи и сообщить
'значения поля Name
RecSet-MoveFirst
Do While Not RecSet.EOF
ArtName = ArtName & RecSet.Fields("Name")
.Value & vbCr
RecSet.MoveNext
Loop
MsgBox ArtName
McvePrevious
Комментарий
Перемещает указатель на предыдущую запись набора.
Пример
'Открыть базу данных и набор записей
Set DB = OpenDatabase("С:\Data\Exmpll.mdb")
Set RecSet = DB.OpenRecordset("Title", _
dbOpenSnapshot)
'Просмотреть все записи и сообщить значения
поля Name
776 10.7. Набор записей — объект Recordset
RecSet.MoveLast
Do While Not RecSet.BOF
ArtName = ArtName & RecSet.Fields("Name")
.Value & vbCr
RecSet.MovePrevious
Loop
MsgBox ArtName
UpdatefTun, Режим)
Комментарий
Сохраняет содержимое буфера копирования в обновляе-
мом объекте Recordset.
Параметр Назначение
Тип Константа, задающая тип обновления (только в ра - бочей области ODBCDirect)
Режим Значение типа Boolean, указывающее, следует ли принудительно обновлять базу данных, вне зависи - мости от изменения другим пользователем данных в базовых источниках после вызова методов Ad - dNew, Delete или Edit
Пример
'Открыть базу данных и набор записей
Set DB = OpenDatabase("С:\Data\Exmpll.mdb")
Set RecSet = DB.OpenRecordset("Title",
dbOpenTable)
'Создать новую запись и заполнить ее
With RecSet
.AddNew
IName = "Красный перец"
.Update
End With
(gOlPfeWliW
10.8. Таблицы — объект TableDef
777
10.8. Таблицы — объект TableDef
Объект TableDef (таблица) представляет сохраненное опре-
деление основной таблицы или присоединенной таблицы (то-
лько в рабочей области Microsoft Jet).
10.8.1. Свойства
UattfCrcateif
Возвращает дату создания сохраненного определения таб-
лицы.
Пример
Dim TDef As TableDef
Dim DB As Database
1 Открыть базу данных и определение таблицы
Set DB = OpenDatabase("С:\Data\Exmpll.mdb")
Set TDef = DB.TableDefs("Title")
MsgBox TDef.DateCreated
HejjrdCaunt
Возвращает число записей, содержащихся в таблице.
Пример
Dim TDef As TableDef
Dim DB As Database
'Открыть базу данных и определение таблицы
Set DB = OpenDatabase("С:\Data\Exmpll.mdb")
Set TDef = DB.TableDefs("Title")
MsgBox TDef.RecordCount
778
10.8. Таблицы — объект TableDef
10.8.2. Методы
CreateFieldfHM^Tnp, Размер)
Комментарий
Создает новое поле (объект Field).
• В качестве констант, определяющих тип поля, могут быть
использованы константы dbBiglnt, dbBinary, dbBoolean,
dbByte, dbChar, dbCurrency, dbDate, dbDecimal, dbDouble,
dbGUID, dblnteger, dbLong, dbLongBinary, dbMemo, dbSin-
gle, dbText и dbTime.
Параметр Назначение
Имя Имя нового поля (объекта Field)
Тип Константа, определяющая тип данных нового объ - екта Field
Размер Выражение, определяющее в байтах максимальный размер объекта Field, содержащего текстовые зна- чения
Пример
Dim TDef As TableDef
Dim DB As Database
'Открыть базу данных и определение таблицы
Set DB = OpenDatabase("С:\Data\Exmpll.mdb")
Set TDef = DB.TableDefs("Title")
'Создать текстовое поле длиной 25 символов
TBDef.Fields.Append TDef.CreateField("Dscr"
, dbText, 25)
10.8. Таблицы — объект TableDef
779
СгезМпОех(Ими)
Параметр Назначение
Имя Имя создаваемого индекса
Комментарий
Создает новый индекс (объект Index).
Пример
Dim TDef As TableDef
Dim DB As Database
Dim Newldx As Index
'Открыть базу данных и определение таблицы
Set DB = OpenDatabase("С:\Data\Exmpll.mdb")
Set TDef = DB.TableDefs("Title")
'Создать индекс по полю Dscr
Set Newldx = TDef.Createlndex("Dscrldx")
With Newldx
.Fields.Append .CreateField("Dscr")
End With
TDef.Indexes-Append Newldx
10.8.3. Пример
Sub CreateNewTable()
Const DBName = "C:\Data\Exmpll.mdb"
Dim DB As Database
Dim NewTab As TableDef
'Открыть базу данных
Set DB = OpenDatabase(DBName)
'Создать таблицу Persons
Set NewTab = DB.CreateTableDef("Persons")
(gOlPOMW
780
10.9. Поле данных — объект Field
’Создать поля
With NewTab
.Fields.Append .CreateField("Name", dbText, 30)
.Fields.Append .CreateField("Surname"
, dbText, 30)
.Fields-Append .CreateField("Street",
dbText, 30)
.Fields.Append .CreateField("ZIP", dbLong)
.Fields.Append .CreateField("City", dbText,
50)
.Fields.Append .CreateField("BirtDay", dbDate)
End With
'Включить новую таблицу в состав базы данных
DB.TableDefs.Append NewTab
'Закрыть базу данных
DB.Close
End Sub
10.9. Поле данных — объект Field
Объект Field (поле) представляет столбец данных одного типа,
обладающий общим набором свойств. Полями обладают объ-
екты TableDef, Recordset и QueryDef.
10.9.1. Свойства
AII'iwZvroL ^ngth
Для полей с типом данных Text или Мето разрешает (True)
или запрещает (False) полю содержать пустую строку.
Пример
Dim Fid As Field
Set Fid = TDef.Fields("Dscr")
Fld.AllowZeroLength = True
10.9. Поле данных — объект Field
781
CtefaultVatee
Определяет значение по умолчанию.
Пример
Dim Fid As Field
Set Fid = TDef.Fields("PhNum")
Fid.Defaultvalue = "000-00-00"
Имя поля.
Пример
Dim Fid As Field
Set Fid = TDef.Fields("Dscr")
Fid.Name = "Description"
Required
Определяет, что поле должно (True) содержать непустое
(не Null) значение.
Пример
Dim Fid As Field
Set Fid = TDef.Fields("Dscr")
Fid.Required = True
Приложение
Указатель терминов Visual Basic
Термин Термин в оригинале Варианты термина
«перетащить и оста- вить» (метод) Drag&Drop «тащи и бросай» (тех- нология)
выключатель ToggleButton кнопка-выключатель
графический образ Image рисунок, точечный ри- сунок
группа Frame рамка
дата _ в _число- вом_формате Date код дата-время
закрепление окон Docking парковка окон
инструкция Statement оператор
исходный текст Code программа, програм- мный код
кнопка CommandButton командная кнопка
кнопка-выключатель ToggleButton выключатель
код дата-время Date дата_В-Число- вом_формате
код Code программа, програм- мный код, исходный текст
Указатель терминов Visual Basic 783
Термин Термин в оригинале Варианты термина
коллекция Collection семейство
командная кнопка CommandButton кнопка
комбинированное поле ComboBox поле со списком
набор вкладок MultiPage набор страниц
набор страниц MultiPage набор вкладок
надпись Label этикетка
оператор Statement инструкция
панель инструментов Tool Bar линейка инструментов
панель состояния StatusBar строка состояния, па- нель статуса
панель элементов Tool Box коллекция инструмен- тов
парковка окон Docking закрепление окон
переключатель OptionButton позиция переключате- ля
позиция переключателя OptionButton переключатель
поле TextBox текстовое поле ввода
поле со списком ComboBox комбинированное поле
поле списка ListBox список
поле флажка CheckBox флажок
программа Code код, программный код, исходный текст
рамка Frame группа
784 Указатель терминов Visual Basic
Термин Термин в оригинале Варианты термина
рисунок Image графический образ, точечный рисунок
семейство Collection коллекция
список ListBox поле списка
текстовое поле ввода TextBox поле
управляющий элемент Control элемент управления, объект управления
флажок CheckBox поле флажка
форма Form экранная форма, фор- муляр
экранная форма Form форма, формуляр
элемент управления ActiveX ActiveX ActiveX-элемент, осно- ванный на технологии ActiveX управляющий элемент
элемент управления Control управляющий эле- мент, объект управле- ния
этикетка Label надпись
Windows ХР Office ХР
Word 2002 Excel 2002
Access 2002
AutoCAD 2002
MS Internet Explorer 6.0
Visual Basic 7.0
Visual C ++ 7.0
c / c ++ / c
VBA 6.3