Выбрать главу

Первое время макрокоманды представляли собой простое перечисление в нужном порядке применяемых к данным пользователя встроенных функций программы (например, набор команд работы над текстом в Lexicon'e) и служили простым автоматически выполняемым заменителем действий пользователя. Впоследствии в макроязыках стали предусматриваться и операторы условного перехода (т. е. If…Then) или цикла, что стало приводить к все большей их схожести с реальными языками программирования.

VBA

В программах Microsoft при разработке средств создания макросов за основу был взят, что естественно было ожидать, Visual Basic. В 1993 году этой фирмой было официально заявлено, что ее сотрудники приступают к разработке универсальной системы программирования для Microsoft'овских офисных программ Visual Basic for Applications. В скором времени все новые версии компонентов Microsoft Office стали снабжаться специальными средствами, позволяющими создавать достаточно мощные макрокоманды.

В Microsoft Office 4.0, включающем в себя Word 6.0, Access 2.0, Excel 4.0, Project 6.0, только два последних компонента включали в себя относительно полноценные версии объектно-ориентированного языка Visual Basic for Applications (тогда еще самой первой версии — 1.0). В Word 6.0 для создания макрокоманд использовался WordBasic (рис. 2.2), состоящий из набора команд работы с текстом документа и нескольких функций работы с файловой системой, примерно такой же язык присутствовал и в Access 2.0. В улучшенной и приспособленной для работы в Windows 95 версии Office — Microsofi Office 95 — положение не изменилось, и в каждом из приложений Office так и осталась собственная среда программирования.

При разработке Microsoft Office 97 в его состав была включена переработанная среда разработки Microsoft Visual Basic 5.0, которая с учетом особенностей программирования в среде офисного пакета получила название Visual Basic for Applications 5.0 — по номеру исходной среды. Ее основой стал Редактор VBA — "Visual Basic Editor", в котором, собственно, и создавался программный код. Полностью Visual Basic for Applications применялся в трех приложениях Microsoft Office 97 — Word, Excel и PowerPoint. В Microsoft Access по-прежнему использовалась оригинальная среда программирования, а в Microsoft Outlook применялась серьезно урезанная версия Visual Basic for Applications — VBScript, не включавшая в себя и половины возможностей исходного языка.

Рис. 2.2. WordBasic — предшественник VBA в Microsoft Word.

Новое развитие Visual Basic for Applications получил в юбилейной, 2000-й версии офисного пакета. На этот раз все компоненты Office получили в свое распоряжение полноценную среду разработки программ: Visual Basic Editor стало можно использовать и в Access, и в Outlook, и даже в Frontpage, вошедшую в состав нового Офиса. В Visual Basic for Applications 6.0, версию, используемую в Microsoft Office 2000, были добавлены многие новые команды, в частности, уже имеющиеся в Visual Basic for Windows версии 6.0. В следующей версии Microsoft Office, Office ХР, развитие Visual Basic for Applications было продолжено, хотя нововведения коснулись уже лишь набора команд, который был несколько расширен. В Microsoft Office ХР также появилась возможность создания так называемых "смарт-тэгов", компонентов Office, отслеживающих определенные, задаваемые разработчиком смарт-тэга действия пользователя и выполняющих определенную функцию при таких действиях (в случае согласия пользователя). Однако смарт-тэги создаются с помощью специальной среды разработки и с Visual Basic for Applications напрямую не связаны.

Visual Basic for Applications — это не просто язык программирования, а целая технология, которую вполне можно распространить и на другие приложения сторонних производителей, подарив их пользователям возможность создавать программы, работающие в их среде. В настоящее время фирма Microsoft активно распространяет лицензии на право использования Visual Basic for Applications в продуктах, создаваемых их покупателями, так что, возможно, в скором времени средства VBA можно будет применять едва ли не в каждой более-менее крупной программе.

СРЕДСТВА ПРОГРАММИРОВАНИЯ НА VBA

В отличие от других средств разработки программного обеспечения, где единственным способом создания новой программы является написание ее кода и создание в визуальных редакторах диалоговых окон или использование уже готовых фрагментов кода других программ, в Visual Basic for Applications есть уникальное средство разработки, не присутствующее более нигде и позволяющее быстро научиться создавать простые макросы для Word, Excel и PowerPoint даже без использования учебников, описаний языка и даже чтения Справочной системы. Это средство — так называемая "запись макросов". При работе в любом из вышеперечисленных компонентов Microsoft Office можно включить специальный режим записи макросов, и тогда все действия пользователя в редакторе будут автоматически "переводиться" на язык Visual Basic for Applications и записываться в виде текста программы. Этот текст можно потом изучить для выяснения синтаксиса и устройства языка, а также необходимым образом его модифицировать. Разумеется, отнюдь не все возможности Visual Basic for Applications реализуются простой записью действий пользователя, однако для простых макрокоманд и для обучающих целей этого средства хватит.

В Microsoft Word для записи макроса надо выбрать из меню "Сервис" пункт "Макросы", а затем из выпадающего подменю — пункт "Начать запись" (рис. 3.1).

Рис. 3.1. Запись макроса

Документы Microsoft Word — собственно документы с расширением".doc" и шаблоны документов с расширением".dot" — устроены так, что могут хранить в себе программы на Visual Basic for Applications. Каждую программу, хранящуюся в документе Word, может вызывать на исполнение либо кнопка на панели инструментов, либо сочетание клавиш, либо пункт меню, либо другая программа (ну и, естественно, выбор этой программы из списка макрокоманд в диалоговом окне "Сервис-Макрос-Макросы". Возможно любое сочетание способов вызовов. Поэтому перед началом записи макроса пользователю предлагается сразу назначить записываемому макросу способ его вызова (рис. 3.2).

Рис. 3.2. Назначение макросу способа вызова.

Если на данном этапе для вызова макроса не будет назначена кнопка или сочетание клавиш, то это всегда можно будет сделать впоследствии с помощью диалогового окна "Настройка" (рис. 3.3) так же, как и для любой другой команды Word. Названия макросов, которые могут быть запущены пользователем, перечисляются в разделе "Макросы" этого окна и состоят из названия проекта (обычно совпадает с названием шаблона или документа, в котором макрос содержится), имени модуля и имени макроса в модуле (что это такое — смотрите ниже).

Рис. 3.3. Диалоговое окно "Настройка".

После нажатия кнопки "Ок" в окне Word появится панель "Запись макроса" (рис. 3.4).

Рис. 3.4. Панель "Запись макроса".

С этого момента все действия пользователя тщательно протоколируются, хотя и с определенными ограничениями — так, в таком режиме невозможно проводить выделение текста мышью (перемещением курсора с нажатой клавишей Shift можно), не работает контекстное меню правой кнопки мыши. Но этих ограничений немного.

После окончания выполнения необходимых действий необходимо нажать левую кнопку на панели — "Остановка записи". Если необходимо прерваться и все же выделить какой-нибудь объект мышью, то необходимо нажать правую кнопку на этой панели "Пауза". При повторном ее нажатии процесс записи продолжится.