Word всегда в этом окне отображается шаблон Normal.dot со всеми макросами, сохраненными в нем (см. рис. 3.6).
Рис. 3.6. Менеджер проекта
Щелкнув мышью по знаку "+" слева от названия проекта, можно открыть список имеющихся его компонентов. Однако так можно поступить лишь с проектами, открытыми в Word: шаблон, загруженный глобально, через папку автозагружаемых файлов или путем "подключения" в диалоговом окне "Сервис — Шаблоны и надстройки", так открыть нельзя, — чтобы получить доступ к его коду для редактирования, необходимо открыть его как файл. Иначе при попытке просмотра будет выдано сообщение "Проект недоступен для просмотра" и доступ к коду будет невозможен (рис. 3.7).
Рис. 3.7. Запрет доступа к коду шаблона, загруженного глобально
Просмотр компонентов проекта можно запретить путем задания пароля. Но подобные действия являются признаком очень дурного тона в программировании.
В случае попытки открытия запароленного проекта в той же версии Office, что и та, в которой он был создан (или в более современной) пользователю будет выдан запрос на ввод пароля. Если же макросы в запароленном проекте, созданном в Microsoft Office 2000 или ХР, пытаться открыть в более ранней версии Office — Microsoft Office 97, то на экран будет выдано такое же сообщение, как и при попытке просмотреть макросы в загруженном глобально проекте — "Проект недоступен для просмотра" (в английской версии — Project is unviewable). Вызвано это тем, что в новых версиях Office парольная защита от просмотра кода программ на Visual Basic for Applications значительно усовершенствована, в частности, добавлены новые алгоритмы зашифровывания этого кода.
В Microsoft Word компоненты проекта делятся на пять больших категорий:
1. "Microsoft Word. объекты". Здесь имеется только один объект называющийся по умолчанию ThisDocument (имя можно изменить). Его контекстное меню, появляющееся при нажатии правой кнопки мыши, выглядит так, как показано на рис. 3.8.
Рис. 3.8. Контекстное меню объекта ThisDocument
При выборе пункта Объект произойдет переход к соответствующему документу — к его содержимому: тексту, графике (этот пункт недоступен для шаблонов, на которых основаны созданные документы, — в этом случае шаблоны, тот же Normal.dot, открываются как проекты и позволяют изменять содержащиеся в них макросы, но не позволяют редактировать собственно свое содержимое). В документ Microsoft Word можно вставить специальные объекты — кнопки, поля ввода текста, поля выбора вариантов и др). В этом случае после выбора пункта Программа контекстного меню объекта ThisDocument можно написать программу, которая будет выполняться при нажатии соответствующей кнопки, введении текста и др. К написанию такой программы можно перейти и из контекстного меню самого специального объекта — выделив его, нажав правую кнопку и выбрав пункт "Исходный текст".
(В Microsoft Excel в качестве объектов представлены все листы рабочей книги Excel по отдельности, а также сама книга как целое.)
2. "Модули." Модули — это и есть собственно программы в Word, макросы. Щелкнув два раза мышью на имени модуля, можно получить доступ к тексту программы или начать ее создавать. Программы, записанные пользователем с помощью средства записи макросов, хранятся по умолчанию в модуле NewMacros шаблона Normal.dot.
Для того, чтобы создать новый модуль, необходимо из контекстного меню Менеджере проектов выбрать пункт "Вставить"-"Модуль" (рис. 3.9).
Рис. 3.9. Вставка модуля
Для начала написания программы надо в окне программы написать "Sub Имя программы", после чего Редактор VBA сам добавит фразу "End Sub", и между этими двумя фразами должен заключаться текст основной части программы (рис. 3.10).
Рис. 3.10. Начало создания программы
3. "Модули класса". Класс — это особое понятие, играющее очень важную роль в программировании. Коротко можно сказать, что это — "тип объектов, определяемый программистом, содержащий как параметры этих объектов, так и программный код, обеспечивающий работу с этими объектами".
К примеру, надо написать программу, которая работает с электронными версиями классных журналов в школе. В каждом журнале есть множество подразделов: и список учеников, и список их оценок, и система вычисления средней оценки каждого из учеников, и список предметов, и много чего еще… Можно, конечно, на Visual Basic for Applications описать устройство каждого классного журнала: создать списки учеников, организовать таблицы с оценками, но тогда при однотипных действиях с группой журналов (например, надо посчитать средний балл оценок всех учащихся седьмых и восьмых классов) придется включать в код очень много операций с каждым компонентом журнала. Также при добавлении нового журнала придется писать программный код для создания списка учащихся, списка предметов и др. Это все очень усложнит программу и потребует большой затраты труда программиста. Поэтому в Visual Basic for Applications имеется понятие класса — то есть нового типа объектов, могущих содержать программный код для своей обработки. Так, можно создать класс "Журналы" и описать в его модуле класса содержимое объектов этого класса: список учеников — (Public Ученики(40) As String), предметов (Public Предметы(20) As String) и др. Теперь для создания нового объекта класса "Журналы" — нового журнала — не надо заниматься утомительным описанием вновь создаваемых списков учеников и предметов: будет достаточно в одной строчке написать команду "Объявить новую переменную класса Журналы" (Dim Журнал25 As Журналы) и присвоить нужные значения соответствующим разделам этого новосозданного журнала (Журнал25.Ученики(1)="Андреев" и.т.д.). Теперь можно в модуле класса написать программу вычисления средней оценки всех учащихся, и при необходимости сделать такой подсчет вызывать ее одной командой.
4. "Формы". Формы — это диалоговые окна программ, которые можно разработать по своему вкусу. Для того, чтобы в проект добавить форму, надо из контекстного меню в Менеджере проектов выбрать пункт "Вставить"-"UserForm". Будет создано пустое диалоговое окно, в которое можно поместить кнопки, картинки, текст и др. Пример сложной пользовательской формы — на рис. 3.11.
Рис. 3.11. Пример сложной пользовательской формы
Не обновлять экран во время работы. Если этот пункт не F отмечен, то Вы сможете наблюдать за процессом создания книжки, но это серьезно замедлит работу.
Подробнее о формах будет рассказано в следующей главе.
5. "Ссылки". Программы могут запускаться на выполнение не только в результате действий пользователя, но и в результате вызова из другой программы. Однако запустить программу можно только из загруженного в Word проекта (шаблона или документа). Если постоянно загружать проект нецелесообразно (например, подобный вызов используется достаточно редко), то для запуска из загруженного проекта программы из другого, незагруженного шаблона нужно поставить на него ссылку (делается это путем