VBA для «чайников» - [7]

Шрифт
Интервал

Добавление новых возможностей

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

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

Например, в Microsoft Word нет команды для сохранения выделенного блока текста в отдельном файле. Для решения этой задачи вам придется скопировать выделенный текст в буфер обмена, создать новый документ, скопировать в него содержимое буфера, сохранить и закрыть этот новый документ. С помощью VBA можно создать небольшую программу, которая выполнит все эти шаги автоматически (тем самым обеспечив пользователю Word возможность, которую большинство других текстовых процессоров имеют еще со времен СР/М, - операционной системы, использовавшейся на самых первых персональных компьютерах). VBA-код такой программы может выглядеть примерно так:


>

Public Sub CopyBlockToFile( )

Selection.Range.Copy ' копирует выделенное

' в буфер обмена

Documents.Add ' создает новый документ

Selection.Range.Paste ' вставляет содержимое буфера

' в новый документ Dialogs(wdDialogFileSaveAs).Show

' открыват диалоговое ACtiveDocument.Close

' окно Сохранение документа

End Sub ' закрывает новый документ


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

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

* VBA-программа может (в зависимости от содержимого текущего документа) выполнять определенные действия с другим документом того же или другого приложения.

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

* VBA-программа может менять свое поведение в зависимости от текущего знака Зодиака или фазы Луны. (Здесь, к сожалению, вам еще придется написать программный код, осуществляющий перевод даты и времени в соответствующие знак Зодиака и фазу Луны.)


Рис. 1.2. Если для продолжения работы программы требуется определенная информация от пользователя, можно создавать диалоговые окна, подобные этому.

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

Создание более сложных программ

Создавать VBA-программы, добавляющие функциональные возможности существующим приложениям, может каждый, кто способен запомнить свое школьное расписание или прочитать за завтраком инструкцию на упаковке с вермишелью быстрого приготовления.

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

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

VBA-программа сумеет использовать функциональные возможности из нескольких VBA приложений одновременно). Однако перед пользователем такая программа предстает как цельный самостоятельный объект со своим собственным набором окон, кнопок и меню.

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

Кстати, VBA не обязывает вас использовать функциональные возможности приложения.

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


Рекомендуем почитать
Графика DirectX в Delphi

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


Вторая жизнь старых компьютеров

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


DirectX 8. Начинаем работу с DirectX Graphics

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


Симуляция частичной специализации

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


Обработка событий в С++

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


Питон — модули, пакеты, классы, экземпляры

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.