Но вам будет не лишним знать, что совсем не обязательно ограничиваться минимальными изменениями и усовершенствованиями существующих приложений; VBA позволяет создавать полноценные и в высшей степени сложные программы, способные конкурировать с мощью готовых продуктов, имеющихся на рынке приложений.
Пользовательские программы, созданные с помощью VBA, интенсивно используют функциональные возможности того VBA-приложения. на которое они опираются (пользовательская
VBA-программа сумеет использовать функциональные возможности из нескольких VBA приложений одновременно). Однако перед пользователем такая программа предстает как цельный самостоятельный объект со своим собственным набором окон, кнопок и меню.
Создание полномасштабной пользовательской программы - штука достаточно амбициозная. Но эта книга предлагает практически всю необходимую для этого информацию, в том числе и вводное описание способов одновременного доступа из программы к нескольким VBA-приложениям.
Кстати, VBA не обязывает вас использовать функциональные возможности приложения.
При желании совершенно игнорируйте их, используя только созданные самостоятельно. Но для запуска даже такой пользовательской программы все равно потребуется VBA-приложение (между прочим, в Visual Basic такой проблемы нет). Здесь вас подстерегает еще одна неприятность, но о ней мы поговорим позже, в подразделе Почему VBA обычно медленнее, чем Visual Basic.
Совсем не тот BASIC
Можно сказать, что VBA является прямым наследником оригинального языка программирования, получившего имя BASIC. Так сказать, безусловно, можно, но смысла в этом примерно столько же, сколько в утверждении, что эволюция человека восходит к амебе - уж слишком многое с того времени изменилось.
Оригинальная версия языка BASIC была создана в 1960-х годах в надежде облегчить программирование для широкой аудитории. BASIC расшифровывается как Beginner's Allpurpose Symbolic Instruction Code. По сравнению с такими языками программирования, как C++ или FORTRAN, команды языка BASIC более сходны с фразами обычного английского языка, поэтому эти команды проще понять и запомнить.
Многие из слов специального назначения, используемые в VBA, присутствовали уже в оригинальном языке BASIC и имели там сходные функции. Точно так же грамматика VBA - определенные правила и порядок, в соответствии с которыми слова образуют выражения, - берет свое начало в языке BASiC.
Однако язык VBA значительно эволюционировал по сравнению с ранними версиями языка BASIC, оставив их далеко позади. Многие из команд VBA, а также правила их применения в языке BASIC вообще отсутствуют. Проще говоря, язык VBA может больше - и значительно больше, - чем старый добрый BASIC, особенно в том, что касается вывода на экран всевозможных интересных форм и взаимодействия с другими приложениями.
Кроме того, VBA - это не только язык программирования, он включает также полноценную интегрированную среду разработки с полным набором специализированных окон, призванных помочь вам в проектировании, отладке и тестировании программ (читайте ниже подраздел Интегрированная среда разработки приложений VBA). VBA имеет еще кое-что из того, о чем BASIC не мог и мечтать - позволяет создавать замысловатый пользовательский интерфейс без необходимости печатания программного кода вручную. Как уже упоминалось, именно это и превращает VBA в визуальное средство разработки приложений.
Интегрированная среда разработки приложений VBA
Вся работа с VBA происходит в интегрированной среде разработки. Этот термин может выглядеть холодно и пугающе, но не давайте ему себя запугать, - вы должны воспринимать интегрированную среду разработки как уютный дом, где можно выполнить всю программистскую работу в тепле и комфорте.
Интегрированная среда разработки, предлагаемая VBA, представлена как редактор Visual Basic. Редактор Visual Basic представляет собой окно приложения с одним меню и набором панелей инструментов, в котором вы получаете доступ к целому ряду дочерних окон, обеспечивающих возможность использования всех средств, необходимых для создания программ.
На рис. 1.3 представлена версия редактора Visual Basic, предлагаемая Visio, но выглядит она точно так же, как и те, которые предлагаются в других VBA-приложениях.
Не все VBA-приложения имеют встроенный редактор Visual Basic (подробнее об этом речь идет ниже, в подразделе Другие диалекты VBA).
Рис. 1.3. Внешний вид редактора Visual Basic в Visio
Подробное описание редактора Visual Basic вы найдете в главе 5 этой книги. Пока же ознакомьтесь со следующим списком некоторых элементов экипировки этого редактора, что ласт вам хотя бы поверхностное представление о том, что он предлагает.
* Место для проектирования форм (диалоговых и других окон), которые будут использоваться в создаваемой вами программе.
*Панель, из которой можно выбирать кнопки, флажки и другие элементы управления, которые вы пожелаете поместить в формы (читайте ниже подраздел Элементы управления ActiveX и другие).
* Окно, с помощью которого можно сообщить VBA, как должны выглядеть и что должны уметь делать формы и элементы управления на них.
* Окна для ввода и редактирования программного кода VBA, с помощью которого вы можете заставить свою программу делать что-нибудь полезное.
* Окна с текущими значениями переменных- числа и текст, которые в них хранятся и меняются, - во время выполнения программы (эти окна значительно облегчают жизнь, когда наступает сезон охоты на спрятавшиеся в программе ошибки).
Макросы и VBA
Чаше других используется способность VBA объединять в группу последовательность различных команд приложения. Если приходится часто использовать одни и те же команды в одной и той же последовательности, имеет смысл сохранить эту последовательность в виде VBA-программы. В результате вы сможете активизировать всю эту последовательность одной командой - той самой, которая запускает созданную вами с этой целью VBA-программу.
Между макросом, который создается в процессе записи, и VBA-программой, код которой вы печатаете вручную, нет никакой - вообще никакой - принципиальной разницы, если, конечно, не считать сам способ создания. Вы можете редактировать программный код макроса, добавляя в него или удаляя из него элементы точно так же, как будто вы напечатали код макроса своими собственными руками.
Создать VBA-программу этого типа проще всего с помощью непосредственной записи всей последовательности выполняемых команд. Для этого большинство VBA-приложений предлагает средство записи макросов, которое работает подобно магнитофону. С того момента, как вы даете указание начать запись макроса, начинают записываться все команды, которые вы используете в приложении. После того как вы остановите запись, средство записи макросов конвертирует записанные команды в эквивалентные им строки VBA-кода. Полученная в результате этого VBA-программа имеет специальное название - макрос. Все тонкости процесса записи макросов обсуждаются в главе 2.
Элементы управления ActiveX и другие
В любой программе для Windows элементы управления - это все те бедолаги на экране, на которых можно щелкнуть или что-нибудь напечатать, чтобы вызвать определенное ответное действие программы. Среди самых распространенных элементов управления следует упомянуть кнопки па панелях инструментов и в диалоговых окнах, переключатели и флажки, предназначенные для выбора заранее определенных опций, и текстовые поля, в которых можно вводить или изменять данные. Пример диалогового окна с множеством различных элементов управления показан на рис. 1.4.
VBA содержит все эти. а также вообще все стандартные для Windows типы элементов управления. Работают они подобно подключаемым компонентам. Чтобы добавить элемент управлений в любую из форм (например, в диалоговое окно), щелкните на соответствующем элементе управления в панели элементов управления (специальной панели инструментов, пример которой показан на рис. 1.5), а затем щелчком на форме прилепите этот элемент к форме.
Благодаря технологии, загадочно называемой ActiveX, можно не ограничиваться элементами управления, предлагаемыми VBA. Разработанная тоже Microsoft, ActiveX определяет стандарт, в соответствии с которым разработчики программного обеспечения создают взаимозаменяемые элементы управления, которые вы можете при желании подключать к своим программам. Элементы управления, предлагаемые VBA, являются элементами управления ActiveX, но, кроме них, есть еще очень много других. Элементы управления ActiveX работают не только в VBA-программах, но и в программах, созданных с помощью C++ или Java.
Чтобы получить возможность использовать в своих VBA-формах новый элемент управления ActiveX, достаточно добавить его в панель элементов управления (за инструкциями обратитесь к главе 14). После этого с ним можно обращаться точно так же, как и с элементами управления, изначально присутствующими в VBA.