|
Пишем макрос в Word'e.Начну с примера. Мне, как человеку занимающемся иногда программированием, требуется распечатать исходный текст программы, да не просто, а красиво. Например, хочу выделить в тексте программы комментарии курсивом. Для программы, занимающей несколько листов, вручную выделять все комментарии утомительно. Так давайте напишем макрос! Итак, начнем: меню Сервис - Макрос - Начать запись. Делаем доступным макрос для всех документов и приступаем к записи нажав кнопку ОК. Производим переход в начало файла - жмем Cntrl + Home. Вызываем меню Найти и заменить, вводим текст для поиска "{" и жмем Найти. На первом найденном символе закрываем окно поиска. Далее, держа нажатой клавишу Shift, стрелками курсора выделяем текст комментария включая символ "}". После этого делаем начертание выделенного текста курсивом. Останавливаем запись макроса. Теперь идем в редактор Microsoft Visual Basic (Сервис - Макрос - Редактор Visual Basic). Находим наш макрос. Он имеет следующий вид:
Sub Макрос3()
' ' Макрос3 Макрос ' Макрос записан 14.10.2004 ' Selection.HomeKey Unit:=wdStory Selection.Find.ClearFormatting With Selection.Find .Text = "{" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Selection.MoveRight Unit:=wdCharacter, Count:=14, Extend:=wdExtend Selection.Font.Italic = wdToggle End Sub Удалив лишнее получим следующий текст макроса:
Sub Макрос3()
' ' Макрос3 Макрос ' Макрос записан 14.10.2004 ' Selection.HomeKey Unit:=wdStory Selection.Find.ClearFormatting Selection.Find.Text = "{" Selection.Find.Execute Selection.MoveRight Unit:=wdCharacter, Count:=14, Extend:=wdExtend Selection.Font.Italic = wdToggle End Sub Теперь добавим цикл по символам для нахождения "}" и выделим необходимое число символов для форматирования в начертание курсивом:
Sub Макрос3()
' ' Макрос3 Макрос ' Макрос записан 14.10.2004 ' Selection.HomeKey Unit:=wdStory Selection.Find.ClearFormatting Selection.Find.Text = "{" Selection.Find.Execute i = 0 While Selection.Text <> "}" Selection.MoveRight Unit:=wdCharacter, Count:=1 i = i + 1 Wend Selection.MoveRight Unit:=wdCharacter, Count:=1 i = i + 1 Selection.MoveLeft Unit:=wdCharacter, Count:=i, Extend:=wdExtend Selection.Font.Italic = True Selection.MoveRight Unit:=wdCharacter, Count:=1 End Sub Осталось добавить цикл по всему документу:
Sub Макрос3()
' ' Макрос3 Макрос ' Макрос записан 14.10.2004 ' Selection.HomeKey Unit:=wdStory Selection.Find.ClearFormatting Selection.Find.Text = "{" While Selection.Find.Execute=True i = 0 While Selection.Text <> "}" Selection.MoveRight Unit:=wdCharacter, Count:=1 i = i + 1 Wend Selection.MoveRight Unit:=wdCharacter, Count:=1 i = i + 1 Selection.MoveLeft Unit:=wdCharacter, Count:=i, Extend:=wdExtend Selection.Font.Italic = True Selection.MoveRight Unit:=wdCharacter, Count:=1 Wend End Sub На этом все. Макрос готов к работе. Для комментариев, распространяющихся до конца строки (например "//" в начале строки), алгоритм действий аналогичен, приведу лишь текст макроса:
Sub Макрос4()
' ' Макрос4 Макрос ' Макрос записан 14.10.2004 ' Selection.HomeKey Unit:=wdStory Selection.Find.ClearFormatting Selection.Find.Text = "//" While Selection.Find.Execute = True Selection.EndKey Unit:=wdLine, Extend:=wdExtend Selection.Font.Italic = True Selection.MoveRight Unit:=wdCharacter, Count:=1 Wend End Sub |
Рекламный блок
|
|
Хостинг http://www.tamb.ru
|