Окно Проводника проектов при первой активизации редактора Visual Basic обычно открыто. Если оно случайно было закрыто, то вызвать его можно:
- нажав на клавиши <Ctrl>+<R>;
- нажав на кнопку Project Explorer на панели Standard;
- воспользовавшись меню View -> Project Explorer.
В окне Project Explorer представлено дерево компонентов вашего приложения VBA.
Самый верхний уровень — это проект (Project), которому соответствует документ Word, рабочая книга Excel, презентация PowerPoint и прочие файлы, с которыми работает данное приложение. Например, если вы открыли редактор Visual Basic из Word, то в Project Explorer будут представлены все открытые в настоящее время файлы Word и еще шаблон Normal.dot. Если редактор Visual Basic открыт из Excel, то в Project Explorer будут открытые книги Excel и специальная скрытая книга PERSONAL.XLS.
Помимо того, что обычно содержится в документах Office (текст, рисунки, формулы и т.п.), каждый проект (который и есть документ) — это одновременно и контейнер для хранения стандартных модулей, модулей классов и пользовательских форм. Добавить в проект каждый из этих компонентов можно при помощи меню Insert или через контекстное меню в Project Explorer.
Стандартные модули — это просто блоки с текстовым представлением команд VBA. В нем может быть только два раздела:
- раздел объявлений уровня модуля (объявление переменных и констант уровня модуля);
- раздел методов модуля (расположение процедур и функций).
При работе макрорекордера в Word в проекте Normal.dot или текущем документе (в зависимости от места сохранения макроса) автоматически создается стандартный модуль NewMacros (в Excel — Module1), куда и записываются все создаваемые макрорекордером макросы.
В большинстве проектов VBA используется только один стандартный модуль, куда и записывается весь код. Создавать новые стандартные модули есть смысл только из следующих соображений:
- для удобства экспорта и импорта (из контекстного меню в Project Explorer). Так можно очень удобно обмениваться блоками кода между приложениями VBA (и обычного VB);
- для повышения производительности. При вызове любой процедуры модуля происходит компиляция всего модуля, поэтому иногда выгоднее разместить процедуры в разных модулях, чтобы компилировать только нужный в данный момент код;
- для улучшения читаемости. Если ваше приложение выполняет разные группы задач, то код, относящийся к каждой группе, лучше поместить в свой модуль.
Модули классов позволяют создавать свои собственные классы — чертежи, по которым можно создавать свои собственные объекты. Обычно используются только в очень сложных приложениях. Применяются они в обычных приложениях VBA редко, и здесь рассматриваться не будут.
Пользовательские формы являются одновременно хранилищем элементов управления и программного кода, который относится к ним, самой форме и происходящими с ними событиями. Подробнее про формы будет рассказано в модуле 5.
Еще один важный контейнер в Project Explorer — контейнер References (в Excel его нет), то есть контейнер ссылок. В нем показывается, ссылки на какие другие проекты (документы Word) есть в нашем проекте, и, соответственно, какие "чужие" программные модули мы можем использовать. По умолчанию в каждый проект Word помещается ссылка на Normal (то есть шаблон normal.dot) — и вы в любом файле можете использовать макросы оттуда.
Еще одна полезная возможность Project Explorer — возможность настроить свойства проекта. Для этого нужно щелкнуть правой кнопкой мыши по узлу Project (VBAProject в Excel) и в контекстном меню выбрать Project Properties (то же окно можно открыть и через меню Tools -> Project Properties. В этом окне можно:
- изменить имя проекта. Эта возможность потребуется, если у вас есть ссылки на проект с одинаковыми именами;
- ввести описание проекта, информацию о файле справки и параметры, которые будут использоваться компилятором;
- защитить проект, введя пароль. Не зная этот пароль, проект нельзя будет просмотреть или отредактировать.
И все-таки, что обычно приходится делать в окне Project Explorer?
Если вам нужно создать свой макрос вручную, а макросов в данном документе еще нет, то нужно будет щелкнуть правой кнопкой мыши по узлу проекта (строки, выделенной полужирным цветом) и в контекстном меню дать команду Insert -> Module. В проекте будет создан новый модуль и сразу открыт в окне редактора кода. Что делать в этом окне — об этом в следующем разделе этой главы.
Если вы уже создавали макросы в этом проекте (макрорекордером или вручную), то модуль будет уже создан. Его можно будет увидеть под контейнером Modules. Чтобы его открыть в окне редактора кода, достаточно щелкнуть по нему два раза мышью. Там можно будет найти созданные вами средствами макрорекордера макросы.
Внимание! Обязательно подумайте, где вам будет нужен создаваемый код — только в одном документе или во всех документах данного приложения. Если он нужен будет только в одном документе, используйте стандартный программный модуль этого документа. Если во всех, то используйте программные модули проекта Normal (в Word) или PERSONAL.XLS (в Excel).
Если вам нужно создать графическую форму с элементами управления (кнопками, текстовыми полями, ниспадающими списками и т.п.), то нужно щелкнуть правой кнопкой мыши по узлу проекта и в контекстном меню выбрать Insert -> UserForm. Новая форма будет создана и открыта в окне дизайнера форм.