VBA для чайников - Стив Каммингс 2 стр.


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

И если вы знаете VBA, вы автоматически превращаетесь в эксперта по Visual Basic. Еще один продукт фирмы Microsoft, Visual Basic представляет собой одно из наиболее популярных в мире средств разработки программ самого разного уровня - от простейших условно-бесплатных утилит до приложений высшего класса.

Кстати, одно из преимуществ VBA-стандарта объясняется тем, что вам нужно установить всего лишь одну копию тех файлов поддержки, которые потребуются при работе с VBA в любом из приложений. При стандартной установке все DLL файлы (библиотеки динамической компоновки), как и другие необходимые для VBA файлы, размещаются в папке \Program Files\Common Files\Microsoft SharedWBA.

VBA - это штурвал, но к нему нужен еще и корабль

Теперь ясно, что VBA - прекрасное средство для усовершенствования приложений.

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

Microsoft - вы, наверное, уже слышали об этой компании - создала VBA и обеспечила поддержку VBA во всех своих главных приложениях: Office 97, Office 2000, Office ХР, Word, Excel, Access и PowerPoint. В Outlook, единственном не упомянутом в этом ряду приложении из пакета Microsoft Office, для создания и изменения функциональных возможностей форм вы можете воспользоваться упрощенной версией VBA, получившей название VBScript. В отличие от вышедших раньше версий, Outlook 2002 (как и ее предшественница Outlook 2000) содержит полноценную поддержку VBA для модификации функциональных возможностей самой программы Outlook. VBA поддерживают также FrontPage, средство автоматизации разработки Web-страниц и управления Webузлами фирмы Microsoft, Visio - популярный пакет создания графики для бизнеса, а также Microsoft Project.

VBA-приложения третьих фирм

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

* Corel WordPerfect Ofilce 2000, Соперник Microsoft Office, включает текстовый процессор, приложения для обработки электронных таблиц, баз данных и для создания презентаций.

* CorelDraw. Являясь самым популярным пакетом для работы с рисунками, CorelDraw вместе с набором других программ из пакета позволяет создавать и обрабатывать как векторную графику, так и растровые изображения, печатать их либо размещать на и Web-страницах.

* AutoCAD. Пользующийся большим успехом продукт фирмы Computer Aided Design; некоторые другие приложения этой фирмы также являются VBA-приложениями.

* M.Y.O.B. Accounting. Полный набор средств бухгалтерского учета для малого бизнеса.

* Micrografx iGrafx. Приложения для создания бизнес- графики - блок-схем, организационных диаграмм и т.п., а также для графического моделирования бизнес-операций.

* OmniTrader. Приложение для оценки и анализа рисков.

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

О распространенности VBA-приложений

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

В мире используются многие миллионы копий Microsoft Office, так что уже одни только приложения Office сами по себе окажутся вполне широким полем действия. Имеющие довольно широкую известность, VBA-приложения других фирм я уже тоже называл (такие как WordPerfect, Visio, AutoCAD).

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

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

Программирование на VBA

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

* Открыть окно, полное интересных кнопочек и меню.

* Создать поле и ввести в него дату вашего рождения.

* Щелкнуть на кнопке Вычислить возраст, которая вычислит ваш возраст, основываясь на введенной дате.

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

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

Sub SelectNextQuestion( )

If SelectionStrategy = Randomly Then

AskRandomQuestion

Else If CurrentQuestion = TotalQuestions Then

CurrentQuestion = 1

Else

CurrentQuestion = CurrentQuestion +1

End If

End Sub

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

Что визуального в Visual Basic для приложений?

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

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

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

Главные события

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

Точно так же всегда случается событие, когда пользователь нажимает клавишу на клавиатуре, дважды шелкает кнопкой мыши или просто двигает мышь.

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

Цикл создания программы

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

1. Проектирование.

Здесь определяется, что должна делать программа, как она должна выглядеть на экране и взаимодействовать с другим программным обеспечением.

2. Реализация.

Для успешного выполнения п. 1 конструируются окна и другие элементы программы, появляющиеся на экране, и создается необходимый программный код. Это совсем несложно.

3. Тестирование.

Запускают программу, чтобы проверить, выглядит ли она так, как нужно, и выполняет ли то, что нужно. Как правило, не выглядит и не выполняет.

4. Отладка.

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

5. Повторное тестирование.

Повторяют пп. 3 и 4 до тех пор, пока хватит сил и терпения.

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

Подробнее о том, что можно сделать в VBA

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

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

Настройка пользовательского интерфейса

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

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

Рис. 1.1.

Вам потребуется VBA, если вы захотите работать с документами Word на чистом экране, совершенно свободном ото всех панелей инструментов

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

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

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

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

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

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-программы реагировать на изменение условий, мы подробно обсудим в следующих главах.

Назад Дальше