1.1. Макрорекордер — универсальный помощник
Для автоматического создания макросов служит макрорекордер. Мы рассмотрим работу с ним на примере Microsoft Office Word 2007. Если отвлечься от VBA и говорить об обычной работе в Word, то окажется, что с помощью макрорекордера можно записывать действия, которые мы выполняем в программе. Например, записывается ввод и удаление текста, нажатие на кнопки вкладок, форматирование текста и так далее.
Однажды мне нужно было отформатировать довольно большой документ в кратчайшие сроки. А именно — выделить особыми стилями некоторые слова. Всего этих стилей было четыре, а это значит, что наиболее доступный метод офисной автоматизации — средство Формат по образцу — помогло бы не слишком сильно. Ручное форматирование (или создание новых стилей) так же казалось слишком медленным. Но на помощь пришли макросы, созданные с помощью макрорекордера. Назначив форматирование каждым из стилей собственному сочетанию клавиш, я значительно ускорил работу. А именно — правой рукой управлял мышью, перемещаясь по тексту и выделяя нужные слова, а левой нажимал необходимые сочетания клавиш.
Алгоритм работы с макрорекордером выглядит так:
Включить запись макроса, настроив некоторые параметры;
Выполнить действия, которые вы хотели бы автоматизировать;
Остановить запись;
Использовать записанный макрос по необходимости.
Макрорекордер, помимо написания макросов, поможет вам лучше изучить возможности VBA и тонкости объектных моделей приложений Office (мы поговорим о них ниже). Например, вы не знаете точно, как именно реализовать то или иное действие программно, но знаете, как это делается вручную. Просто запишите макрос с нужными вам действиями, а потом откройте его в редакторе VBA. Вы сможете проанализировать полученный код, а возможно и включить его фрагменты в свое приложение.
Лучший способ освоить макрорекордер — это попытаться самостоятельно записать макрос. Этим мы сейчас и займемся.
1.2.Форматирование текста в MS Word
Примечание. Если при попытке выполнить примеры этого курса вы, столкнетесь с ошибкой "Can't find project or library", перейдите в редактор Visual Basic, выполните команду Tools > References, в появившемся окне найдите те элементы списка, которые помечены как MISSING, снимите флаги напротив их имен, и если в списке имеются свежие версии отсутствующих библиотек, отметьте их, и нажмите ОК. После этого пример будет запускаться.

[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.3. Макросы и безопасность
Microsoft Office снабжен собственной системой безопасности, основная задача которой — противодействие проникновению макровирусов — вредоносных программ на языке VBA.
Макровирусы — это основная проблема, которую породил язык программирования, встроенный в офисные программы. Безопасность работы с макросами сводится к очень простому правилу: не следует разрешать выполнение макросов, если вы не знаете точно, для чего нужны эти макросы.
Если вы открываете документ, который содержит подозрительный, с точки зрения системы, макрос, при настройках безопасности по умолчанию этот макрос блокируется. В Microsoft Word выводится такое сообщение (рис. 1.7.).
(рис 1.7) Предупреждение системы безопасности Если нажать на кнопку Параметры, которая находится в правой части панели сообщений, появится окно настройки свойств макроса. С помощью этого окна мы можем либо разрешить выполнение макросов в открытом документе, выбрав пункт Включить это содержимое, либо запретить, выбрав Установить защиту от неизвестного содержимого.
Для настройки системы безопасности в Microsoft Word нажмите на кнопку Microsoft Office, далее — на кнопку Параметры Word. В левой части появившегося окна выберите пункт Центр управления безопасностью. На странице центра управления безопасностью нажмите кнопку Параметры центра управления безопасностью. Появится окно настройки параметров макросов (рис. 1.8.).
Практика показывает, что при интенсивном использовании собственных макросов, удобнее и безопаснее всего использовать пункт, установленный по умолчанию — Отключить все макросы с уведомлением. Даже если сообщения системы безопасности кажутся вам слишком назойливыми — не стоит поддаваться искушению и активировать пункт Включить все макросы. Ведь так вы ставите вашу систему под угрозу. Даже используя антивирусное ПО, нельзя забывать о потенциальной опасности макросов.
(рис 1.8) Центр управления безопасностью: настройка безопасности макросов Особый интерес представляет пункт Отключить все макросы кроме макросов с цифровой подписью. Активировав его, вы сможете спокойно запускать макросы, которые вы создали и подписали сами.
Подробности о цифровой подписи вы найдете во второй главе — там, где мы будем знакомиться с редактором VBA.
Теперь, когда мы обсудили безопасность макросов, давайте поговорим о макросах в Microsoft Excel.
1.4. Копирование данных в MS Excel
01-02-Автоматическое копирование.xlsm — пример к п. 1.4.
Процесс создания макросов в MS Excel очень похож на создание макросов в MS Word. Но есть здесь и свои тонкости. Мы создадим макрос, который по нажатию комбинации клавиш копирует значения выделенных пользователем ячеек в другие ячейки.
1.4.1. Задание
Создать макрос в Microsoft Excel, который предназначен для копирования выделенной строки из одного листа (пусть это будет некий прайс-лист) в текущую строку (начиная с выделенной ячейки) другого листа книги Excel. После работы макроса на экране должен быть отображен лист, с которого осуществлялось копирование.
Назначить вызов макроса по нажатию комбинации клавиш Ctrl + Й
Это задание можно рассматривать как создание автоматической "записной книжки" емкостью в одну запись.
1.4.2. Решение
Перед записью макроса выделим ячейки, из которых будем копировать данные. Далее перейдем на вкладку Вид и запустим с нее запись макроса (рис. 1.9.).
(рис 1.9) Начало записи макроса в MS Excel Настроить быстрый вызов макроса можно в том же окне, где задается имя макроса и место сохранения. Имя Excel- макросов подчиняется тем же законам, что и в MS Word, а в качестве горячих клавиш предлагается использовать клавишу в комбинации с Ctrl.
После начала записи щелкнем правой кнопкой мыши по выделенной области и выберем в появившемся меню пункт Копировать. Перейдем на лист Записная книжка и вставим скопированное туда командой Вставить с вкладки Главная. Далее – вернемся на лист Price и остановим запись.
Сохраняя книгу Microsoft Excel, содержащую макросы, убедитесь в том, что сохраняете ее в формате "Книга Excel с поддержкой макросов", то есть итоговый файл имеет расширение .xlsm.
Если макрос MS Excel понадобится вам не только в одном документе — сохраните его в Личной книге макросов — эта опция доступна в окне записи макроса при выборе места сохранения.
Наш макрос работает. Но скажите, много ли от него пользы? "Записная книжка" емкостью в одну запись (ведь при копировании новых данных, старые попросту затираются) может найти практическое применение, но оно очень ограничено.
Для того, чтобы пользоваться возможностями приложений на полную мощность, не обойтись без полноценного программирования.
1.5. Управление макросами
Вкладка ленты Вид в Microsoft Word и Microsoft Excel содержит кнопку Макросы. Она расположена над раскрывающимся меню, которым мы пользовались до сих пор. Воспользуемся ею. Откройте один из документов MS Word, содержащий макросы, и нажмите на эту кнопку. Появится окно Макрос (рис. 1.10.), которое предназначено для управления макросами.
(рис 1.10) Окно управления макросами в MS Word В данном случае в окне Макрос отображается список макросов из открытого документа. Чтобы посмотреть макросы, находящиеся в других местах (например, в Normal.dotm ), воспользуйтесь списком Макросы из.
Имя выделенного макроса (это тот самый макрос, который мы записали выше) отображается в строке Имя. Именно с этим макросом мы можем совершать различные действия в данном окне. В частности, здесь доступны следующие варианты:
Выполнить — выполняет макрос. Вместо того, чтобы пользоваться кнопкой быстрого вызова макроса или настраиваемой комбинацией клавиш, для выполнения макроса можно воспользоваться этой кнопкой. Это удобно для запуска макросов, которые используются очень редко.
Изменить — нажав на эту кнопку, вы откроете редактор Visual Basic, который позволяет изменять макросы и создавать собственные программы.
Создать — наберите в строке Имя желаемое имя нового макроса и нажмите на эту кнопку — система создаст новый пустой макрос и откроет его в редакторе.
Удалить — удаление макроса.
1.6. Выводы
Теперь вы можете создавать простые макросы и автоматизировать с их помощью некоторые операции. Но, думаю, вы уже чувствуете, что вам остался буквально один шаг от макрорекордера к самостоятельному созданию макросов. Предлагаю сделать этот шаг в следующей лекции.