реализованы в процедурах программы реакции формы на события, то основную программу все равно необходимо создать, хотя бы только для вызова этой формы) надо указать команду ИмяФормы. Show, а кнопки и сочетания клавиш назначать именно этой основной программе.
Формы, так же как и модули, могут быть сохранены в отдельных файлах путем экспортирования функцией "Экспорт файла" своего контекстного меню правой кнопки мыши в Менеджере проектов или путем перетаскивания ее названия из Meнеджера проектов в Explorer. Но, в отличие от модулей, при сохранении форм получается два файла, в одном из которых содержится текст программы реакции формы на события, а в другом — информация о расположении элементов на форме, их свойствах, а также рисунки и фон формы. Поэтому при импортировании формы необходимо, чтобы оба этих файла были в одной папке.
Операторы цикла и перехода
Если необходимо повторить ту или иную группу операций несколько раз, то используются операторы цикла:
Do…Loop, For…Next, For Each…Next и While… Wend.
Если необходимо совершить те или иные действия в зависимости от наличия или отсутствия выполнения какого-либо условия или в зависимости от значения той или иной переменной, используются операторы условия: If… Then… Else и Select Case.
Если необходимо совершить переход к другой части той же программы, то используется оператор GoTo "имя метки". Там, куда должен быть совершен переход, на отдельной строке должна стоять метка с соответствующим именем, а после нее — двоеточие.
Подробное описание функций, особенностей и синтаксиса всех этих операторов можно получить в справочной системе редактора VBA, поэтому не стоит здесь на них останавливаться. Просто наберите интересующий вас оператор в окне Редактора VBA, установите на него курсор и нажмите кнопку F1. В русской версии Office 97 справка по этим операторам переведена на русский язык.
* * *
Полезный совет
Если у вас на компьютере установлено несколько версий Microsoft Office, то вы наверняка сталкивались с одной весьма неприятной ситуацией. Microsoft Word, начиная с 2000-й версии, при каждом своем запуске сканирует системный реестр и перепрограммирует открытие файлов. doc "на себя", заставляя их открываться именно в новой версии, а не в старой. Помимо того, что это занимает немало времени, подобная ситуация мешает использовать на компьютере сразу две версии Word, работая в старой и постепенно осваивая новую.
Для того, чтобы "отучить" Word2002 (из OfficeXP) перерегистрировать расширения файлов при каждом запуске, создайте в системном реестре, в разделе HKEY_CURRENT_USERSoftwareMicrosoft ffice10.0WordOptions параметр NoRereg, имеющий формат Dword и равный 1, а чтобы сделать то же с Word2000, отредактируйте так же содержимое раздела HKEY_CURRENT_USERSoftwareMicrosoftOffice9.0wordOptions. Подробнее о системном реестре вы можете узнать в главе 14.
Глава 3
Создание первой макрокоманды
В предыдущих двух главах рассказывалась о языке Visual Basic for Applications (сокращенно — VBA), его возможностях и правилах, а также о Редакторе VBA — средстве создания программ на этом языке в среде Microsoft Office. Теперь же на наглядном примере рассмотрим процесс создания простой макрокоманды для Word, подробно объясняя и иллюстрируя все шаги этого процесса.
Цель этой главы — показать ход мыслей программиста, осваивающего неизвестную ему среду разработки без предварительной подготовки. Постарайтесь внимательно ее прочитать, буквально останавливаясь на каждой строчке, ибо, единожды осознав принципы самостоятельного изучения нового языка программирования, вы потом сможете с их помощью быстро и эффективно осваивать другие средства создания программ для компьютеров.
* * *
У программы Microsoft Word есть огромное количество возможностей по работе с текстом. И огромные возможности по замене и поиску, и средства помещения в документ графики, не уступающие многим современным издательским системам, и средства оформления документов красивыми шрифтами и границами… Казалось бы — что еще надо, все необходимые возможности уже учтены создателями Word? Однако иногда перед пользователями встают такие задачи, разрешить которые с помощью стандартных средств Word очень трудно, а то и вовсе невозможно. Но для этого в Word, как, впрочем, и во всех компонентах пакета Microsoft Office, как раз и есть очень мощное средство разрешения подобных проблем: встроенный язык программирования.
Вот наглядный пример, когда именно написание программы-макроса — единственный более-менее достойный выход из проблемы.
Все документы на моем компьютере оформлены приблизительно одинаково — для удобства редактирования, переноса текста из одного документа в другой и др. Можно даже сказать, в чем заключаются эти мои предпочтения — шрифт Times New Roman, 12 пунктов, выделения — жирным и курсивом, выравнивание по ширине, все отступы абзацев равны нулю, а красная строка — 1 см. Именно в таком формате я держу все свои документы Word. Кроме того, я очень люблю формат Rtf и стараюсь, по-возможности, делать копии своих документов в этом формате. Но вот из Internet'а я скачал 50 файлов с интересующей меня информацией — скажем, рефератов по актуальным вопросам кардиологии. И все они были набраны разными людьми в соответствии с предпочтениями каждого: везде разный шрифт, разные размеры шрифта, отступы абзацев — все вкривь и вкось, выравнивание — то влево, то по ширине. В общем, работы по приведению в приемлемый вид — куча. (Для тех, кто является решительным противником однообразия оформления своих документов, приведу другую ситуацию: Вы являетесь организатором конференции, на которую все заинтересованные лица прислали свои доклады, и Вам надо привести их в однообразный вид для помещения в Internet, например, или для последующей отдельной распечатки каждого доклада.)
Можно, конечно, повозиться с каждым документом: открывать, ставить нужный шрифт, отступы, сохранять в формате Word, потом Rtf… Если документов — два, да даже десять, то еще как-то можно справиться, а если их сорок или сто? И вот тут-то придут на помощь макросы.
Но как можно написать программу, да-да, настоящую программу на настоящем языке программирования, ничего не зная о нем, кроме того, что он существует?
Это действительно было бы очень трудно сделать на C++ или даже Delphi. Но для написания программ на VBA не надо особых знаний — они появятся в процессе работы. Важно лишь уметь думать.
Итак, начинаем.
Вначале я определился, что мне надо сделать с каждым документом. Во-первых, обязательно заменить шрифт на Times New Roman, 12 пунктов. Кроме того, необходимо сделать весь текст одного цвета. Во-вторых, убрать все отступы абзацев. В-третьих, заменить все выравнивание по левому краю выравниванием по ширине. Наконец, нужно обработать все документы, предварительно сохранив каждый в формате Rtf.
Я открыл пару документов из общей кучи и включил запись макроса, согласившись на