Большинство пользователей постепенно осваивают те возможности Excel, которыенаиболее пригодны для создания документов нужного им типа. Определив длясебя оптимальное количество требуемых инструментов, они, как правило, оставляют без внимания множество средств и функций программы. Наиболее честолюбивые пользователи, для того чтобы облегчить доступ к привычным командам, изменяют пользовательский интерфейс Excel. Но дальше этого они не идут.
1.2 Автоматизация рабочих процессов
Две области, которые многие пользователи, к сожалению, оставляют без внимания, — это запись макросов и программирование в среде VBA (Visual Basic for Applications — Visual Basic для приложений). В недалеком прошлом макросы имели настолько плохую репутацию, что многие не желали даже связываться с ними. Однако сейчас макросы очень просто записывать и выполнять. Применив минимум усилий, можно избежать выполнения действий, которые могут привести к утрате данных или, скажем, к повреждению операционной системы
(именно этого больше всего опасаются начинающие пользователи). Но тот, кто не отважится работать с макросами и программами VBA, лишит себя возможности изменить жизнь к лучшему за счет использования форм (настраиваемых диалоговых окон), которые предназначены для представления информации и получения данных от пользователя, а также применяются в качестве графических средств для работы с настраиваемой процедурой или приложением.
VBA является единой средой разработки приложений во всех программах Microsoft Office 2003. Основные принципы работы в среде VBA и в среде Visual Basic 2003 идентичны. Перечислим главные преимущества, получаемые в результате применения языка VBA.
Во-первых, с помощью VBA можно записывать последовательности повторяющихся команд, характерных для какого-либо приложения, и назначать правила (условия), в соответствии с которым эти последовательности (процедуры VBA) будут вызываться в приложении. Например, после нажатия некоторой кнопки, рабочий лист Excel будет отформатирован с учетом ваших требований, записанных на VBA и сохраненных в рабочей книге или шаблоне.
Во-вторых, применив средства VBA, можно обеспечить нестандартный диалог с пользователем, создавая диалоговые формы и обрабатывая реакцию пользователя на событие в приложении.
Наконец, использование единого языка программирования способствует более тесному взаимодействию Excel с продуктами Microsoft Office. С помощью VBA можно разрабатывать приложения, одновременно применяющие компоненты нескольких программ.
1.2.1 Макрорекордер
В Excel существует возможность создавать собственные макросы и таким образом автоматизировать выполнение основных операций. Макрос представляет собой последовательность команд
и функций,
записанных в модуле VBA. Насколько Автоматизация рабочих процессов сложными могут быть макросы, можно судить по входящим в пакет поставки
Excel надстройкам, при создании которых использовались средства макропрограммирования.
Существует два способа создания макроса: записывать свои действия во время работы с листом Excel или же написать макрос, используя редактор Visual Basic. Наиболее простым способом создания макрокоманды является ее запись с помощью Макрорекордер, и для этого вовсе не нужны глубокие знания по программированию. Работа Макрорекордер во многом напоминает работу обычного магнитофона, осуществляющего запись и воспроизведение звука. Макрорекордерпротоколирует все выполняемые пользователем действия и представляет их в видеVBA-кода.
Однако следует помнить, что собственноручно написанные макросы позволяют
создавать гораздо более мощные и гибкие программы, чем макросы, записываемыми с помощью Макрорекордер, но, конечно, записать макрос гораздо проще, чем создать его программный код. Процесс записи макроса с помощью Макрорекордер можно условно разбить на четыре следующих этапа:
1) запуск Макрорекордер;
2) присвоение макросу имени;
3) выполнение записываемых операций;
4) завершение записи.
Начало записи
Прежде чем записывать свой макрос, определитесь, что вы хотите получить в результате. Подумайте, какие действия он должен осуществлять, и настройте приложение таким образом, чтобы можно было беспрепятственно выполнить последовательность команд, подлежащих записи. Например, прежде чем приступить
к созданию макроса, предназначенного для редактирования текста, убедитесь,
что окно с нужным документом находится на переднем плане. (Вы можете приостановить процесс записи макроса при необходимости выполнить операцию, которую не следует записывать, но лучше спланировать свои действия заранее.)
Кроме того, вам придется протестировать макрос, потому что при записи фиксируются все действия, в том числе и ошибочные. И обязательно определите, в каких условиях будет работать макрос.
Для того чтобы начать запись макроса, необходимо активизировать чистый рабочий лист, выбрать в меню Tools (Сервис) команду Macro (Макрос), а в открывшемся
подменю — команду Record New Macro (Начать запись). На экране появится диалоговое окно Record Macro (Запись макроса), в котором следует указать имя макроса, ввести его краткое описание, задать комбинацию клавиш для запуска создаваемого
По умолчанию макросу присваивается имя Macro ft (Макрос*), где символ диеза соответствует порядковому
номеру макроса. Имя макроса отображается в поле Macro name (Имя макроса).
Это имя можно оставить без изменения, но при желании можно заменить его другим, которое описывало быстродействия макроса. При выборе имени макроса и комбинации клавиш для его запуска следует придерживаться следующих правил:
1) Имя макроса может состоять максимум из 255 символов. Оно не должно со-
2) держать пробелов и специальных символов.
3) Между фрагментами длинныхимен макросов вместо пробелов вставляются символы подчеркивания (__).
4) При назначении комбинации клавиш для запуска макроса учитывается регистр символов.
Информация о создаваемом макросе вводится в поле Description (Описание). Она пригодится в дальнейшем — при идентификации макроса и при его вызове. Обязательно укажите, какие условия необходимо создать для успешной работы макроса. После щелчка на кнопке ОК в диалоговом окне Record Macro (Запись макроса) на экране появляется панель инструментов с двумя кнопками. Для того чтобы остановить процесс записи макроса, нужно щелкнуть на кнопке Stop Recording (Остановить запись) указанной панели.
С помощью кнопки Relative Reference (Относительная ссылка) определяется режим адресации при записи макросов, то есть какие ссылки на ячейки абсолютные или относительные - используются. Если эта кнопка не активизирована, по умолчанию применяются абсолютные ссылки.
В процессе записи макроса в строке состояния окна программы появляется сообщение Recording (Запись) Таким образом программа напоминает пользователю, что все выполняемые им действия записываются макрорекордером.Теперь вам предстоит выполнить последовательность действий, которые должензаписать макрорекордер:
1) установить полноэкранное представление для окна рабочей книги;
2) отменить отображение сетки путем снятия флажка Gridlines (Сетка) на вкладке View (Вид) диалогового окна Options (Параметры);
3) выделить рабочий лист и задать для всех ячеек денежный формат;
4) установить вид и размер шрифта текста ячеек.
Выполнив перечисленные действия, вы должны остановить запись, и посколькузапись макроса завершена, сообщение Recording (Запись) из строки состояния исчезнет.
Панель инструментов для работы с макросами
В том случае, когда необходимо записать несколько макросов, целесообразно использовать специальную панель инструментов — Visual Basic (рис. 12.4), открытькоторую можно с помощью команды View > Toolbars > Visual Basic Открывает одноименное диалоговое окно, в которомможно задать уровень защиты от макровирусови указать надежных разработчиков макросовЗапускает редактор или активизирует его, если он ужезапущенВыводит на экран или удаляет с него одноименнуюпанель, которая необходима для вставки в документыприложения элементов управленияУстанавливает режим конструктора для текущегодокумента, а также выводит на экран панели ControlToolbox (Элементы управления) и Exit Design mode (Выход из режима конструктора). Данная кнопкадействует как выключатель. Но если вы воспользуетесьею для выхода из режима конструктора, панель ControlToolbox (Элементы управления) останется на экранеЗапускает редактор Microsoft Script Editor, которыйпонадобится для создания HTML- и XML-страницЧтобы начать запись первого макроса, нужно щелкнуть на кнопке Record Macro
(Записать макрос) панели инструментов Visual Basic. В результате на ее месте появится кнопка Stop Recording (Остановить запись). После завершения записи макроса и нажатия кнопки Stop Recording (Остановить запись) панель инструментовVisual Basic остается открытой, а пользователь может без промедления приступать к записи следующего макроса.
Запуск макроса
Перед запуском нового макроса текущий документ рекомендуется сохранить, так как в случае какого-либо сбоя во время записи результаты могут оказаться неожиданными. Если была допущена ошибка, макрос можно изменить и записать под тем же именем еще раз. Перед запуском макроса необходимо открыть тот рабочий лист, для которогодолжны быть выполнены записанные в макросе операции. В Excel существует несколько способов запуска макроса, но наиболее часто используемые только два из них. Во-первых, это можно сделать путем выбора имени макросаВо-вторых, макрос можно запустить посредством нажатия клавиши Ctrl в комбинации с клавишей, назначенной в поле Shortcut key (Сочетание клавиш) диалогового окна Record Macro (Запись макроса). Если комбинация для запуска макроса включает прописную букву, необходимо также нажать клавишу Shift. Клавишу CapsLock при запуске макроса использовать нельзя.
Работа с макросами, основы VBA
Редактирование макроса
При использовании макросов, записанных с помощью макрорекордера, выполнение операций не всегда происходит так, как хотелось бы. Поэтому часто возникает необходимость в редактировании текста макроса.
Просмотреть и отредактировать макрос позволяет команда Tools > Macro > Visual Basic
Editor (Сервис > Макрос ≫ Редактор Visual Basic), но можно также воспользоваться кнопкой Visual Basic Editor (Редактор Visual Basic) панели инструментовVisual Basic или комбинацией клавиш Alt+Fll. В любом случае после активизацииуказанных элементов открывается окно Microsoft Visual Basic. Правда, содержимоеVBA-модуля в этом окне пока не отображается. Чтобы начать редактирование, необходимо в окне Project (Проект) открыть папку Modules (Модули) и выбрать имя модуля
Итак, в настоящий момент мы находимся в режиме работы с VBA-модулем. Как
уже было отмечено, редактирование VBA-модулей выполняется в среде Visual Basicfor Applications, в которой пользователю предоставляются средства для разработки программ, анализа связей между объектами (VBA является объектно-ориентированным языком программирования), отладки программ и их организациив единый программный комплекс (проект).
В VBA текст макроса оформляется в виде процедуры Sub. Данная процедура соз-
дается на основе событий
(таковым может быть, например, изменение размера
Автоматизация рабочих процессов '_
359
окна или щелчок на кнопке) и методов.
Каждому событию поставлены в соответ-
ствие методы, которые задают необходимость выполнения определенных опера-
ций при наступлении данного события. Так, при щелчке на ярлычке рабочего
листа событием является изменение активного листа. Благодаря связанному с этим
событием методу лист, на ярлычке которого был произведен щелчок, активизи-
руется и отображается на переднем плане. В зависимости от типа активизирован-
ного листа изменяются и некоторые команды меню. В VBA пользователь может
задавать собственные события и ставить им в соответствие методы.
Как видите, макрос начинается с оператора Sub. За ним следует имя макроса, ко-
торое служит для идентификации такового. Если это имя изменить, соответст-
вующим образом изменится имя макроса в диалоговом окне Macro (Макрос). По-
сле имени идет текст макроса, который можно редактировать, а также снабжать
комментариями. В начале каждого комментария должен стоять символ апостро-
фа ('). Завершается макрос оператором End Sub.
360
Урон 12
• Работа с макросами, основы УВД
Часто при отладке макроса возникает необходимость поэтапно проследить за его
выполнением. Для этого следует воспользоваться специальным, пошаговым, ре-
жимом выполнения макроса.
Для активизации режима отладки в диалоговом окне Macro (Макрос) нужно на-
жать кнопку Step Into (Войти), в результате чего будет открыто окно Microsoft Visual
Basic (рис. 12.8), содержащее текст макроса. Здесь оператор, обрабатываемый
на очередном шаге, выделяется желтым цветом. Выполнить очередной шаг мак-
роса можно с помощью команды Step Into (Пошагово) меню Debug (Отладка) или
клавиши F8. Поскольку пошаговое выполнение может занять очень много време-
ни, в строках макроса следует установить точки останова. По достижении точки
останова обработка макроса прерывается, а на экране появляется окно отладки,
в котором можно указать, в каком режиме — пошаговом или обычном - должно
быть продолжено выполнение макроса.
Рис. 12.8.
Окно отладки макроса
Удаление макроса
1. Откройте книгу, содержащую макрос, который требуется удалить.
2. Выберите команду Tools >
Macro > Macros (Сервис > Макрос > Макросы).
3. В списке Macros in (Находится в) открывшегося окна Macro (Макрос)
укажите элемент This Workbook (Эта книга).
4. В списке Macro name (Имя макроса) выберите имя макроса, который нуж-
но удалить, и щелкните на кнопке Delete (Удалить).
Автоматизация рабочих процессов 361
Создание панелей инструментов
для запуска макросов
В Excel пользователь может создавать собственные панели инструментов. Для это-
го нужно выбрать в меню Tools (Сервис) или в контекстном меню панелей инст-
рументов команду Customize (Настройка), затем на вкладке Toolbars (Панели ин-
струментов) открывшегося окна Customize (Настройка) щелкнуть на кнопке New
(Создать), а когда появится диалоговое окно New Toolbar (Создание панели инст-
рументов), показанное на рис. 12.9, ввести имя создаваемой панели и щелкнуть
на кнопке ОК. В результате имя создавемой панели инструментов появится в спи-
ске панелей, который находится в окне Customize (Настройка).
Рис. 12.9.
Диалоговое окно New Toolbar
Для того чтобы вставить кнопки в новую панель инструментов, перейдите на
вкладку Commands (Команды) окна Customize (Настройка). На ней представлены
все доступные в Excel элементы панелей инструментов и все команды, которые
объединены в категории (рис. 12.10). Любую кнопку и команду можно сделать
элементом новой панели инструментов. В списке Categories (Категории) выберите
элемент Macros (Макросы), а затем из поля Commands (Команды) переместите на
новую панель инструментов кнопку Custom Button (Настраиваемая кнопка).
Г и л id,-,
гптгпч ч
',; /,
tot*ar'
≪tot a
titt^ory ≪i ≫н
г;,',>„•_•!.•'.
oi
,";,.,,,•, -,.
: ................... ....,r^.i
Name: acuslomButton ] -т
Copy Button Image ',.
Reset Button Image
&ht Button
Change Bjjtton Image
DeFuu.lt Style
lert OrJy (Always)
Рис. 12.10.
Вкладка Commands окна Customize
362
Урок 12
• Работа с макросами, основы УВД
Закрепить макрос за кнопкой можно после ее размещения на панели инструмен-
тов. Для этого необходимо сделать активным контекстное меню кнопки Custom
Button (Настраиваемая кнопка), задать команду Assign Macro (Назначить макрос)
и в открывшемся окне указать имя макроса (рис. 12.11), который нужно связать
с кнопкой панели инструментов.
-ITNs Workbook
Рис. 12.11.
Диалоговое окно Assign Macro
После этого контекстное меню данной кнопки следует вновь открыть и в поле
Name (Имя) ввести имя макроса, которое будет на ней отображаться. Таким обра-
зом можно создать панель инструментов, состоящую из кнопок, предназначенных
специально для запуска макросов.
Создание меню для запуска макросов
Excel позволяет удалять и вставлять новые меню в строку меню и новые команды
в уже действующие меню. Рассмотрим принцип создания нового меню для ко-
манд запуска макросов.
Чтобы вставить новое меню в строку меню, необходимо выполнить следующие
действия: открыть диалоговое окно Customize (Настройка), перейти на вкладку
Commands (Команды), выбрать там категорию New Menu (Новое меню) и, когда
в поле Commands (Команды) появится элемент New Menu (Новое меню), перемес-
тить его в строку меню (рис.12.12). Следует помнить, что строка меню в Excel яв-
ляется разновидностью панели инструментов, в которую также можно вставлять
элементы из окна Customize (Настройка).
Новому меню по умолчанию присваивается имя New Menu (Новое меню). Если вы
хотите изменить его, щелкните на меню правой кнопкой мыши (окно Customize
(Настройка) должно быть открытым) и введите новое имя в поле Name (Имя)
контекстного меню.
Автоматизация рабочих процессов 363
Рис. 12.12.
Создание нового меню
Теперь в меню можно добавлять команды. На вкладке Commands (Команды) окна
Customize (Настройка) выберите категорию Macros (Макросы), а в поле Commands
(Команды) — элемент Custom Menu Item (Настраиваемая команда меню) и перета-
щите его в новое меню. Чтобы связать команду меню с макросом, откройте кон-
текстное меню команды (окно Customize (Настройка) должно быть открыто) и вы-
зовите в нем команду Assing Macro (Назначить макрос). Затем, если это нужно, из-
мените имя команды меню. Аналогичным образом вставьте все необходимые ко-
манды вызова макросов.
|