Московский государственный технический университет им. Н.Э. Баумана
Опубликован: 09.10.2009 | Доступ: свободный | Студентов: 6939 / 1941 | Оценка: 4.48 / 4.23 | Длительность: 26:31:00
Специальности: Менеджер
Лекция 23:

Безопасность и макросы

Уровень 3. Редактирование макросов

Просмотр текста макроса

Текст макроса можно просмотреть в окне редактора Microsoft Visual Basic.

  • В группе Код вкладки Разработчик нажмите кнопку Макросы ( рис. 8.40).
    Переход к просмотру текста макроса

    увеличить изображение
    Рис. 8.40. Переход к просмотру текста макроса
  • В окне Макросы ( рис. 8.33) выберите нужный макрос и нажмите кнопку Изменить.
  • Окно редактора Microsoft Visual Basic также можно открыть, нажав в группе Код вкладки Разработчик кнопку Visual Basic (см. рис. 8.40).
  • Текст макроса будет открыт в окне редактора Microsoft Visual Basic ( рис. 8.41).
    Текст макроса в окне Visual Basic

    увеличить изображение
    Рис. 8.41. Текст макроса в окне Visual Basic

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

Текст макроса начинается командой Sub.

Далее обычно следует имя макроса и описание, заданные в поле Описание окна Запись макроса (см. рис. 8.30). Эти данные носят описательный характер, они не исполняются при запуске макроса. Вся эта информация отображена шрифтом зеленого цвета.

Собственно текст макроса отображен шрифтом черного цвета, за исключением ключевых слов (специальных терминов Visual Basic), которые отображаются шрифтом синего цвета, и ошибок, которые отображаются красным цветом.

Текст макроса заканчивается командой End Sub.

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

Например, в команде Selection.Font.Name = "Arial"

  • Selection - объект (выделенное);
  • Font.Name - свойство (имя шрифта);
  • "Arial" - значение свойства (шрифт Arial).

Запись макроса протоколированием действий вносит в него много лишних команд.

Изменение макроса

Редактирование текста макроса можно производить непосредственным вводом команд с клавиатуры или вставкой команд из других макросов (объединением макросов).

Редактирование с использованием клавиатуры

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

При редактировании макроса следует изменять некоторые команды, которые при записи Microsoft Word понял излишне буквально. Например, при замене разрывов строк на знаки абзацев создается подпрограмма, в которой перечисляются все параметры замены:

Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
 .Text = "^l"
 .Replacement.Text = " ^p"
 .Forward = True
 .Wrap = wdFindContinue
 .Format = False
 .MatchCase = False
 .MatchWholeWord = False
 .MatchWildcards = False
 .MatchSoundsLike = False
 .MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll

После удаления ненужных команд и параметров можно оставить такую запись:

With Selection.Find
 .Text = "^l"
 .Replacement.Text = " ^p"
End With
Selection.Find.Execute Replace:=wdReplaceAll

Перед удалением какой-либо команды можно проверить, как макрос будет без нее работать. Для этого команду можно отключить. Для отключения команды поставьте курсор в строку этой команды или выделите несколько строк и нажмите кнопку Comment Block панели инструментов Edit ( рис. 8.42). Отключенная строка отображена шрифтом зеленого цвета. В начале строки стоит знак апострофа.

Отключение команды макроса

увеличить изображение
Рис. 8.42. Отключение команды макроса

Если макрос успешно работает и без отключенной команды ее можно удалить. В противном случае ее следует снова активизировать. Для этого следует поставить курсор в строку этой команды и нажать кнопку Uncomment Block панели инструментов Edit (см. рис. 8.42).

В процессе редактирования макроса можно пользоваться кнопками Undo (Отменить) и Redo (Вернуть) панели инструментов Standard.

Редактирование с использованием клавиатуры

В некоторых случаях редактирование макроса с использованием клавиатуры слишком трудоемко. Гораздо проще записать новый макрос, выполняющий необходимые действия, а потом объединить существующий макрос с новым.

Новый макрос записывается обычным порядком.

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

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

Обработка ошибок

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

Если выполнение макроса невозможно, будет выдано сообщение об ошибке ( рис. 8.43), в котором указан номер ошибки и приведен краткий комментарий. Комментарий может быть как на русском языке, так и на английском.

Сообщение об ошибке выполнения макроса

Рис. 8.43. Сообщение об ошибке выполнения макроса

Если нажать кнопку End выполнение макроса прекратится. Если нажать кнопку Help, запустится справочная система Microsoft Word и появится окно со справкой по этой ошибке. Если нажать кнопку Debug, откроется окно Visual Basic, в котором будет отмечена строка макроса, вызвавшая ошибку выполнения ( рис. 8.44).

Окно Visual Basic со строкой ошибки в макросе

увеличить изображение
Рис. 8.44. Окно Visual Basic со строкой ошибки в макросе

В зависимости от характера ошибки ее необходимо исправить или обойти.

Если ошибка вызвана неправильным редактированием макроса, в текст макроса следует внести исправления, а затем закрыть окно Visual Basic. В запросе на прекращение процесса отладки ( рис. 8.45), следует нажать кнопку ОК, а затем снова запустить макрос.

Запрос на остановку процесса отладки макроса

Рис. 8.45. Запрос на остановку процесса отладки макроса

Если же ошибка работы макроса связана с особенностями ситуации, то можно внести в макрос команды, позволяющие обойти эту ошибку.

Наиболее универсальная команда обхода ошибок в макросах:

On Error GoTo a

а - метка, к которой следует перейти при обнаружении ошибки.

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

a:

Команду On Error GoTo a можно ввести первой строкой макроса, для того чтобы она перехватывала все ошибки. Метку можно ввести перед той командой макроса, которая должна выполняться после ошибочной команды. Если при обнаружении ошибки следует прекратить выполнения макроса, то метку следует ввести перед строкой завершения работы макроса.