[ главная ]   [ рейтинг статей ]   [ справочник радиолюбителя ]   [ новости мира ИТ ]



Ответов: 0
25-02-12 07:01







   Web - программирование
PHP


ASP






XML



CSS

SSI





   Программирование под ОС











   Web - технологии








   Базы Данных









   Графика






Данные




Программные руководства / Текстовые редакторы /

Пишем макрос в Word

Начну с примера.

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

Для программы, занимающей несколько листов, вручную выделять все комментарии утомительно. Так давайте напишем макрос!

Итак, начнем: меню Сервис - Макрос - Начать запись.

Делаем доступным макрос для всех документов и приступаем к записи нажав кнопку ОК.

Производим переход в начало файла - жмем 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://nech.tamb.ru/




Комментарии

jvatgt
30-07-2011   
1MB4UW , [url=http://jcicdlibdvau.com/]jcicdlibdvau[/url], [link=http://csvbbwdaljzg.com/]csvbbwdaljzg[/link], http://uxuclfwhrmmx.com/

tpemed
29-07-2011   
FaipBu <a href="http://teeqfhbmbmym.com/">teeqfhbmbmym</a>

uilpexg
27-07-2011   
DCqsaQ , [url=http://iupicvarrdnw.com/]iupicvarrdnw[/url], [link=http://wlzbxawnuzlo.com/]wlzbxawnuzlo[/link], http://pvyngrzdiwbf.com/

Jacey
26-07-2011   
Artlices like this really grease the shafts of knowledge.

 Ваш комментарий к данному материалу будет интересен нам и нашим читателям!



Последние статьи: Программные руководства / Текстовые редакторы /

Стандартные налоговые вычеты Excel
07-02-2010   

- В размере 3000 руб. за каждый месяц налогового периода. - В размере 500 руб. за каждый месяц налогового периода. - В размере 400 руб. за каждый месяц налогового периода... подробнее

Кол. просмотров: общее - 2759 сегодня - 0

Профессиональные налоговые вычеты Excel
07-02-2010   

На профессиональные налоговые вычеты имеют право следующие категории налогоплательщиков: - физические лица, осуществляющие предпринимательскую деятельность без образования юридического лица и зарегистрированные в качестве индивидуальных предпринимателей... подробнее

Кол. просмотров: общее - 2821 сегодня - 1

Имущественные налоговые вычеты Excel
07-02-2010   

Имущественные налоговые вычеты распространяются на две статьи доходов: - от реализации недвижимости и имущества; - от реализации ценных бумаг... подробнее

Кол. просмотров: общее - 2853 сегодня - 1

Социальные налоговые вычеты Excel
07-02-2010   

Социальные налоговые вычеты за налоговый период предоставляются на основании письменного заявления налогоплательщика при подаче им налоговой декларации в соответствующий орган. Структура социальных налоговых вычетов показана на рис. 8.3... подробнее

Кол. просмотров: общее - 2885 сегодня - 0

От долевого участия в организации (дивиденды) Excel
07-02-2010   

Сумма налога на дивиденды зависит от того, где их получает налогоплательщик. Если в РФ, то организация, начисляющая дивиденды, принимает на себя обязательства о начислении налога на эти дивиденды... подробнее

Кол. просмотров: общее - 2900 сегодня - 0



  WWW.COMPROG.RU - 2009-2012 | Designed and Powered by Zaipov Renat | Projects