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

Точно так же одинаково определяются выполняющие конкретные задачи подразделы программы (процедуры и функции), независимо от того, в каком из VBA-приложений вы это делаете.

Однако, помимо этих основополагающих команд, в каждом из VBA-приложений довольно много VBA-команд, уникальных именно для этого приложения. Это значит, что вам придется достаточно многое выучить дополнительно, если вы захотите перейти от программирования в рамках одного VBA-приложения к программированию в рамках другого, - хотя и предполагается, что VBA стандартизирован.

Конечно, совсем не удивительно, что такое специализированное на графических изображениях приложение, как Visio. имеет команды, отличные от команд текстового процессора Word. Печально то, что различные VBA-приложения часто используют разные команды даже для тех возможностей, которые у этих приложений общие. Ярким примером такой несогласованности служат команды настройки меню. Можете ли вы поверить, но даже Word, Excel и PowerPoint - эти вечно целующиеся кузины из семейства Microsoft Office- для настройки некоторых элементов имеют совершенно разные VBA-команды. Ох, нет совершенства в этом мире!

Строго говоря, сам язык VBA остается одним и тем же во всех VBA приложениях. Он кажется меняющимся, потому что в каждом из приложений есть свой уникальный набор объектов с их собственными методами (командами) и свойствами (характеристиками). Подробнее об объектах, методах и свойствах говорится в главе 12.

VBA 5 против VBA 6

Эта книга охватывает последние толкование VBA - версию б, которая используется в приложениях Office 2000, а также в продуктах iGrafx фирмы Micrografx, Corel WordPerfect 2000 и CorelDraw, VBA 5 вышел из Microsoft Office 97, и большинство VBA-приложений третьих фирм поддерживают именно эту версию VBA. Различия между этими двумя версиями не слишком существенны, так что вы можете практически безболезненно перейти от любой из этих двух версий к другой. И все же вам не помешает ознакомиться со следующим списком наиболее важных отличий.

* Справочная система VBA 5 основана на использовании старой программы WinHelp, вто время как VBA б использует для той же цели новую технологию HTML Help фирмы Microsoft (между прочим, многие до сих пор предпочитают WinHelp).

* В VBA 6 ядро языка VBA пополнили 13 новых функций, предназначенных главным образом для манипуляций с текстом и форматирования значений. Описание встроенных функций VBA с указанием тех из них, которые доступны только в VBA 6, вы найдете в главе 11.

* Формы в VBA 6 могут быть немодальными, в отличие от VBA 5, где все формы - модальные. Здесь я даже не пытаюсь определить эти термины - они подробно обсуждаются в главе 10.

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

Другие диалекты VBA

Большинство VBA-приложений имеют полный фарш- и средство записи макросов, и полноценный редактор Visual Basic, и полную версию языка программирования VBA. К таким 'Кадиллакам VBA-приложений можно отнести Visio, WordPerfect, AutoCAD и, безусловно, 'тяжелую артиллерию от Microsoft - Word, Excel и PowerPoint.

Microsoft Access немного выпадает из общего ряда VBA-приложений. В Access нет средства записи макросов, поэтому программный код макросов придется записывать вручную, - по этой причине они не считаются VBA-макросами. Формы Access (пользовательские диалоговые окна) не переносятся в другие VBA приложения. И в то время как Access 2002 содержит редактор Visual Basic, в Access 97 его нет. Вместо редактора там вы получаете отдельные окна для печатания VBA-кода, отладки и проектирования форм.

В некоторых приложениях (например, в Internet Explorer и Outlook) используется урезанная версия VBA, называемая VBScript. Такие VBScript-приложения не имеют редактора Visual Basic, ла и сам язык программирования не полон. Но все равно этот язык остается достаточно мощным.

VBA против Visual Basic

Помимо того, что VBA не позволяет вам создавать отдельные приложения, одно из основных отличий состоит в том, что программы, написанные на VBA, работают медленнее, чем программы, написанные на Visual Basic.

Почему VBA обычно медленнее, чем Visual Basic

Кроме того, что вы не можете создавать в VBA отдельные, автономно работающие приложения, между VBA и Visual Basic есть еще одно серьезное отличие- VBA-программы обычно выполняются медленнее.

Причина этого обнаруживается просто: VBA-программу приходится компилировать хотя бы раз в каждой сессии работы с соответствующим VBA-приложением. Компиляция - это процесс перевода программного кода (который вы можете прочитать) в машинный код (представляющий собой инструкции, которые непосредственно исполняются компьютером во время выполнения программы). Компилятор представляет собой программу, которая переводит программный код, понятный человеку, в инструкции, которые может выполнить компьютер.

После выполнения компиляции программы, созданной в Visual Basic, она сохраняется на жестком диске компьютера в форме машинного кода, который всегда может быть выполнен компьютером с максимальной скоростью, как только программа будет загружена в память.

В противоположность этому, VBA-программы хранятся в виде VBA-кода. Когда вы даете указание выполнить VBA-программу, происходит следующее.

1. Выполняется компиляция программы.

Именно этот шаг является узким местом для всего процесса. Пока компилятор VBA выполняет свою работу, слышно, как журчит жесткий диск, но создается впечатление, что больше ничего не происходит.

2. Полученная в результате компиляции версия программы сохраняется в памяти компьютера.

3. Наконец-то! Программа начинает выполняться.

Шаг 2 дает надежду на сведение потерь к минимуму. До тех пор пока скомпилированная версия VBA-программы хранится в памяти, эта программа может выполняться с максимальной скоростью всякий раз, когда понадобится. Но как только вы выйдете из VBA-приложения, эта скомпилированная программа без следа растворится в эфире. Еще хуже то, что скомпилированная версия VBA-программы может лишиться своего временного жилья в памяти задолго до того момента, когда вы решите покинуть приложение. Такое ее изгнание случится, если программа в какой-то момент не использовалась, и как раз тогда системе потребовалась дополнительная память, например для запуска других приложений.

Что касается тех задач, на которых специализируется VBA (а к ним относится работа с объектами базового VBA-приложения), то они будут выполняться программой, созданной в VBA, действительно быстрее, чем такой же программой, написанной в Visual Basic.

Различия между VBA и Visual Basic

VBA имеет очень много общего с Visual Basic, своим старшим братом, предназначенным для создания независимых приложений. А раз языки похожи, вы можете перенести большую часть своих навыков в программировании на VBA в Visual Basic. Однако вам следует помнить о некоторых очень важных различиях.

К концу 2001 года ожидается перевоплощение Visual Basic в Visual Basic.NET. Хотя изменения в основном направлены на расширение возможностей и упрощение использования, сам язык будет отличаться от VBA. Поэтому вам придется изменить некоторые приемы программирования, принятые в VBA, чтобы они сработали и в Visual Basic.NET. Конечно же, вы можете ограничиться Visual Basic версий 5 и 6 - инструментами, которые будут работать еще не один год и которые используют один базовый язык программирования с VBA. Однако вы должны иметь в виду, что VBA и Visual Basic используют разную систему создания и отображения форм.