Материал: Программирование на языке Visual Basic для приложений. Подвальный С.Л., Рог А.И

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

1.2. Из истории VBA

Язык Visual Basic for Application (VBA) является совре-

менным диалектом языка программирования BASIC, который был создан в начале 60-х годов. (BASIC - это сокращение от

Beginner's All Purpose Symbolic Instruction Code.)

В конце 80-х годов Microsoft опубликовала значительно улучшенную версию языка BASIC, названную QuickBASIC. QuickBASIC включал почти все возможности современных систем разработки программного обеспечения.

После нескольких версий QuickBASIC в 1992 году

Microsoft представила Visual Basic for Windows.

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

Чтобы избежать необходимости изучения нового макроязыка для каждого продукта, Microsoft начала включать элементы языка BASIC в макроязыки своих продуктов. Примером может служить макроязык для Word for Windows фирмы

Microsoft (до Word 97), известный как WordBASIC, тогда как язык программирования для Access фирмы Microsoft был из-

вестен как Access Basic.

Для унификации макроязыков в своих приложениях Windows и для интеграции приложений на этих макроязыках с DDE и OLE Microsoft создала специальную версию языка

Visual Basic, названную Visual Basic for Applications (сокра-

щенно VBA). Excel 5 был первым продуктом, включающим

Visual Basic for Applications (VBA).

В основные приложения Office (Word, Excel, PowerPoint),

начиная с версии 2000, включен редактор сценариев - Microsoft Visual Basic Script Editor, который позволяет редактиро-

вать Web-страницы (например, в Word) и придать им динами-

ку. Язык VBScript (Visual Basic Scripting Edition) входит в се-

мейство языков Visual Basic и, являясь упрощенной версией языка Visual Basic, позволяет программировать документы, отображаемые браузерами World Wide Web.

18

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

1.3. Для чего нужен язык программирования VBA

Многие пользователи продуктов Microsoft Office даже не подозревают о том, что эти программы совершенно не настроены для выполнения тех задач, для которых предназначены. Мало кто из пользователей, активно работающих, например, с Word или Excel, когда-либо вообще читал пособие по работе с этими продуктами - просто установили и начали создавать полезные (и не очень) документы. Между тем, все приложения Microsoft Office являются такими же конструкторами, как и те компьютеры, которые мы обычно используем с этими приложениями. Для многих типов задач, решаемых при помощи этих приложений, их нужно настраивать.

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

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

Записанные макрорекордером последовательности команд первоначально назывались макрокомандами (macrocommands). Сейчас этот термин сократился до более простого слова макрос.

19

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

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

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

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

20

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

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

1.4. Создание макроса в Word

-Запустите Word,

-выберите Tools | Macro | Visual Basic Editor (Сервис |

Макрос | Редактор Visual Basic) или нажмите комбинацию кла-

виш Alt+F11.

-Далее следует создать модуль, в котором будет размещаться код вашего первого макроса. Щелкните для этого на значке Ргоjесt<имя документа>) в окне Project, a затем - на кнопке с вертикальной стрелкой рядом с кнопкой Insert Module (вторая кнопка вверху слева) и в появившемся меню выберите

Module.

21

-Не вникая в маловажные для первого раза детали, поместите курсор в самое большое окно (Code) и введите следующий текст (без нумерации строк!):

Листинг 1.1, Первый макрос в Word

1: Sub MyFirstMacro()

2: MsgBox ("Макрос в Word!") 3: End Sub

Первая и третья строки этого макроса-процедуры являются заголовком и окончанием процедуры, соответственно. Причем MyFirstMacro - это имя макроса, под которым он будет узнаваем системой. Вторая строка макроса содержит функцию вывода диалогового окна с текстом "Макрос в Word!". Если учесть, что в Windows по-другому вывести информацию из любой программы довольно трудно и чаще всего не нужно, то можно считать, что вторая строка содержит обычный оператор вывода на экран.

-Теперь можно выполнить контрольный запуск макроса, не выходя из Редактора. Выберите Run | Run Sub/UserForm. Результатом работы макроса будет выдача на экран диалогового окна.

-Попытка запустить макрос на выполнение может оказаться неудачной. Вместо этого вы можете увидеть на экране окно предупреждения. В этом случае закройте Редактор VB (File | Close and Return to Microsoft Word). Выберите Tools | Options. В окне Options на вкладке Security щелкните кнопку

Macro Security (или выберите Tools | Macro | Security).

В окне Security выберите переключатель Low (или Medium) и закройте окно кнопкой ОК, но при этом помните о том, что вы снижаете уровень безопасности на своем компьютере при работе с макросами.

1.5. Запись новых макросов

Обычно запись макроса включает четыре основных шага: 1. Задание стартовых условий для макроса. Это означает задание тех условий вашей рабочей среды, которые должны

22

Источник: https://studfile.net/preview/16565567/