Такое положение дел частично объясняется не самым серьезным отношением многих опытных программистов к Visual Basic for Applications — языку, который доступен во всех компонентах пакета Office 97. Тем не менее, он предоставляет возможность создавать эффективные приложения как для оптимизации работы с Office, так и для выполнения расчетов и обработки данных. Причем это под силу даже новичкам, которым не требуется никаких учебников или дополнительной подготовки. Достаточно просто наблюдать, исследовать, проводить эксперименты и делать выводы, что в свою очередь способствует развитию навыков научного подхода к разным явлениям.
Подобная ситуация отчасти объясняется несколько пренебрежительным отношением многих профессиональных разработчиков программ к Visual Basic for Application — языку программирования, встроенному во все компоненты пакета Office 97. А ведь он позволяет создавать удачные программы и для упрощения работы с Office, и для проведения расчетов, и для обработки данных. Причем создавать такие продукты смогут даже начинающие, и им не потребуются ни руководства, ни дополнительное обучение. Нужно будет лишь наблюдать, исследовать, ставить эксперименты и делать выводы, а все это помогает выработать навыки научного подхода к различным явлениям.
Для создания макросов на Visual Basic не нужно изучать объемные руководства. В целом, к таким материалам стоит прибегнуть после того, как вы освоите не менее половины функционала языка — в этом случае их будет удобнее воспринимать, а новая информация усвоится быстрее.
Создание программы
В Visual Basic существует особый инструмент для создания программ — «Запись макросов», который дает возможность легко создавать простые макросы для Word без необходимости знания языка программирования. При редактировании в Word можно активировать специальный режим, в котором все выполняемые действия будут автоматически конвертироваться в код на Visual Basic и сохраняться в текстовом формате. Записанную программу можно затем проанализировать для изучения синтаксиса и структуры языка, а также при необходимости внести изменения.

Если требуется записать макрос, надо выбрать из меню «Сервис» пункт «Макросы», а из ниспадающего меню — пункт «Начать запись».

Документы формата Word могут включать в себя программы, которые можно активировать, нажав на определенную кнопку на Панели инструментов, используя заданное сочетание клавиш, выбирая соответствующий пункт меню или задействуя другое программное обеспечение. Более того, существует возможность комбинировать различные методы активации, поэтому перед началом записи макроса рекомендуется выбрать один из них. Тем не менее, это можно сделать и позднее в диалоговом окне «Настройка». После нажатия кнопки ОК в окне Word откроется панель «Запись макроса». Теперь все действия пользователя будут внимательно фиксироваться, хотя с некоторыми ограничениями: нельзя выделять текст с помощью мыши (для этого лучше использовать клавиши +), а контекстное меню не будет доступно при щелчке правой кнопкой мыши и т. д.
Далее следует слева на панели кликнуть по кнопке «Остановка записи». Если вы хотите приостановить процесс и выделить объект с помощью мыши, выберите на этой панели правую кнопку «Пауза». Чтобы возобновить запись, нажмите ее снова.
Редактор Visual Basic
Данный редактор можно открыть через меню «Сервис?Макросы?Редактор Visual Basic» или с помощью сочетания клавиш +.

В него входят «Менеджер проектов», «Окно свойств», «Окно отладки», «Окно контрольного значения», «Окно локальных переменных», «Стек вызова», «Окно просмотра объектов», окна текста программ и дизайна форм.

Программы на Visual Basic хранятся только в документах и шаблонах Word. Когда они содержат макросы, их называют проектами. В окне «Менеджера проектов» отображаются названия всех доступных проектов, в состав которых входят открытые документы и шаблоны, в том числе и загружаемые при старте Word. Кроме того, там всегда имеется шаблон Normal.dot со всеми сохраненными макросами.

Щелкнув мышью по знаку «+» слева от названия, можно получить список компонентов проекта, однако это делается лишь с открытыми в Word проектами. А чтобы для редактирования загруженного шаблона иметь доступ к коду, требуется открыть его как файл.
Запретить просмотр компонентов проекта можно с помощью пароля, однако в программировании подобные действия являются признаком «дурного тона».
Компоненты проекта делятся на пять больших категорий.

1. Microsoft Word объекты. Здесь есть только один объект, называющийся ThisDocument, контекстное меню которого появляется при нажатии правой кнопки мыши.
Для перехода к тексту или графике нужно выбрать пункт «Объект» (для Normal.dot недоступен). В документ Word можно вставить кнопки, поля ввода текста, поля выбора вариантов и т. д. Тогда после выбора пункта «Программа» контекстного меню объекта ThisDocument можно написать программу, которая будет выполняться нажатием соответствующей кнопки или введением текста. К ее написанию можно перейти и из контекстного меню самого объекта — выделите его, нажмите правую кнопку мыши и выберите пункт «Исходный текст». (В Microsoft Excel в качестве объектов представлены и сама рабочая книга Excel в целом и все ее листы по отдельности.)
2. Модули, или собственно макросы. Щелкнув дважды мышью на имени модуля, можно получить доступ к тексту программы или приступить к ее созданию. Программы, записанные с помощью средства записи макросов, хранятся в модуле NewMacros шаблона Normal.dot.

Чтобы сформировать новый модуль, нужно выбрать пункты «Вставить?Модуль», в окне программы написать Sub, далее назначить «уникальное имя программы» и нажать . После этого Word сам добавит фразу End Sub. Между этими двумя фразами и должен находиться текст основной части программы.

3. Классовые модули. Класс представляет собой тип объектов, который устанавливается разработчиком; данное понятие имеет большое значение в сфере программирования. Например, необходимо создать программу для работы с электронными версиями школьных журналов, в каждом из которых предусмотрены разделы: перечень учеников, таблица оценок, система расчета средней оценки каждого ученика, список предметов и так далее.
Можно, конечно, с помощью Visual Basic описать устройство каждого классного журнала, но тогда при однотипных действиях с группой журналов (в частности, при подсчете среднего балла оценок всех учащихся 7-х и 8-х классов) придется включать в текст программы множество операций с каждым компонентом журнала. А при добавлении нового журнала придется сочинять фрагмент программы, создающий список учащихся, предметов и др. Все это усложнит программу и потребует значительных усилий. Поэтому в языке введено понятие класса, т. е. нового типа объектов. Так, можно создать класс «Журналы» и описать в его модуле содержимое объектов этого класса: список учеников (Public Ученики(40) As String), предметов (Public Предметы(20) As String) и пр.
Теперь, чтобы создать новый объект класса «Журналы», не придется заниматься утомительным описанием новых списков учеников и предметов — достаточно будет в одной строке ввести команду «Объявить новую переменную класса Журналы» (Dim Журнал25 As Журналы) и присвоить нужные значения его соответствующим разделам (Журнал25.Ученики(1)=«Андреев»). Кроме того, в модуле класса можно написать программу вычисления средней оценки всех учащихся и, если необходимо, вызывать ее одной командой.
4. Формы — это диалоговые окна программ, которые можно разработать по своему вкусу. Чтобы в проект добавить форму, нужно выбрать пункты «Вставка? UserForm». Будет создано пустое диалоговое окно, в которое можно помещать кнопки, картинки, текст и многое другое.
5. Ссылки. Программы можно запускать и по вызову из другой программы, однако это делается только из загруженного в Word шаблона или документа. Если загружать проект постоянно нецелесообразно (например, подобный вызов используется достаточно редко), то лучше установить на него ссылку простым перетаскиванием значка шаблона в окно «Менеджера проектов», чтобы открыть доступ к программам.

Окно текста программ и дизайна форм — основное рабочее место на Visual Basic, здесь пишется текст программ и разрабатываются диалоговые окна. Чтобы открыть его для какого-либо компонента проекта, надо просто два раза щелкнуть на нем мышью или выбрать пункт «Программа». Редактор Visual Basic — дружественный, он постоянно подсказывает, какие параметры имеет та или иная команда и как надо корректно ее написать. Например, если набрать команду MsgBox (вызывает на экран диалоговое окно, в частности, «Сохранить изменения в документе?») и ввести затем открывающую круглую скобку, то над курсором сразу же появится подсказка. В ней содержится информация о синтаксисе данной команды, т. е. говорится, как и какие нужно задавать параметры в тексте программы, например, число кнопок, вид значков и звук.

Язык Visual Basic — объектно-ориентированный, значит, очень многие его команды имеют формат, отличный, скажем, от формата языков программирования Basic или Pascal. Типичная команда на Visual Basic выглядит так: . . . . . Иными словами, каждая команда пишется как бы «с конца»: сначала определяется то, над чем надо произвести действие, т. е. объект, а уже затем само действие — метод. Разделитель компонентов команды — точка. Например, по команде Application.ActiveDocument.PageSetup.Orientation = wdOrientLandscape устанавливается альбомная ориентация листа документа. Такой же вид имеет и команда получения информации об ориентации листа, которая выглядит так: p = Application.ActiveDocument.PageSetup.Orientation.
После ее выполнения значение переменной р будет wdOrientLandscape или wdOrientPortrait соответственно. При написании команд редактор Visual Basic постоянно подсказывает следующий шаг — стоит только написать в тексте программы слово Application и поставить точку, как сразу появятся возможные варианты продолжения.

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

Чтобы не вводить слова целиком, можно использовать команду завершения слова, например, вместо Application набрать Appli и нажать + . Редактор допишет слово до конца сам или предоставит возможность выбрать его, если нельзя однозначно определить по первым буквам. Предположим, если программист не воспользуется подсказкой, введет всю команду вручную и допустит в элементарном синтаксисе ошибку, то редактор не позволит ему работать дальше, выдав соответствующее сообщение.
Редактор, безусловно, не сможет определить ошибку, если алгоритм приложения неверен; в таком случае ответственность лежит на программисте или имеется опечатка в команде. Если это так, редактор воспримет это слово как новую команду, придуманную самим программистом. Тем не менее, он сможет обнаружить команду с ошибкой, если она уже была ранее известна.
Еще одно достоинство Visual Basic — прекрасная справочная система. Поставив курсор мыши на любую команду (или название объекта) и нажав клавишу , можно получить подробную справку о том, зачем она нужна и каков ее синтаксис. Кроме того, можно познакомиться с примером ее использования и, если необходимо, даже скопировать. (В справке Visual Basic for Application очень часто приводятся фрагменты кода программ, иллюстрирующие использование той или иной команды; скопировав, можно их изменить и использовать в своей программе.) К сожалению, большая часть справки приведена на английском языке.

Дружественность редактора позволяет самостоятельно изучать его — достаточно записать несколько макросов и с помощью справки изучить назначение каждой команды. Закомментировать, т. е. исключить из выполнения можно любую команду, поставив перед ней знак апострофа. Кроме того, после него можно написать пояснения к соответствующей части программы (все комментарии даются в Visual Basic зеленым цветом).

Если дважды щелкнуть мышью на названии формы, то откроется окно «Дизайна форм».
Отметив соответствующий элемент (кнопка, поле ввода, переключатель и др.) на панели инструментов «Элементы управления» и затем перетащив мышкой на поле формы, можно поместить его на форму. Если дважды щелкнуть на этом элементе, то откроется окно программ пользовательской формы, куда можно ввести программу, а чтобы она выполнялась, нужно снова сделать двойной щелчок на элементе.
Если требуется попасть в «Окно свойств», достаточно выбрать какой-нибудь элемент формы и указать в его контекстном меню пункт «Свойства».

Здесь можно задать все доступные свойства каждого элемента, например его цвет и границы, надпись, состояние (доступно/недоступно для изменений), а также поместить на элемент картинку из внешнего файла. Чтобы получить подробное описание функции каждого элемента окна свойств (их состав различен для каждого элемента формы), достаточно поставить на него курсор и нажать клавишу . Следует тщательно изучить назначение всех элементов данного окна.
Окно «Просмотр объектов», вызываемое с помощью клавиши или из меню «Вид», содержит краткий справочник, где приведены свойства и методы (действия и команды) объектов Visual Basic.

На панели инструментов «Правка» этого редактора есть соответствующие пункты для вызова описанных выше функций. Так, «Список свойств/методов» позволяет увидеть продолжение любой команды, а «Сведения» — выдает информацию о переменной, выделенной в данный момент. В редакторе Visual Basic, как и в Word, можно переходить к соответствующим его частям, поместив закладки в текст программы.

Все входящие в состав проекта модули можно сохранить в текстовом файле с расширением .bas. Для этого в «Менеджере проектов» нужно щелкнуть правой кнопки мыши на соответствующем модуле и из появившегося меню выбрать функцию «Экспорт файла». Теперь можно вставить сохраненный модуль по команде «Импорт файла» из того же меню. Модули и формы можно перетаскивать между различными проектами, копируя их из одного проекта в другой.
Продолжение будет в грядущем выпуске.




