Опубликован: 25.03.2009 | Уровень: для всех | Доступ: свободно | ВУЗ: Институт управления, бизнеса и права
Лекция 1:

Макрорекордер: начало автоматизации

Лекция 1: 12 || Лекция 2 >
Аннотация: Чтобы начать автоматизацию повседневных дел с помощью VBA, не нужно уметь программировать. Первые программы мы создадим, не написав ни единой строчки кода. Дело в том, что приложения Microsoft Office умеют создавать простые VBA-программы автоматически. Эти программы называются макросами.

1.1. Макрорекордер — универсальный помощник

Для автоматического создания макросов служит макрорекордер. Мы рассмотрим работу с ним на примере Microsoft Office Word 2007. Если отвлечься от VBA и говорить об обычной работе в Word, то окажется, что с помощью макрорекордера можно записывать действия, которые мы выполняем в программе. Например, записывается ввод и удаление текста, нажатие на кнопки вкладок, форматирование текста и так далее.

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

Алгоритм работы с макрорекордером выглядит так:

  1. Включить запись макроса, настроив некоторые параметры;
  2. Выполнить действия, которые вы хотели бы автоматизировать;
  3. Остановить запись;
  4. Использовать записанный макрос по необходимости.

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

Лучший способ освоить макрорекордер — это попытаться самостоятельно записать макрос. Этим мы сейчас и займемся.

1.2.Форматирование текста в MS Word

Примечание. Если при попытке выполнить примеры этого курса вы, столкнетесь с ошибкой "Can't find project or library", перейдите в редактор Visual Basic, выполните команду Tools > References, в появившемся окне найдите те элементы списка, которые помечены как MISSING, снимите флаги напротив их имен, и если в списке имеются свежие версии отсутствующих библиотек, отметьте их, и нажмите ОК. После этого пример будет запускаться.

Can't find project or library

Can't find project or library
Tools-References

Tools-References

01-01-Автоматическое форматирование.docm — пример к п. 1.2.

Запишем в Microsoft Word макрос, который по нажатию комбинации клавиш форматирует выделенный текст определенным образом.

1.2.1. Задание

Создать макрос в Microsoft Word, который автоматически форматирует выделенный текст следующим образом:

  • Шрифт: Times New Roman, 14-й, курсивный
  • Цвет шрифта: красный

Назначить вызов макроса по нажатию комбинации клавиш Alt + Ctrl + Shift + A и по нажатию настраиваемой кнопки.

1.2.2. Решение

Выделим первый участок текста, который нужно отформатировать.

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

Выберем вкладку ленты Вид и нажмем на ней направленную вниз треугольную стрелку под надписью Макросы (рис. 1.1.).

Начало записи макроса

Рис. 1.1. Начало записи макроса

В открывшемся меню нам нужна команда Запись макроса.

Появится окно для настройки свойств макроса (рис. 1.2.). Рассмотрим поля этого диалога.

Имя макроса: в это поле нужно ввести имя макроса. Имена макросов должны начинаться с буквы, не должны содержать пробелов. Желательно давать макросам какие-нибудь осмысленные имена. Например, Формат_Times_Красный.

Назначить макрос кнопке: диалоговое окно назначения макроса настраиваемой кнопке.

Назначить макрос клавишам: диалоговое окно назначения макроса сочетанию клавиш на клавиатуре.

Окно настройки свойств макроса

Рис. 1.2. Окно настройки свойств макроса

В поле Макрос доступен для надо выбрать место сохранения макроса, которое определяет его доступность для различных документов. По умолчанию здесь выбран параметр Всех документов ( Normal.dotm ).

Normal.dotm —это общий шаблон, доступный для всех документов Microsoft Word. Если макрос будет сохранен в Normal.dotm — вы сможете запустить его из любого Word-документа. Не следует сохранять все записываемые вами макросы в Normal.dotm. Делайте это лишь тогда, когда вы точно уверены в том, что макрос понадобится вам в различных документах. Мы выберем в этом поле значение Документ 1 (документ). Именно так здесь называются еще не сохраненные документы. Выбрав этот пункт, мы сохраняем макрос в текущем документе, то есть сможем вызывать макрос лишь из этого документа.

В поле Описание содержится описание макроса. Вы вполне можете оставить его пустым.

Кнопка OK начинает запись макроса. Но до начала записи воспользуемся кнопкой Назначить макрос клавишам. Появится окно настройки комбинации клавиш для запуска макроса (рис. 1.3.).

Чтобы назначить макросу сочетание клавиш, нужно установить курсор в поле Новое сочетание клавиш и нажать нужное сочетание на клавиатуре. В случае, если это сочетание не назначено ранее для быстрого вызова каких-либо команд, под полем Текущие сочетания вы увидите надпись Текущее назначение: [нет]. Если вы увидите здесь что-нибудь другое — лучше всего поискать свободное сочетание. Иначе вы можете столкнуться с неожиданным поведением знакомых вам горячих клавиш.

Настройка сочетания клавиш для запуска макроса

Рис. 1.3. Настройка сочетания клавиш для запуска макроса

В поле Сохранить изменения в выберем Документ 1 — то есть наш документ, который мы в данный момент редактируем. По умолчанию здесь установлен уже знакомый вам Normal.dotm. Сохранять привязку сочетаний клавиш к макросам в Normal.dotm следует лишь в том случае, если вы, во-первых, на предыдущем шаге сохранили макрос в Normal.dotm, а во-вторых, хотите, чтобы данное сочетание работало во всех остальных документах MS Word, а не только в текущем документе.

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

В процессе записи макроса указатель мыши дополняется значком с изображением кассеты. Щелчок правой кнопкой не действует. Поэтому нам нужно отформатировать текст, пользуясь вкладками ленты Microsoft Word. Так и поступим. Настроим необходимые параметры форматирования, снова перейдем на вкладку Вид и нажмем там на кнопку Остановить запись (рис. 1.4.)

Остановка записи макроса

Рис. 1.4. Остановка записи макроса

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

После записи макроса самое время его протестировать. Для этого выделим текст и нажмем Ctrl + Alt + Shift + A. Если все сделано правильно — текст будет отформатирован.

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

Для этого нажмите кнопку настройки панели быстрого доступа (она находится справа от панели) и в появившемся меню выберите пункт Другие команды. Появится окно для настройки команд Microsoft Word (рис. 1.5.).

В списке Выбрать команды из выберите Макросы.

В поле, которое расположено ниже, появятся ссылки на доступные макросы. Выделите нужный и нажмите на кнопку Добавить>>. Ссылка на него появится в поле Настройка панели быстрого доступа. В списке настройки этого поля выберем документ, который мы в данный момент редактируем — тем самым мы внесем изменения лишь в панель быстрого доступа этого документа.

Назначение макроса кнопке панели быстрого доступа

увеличить изображение
Рис. 1.5. Назначение макроса кнопке панели быстрого доступа

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

Здесь вам нужно выбрать понравившийся значок для кнопки макроса и ввести в поле Отображаемое имя текст, который будет появляться при наведении на кнопку вызова макроса указателя мыши. Вот, что получилось в итоге (рис. 1.6.).

Кнопка для быстрого вызова макроса на панели быстрого запуска

Рис. 1.6. Кнопка для быстрого вызова макроса на панели быстрого запуска
Сохраняя файл Microsoft Word, содержащий макросы, обязательно убедитесь в том, что вы сохраняете его в формате .docm (Документ Word с поддержкой макросов ). Дело в том, что используемый по умолчанию формат .docx (Документ Word) не поддерживает макросы. Если вы сохраните документ с макросами в таком формате, результаты работы будут утеряны.

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

Чтобы использовать макросы — свои и тем более созданные другими — вам, возможно, понадобится изменить настройки безопасности Microsoft Office.

Лекция 1: 12 || Лекция 2 >
Евгений Ушаков
Евгений Ушаков

Добрый день! Поясните, пожалуйста, 3000 р. стоит документ об окончании курса. Если он не нужен, то можно учиться бесплатно?

Александр Новиков
Александр Новиков

Добрый день! Очень нужен справочник по объектам VBA c описание их методов и свойств.

Кто-нибудь знает, где можно приобрести?

(Он конечно есть в VBA - Object browser, но не очень удобный)