Зарегистрироваться
Восстановить пароль
FAQ по входу

Автоматическая расстановка тегов форматирования в Microsoft Word

  • Добавлена пользователем
  • Отредактирована
В данном руководстве рассматривается методика создания макроса, который позволит автоматически расставлять теги в тексте в соответствии с его форматированием в редакторе Microsoft Word 2003. Т.е. если текст выделен жирным шрифтом, то этот фрагмент будет автоматически «одет» в теги {b}{/b} (скобки будут квадратными). Программа работает для выделения шрифта жирным и курсивом, а также для надстрочных и подстрочных символов.
Создание макроса
Откройте форму создания макросов: Сервис → Макрос → Макросы (или Alt + F8). В появившемся окне в поле «Имя» введите: MarkUpB и нажмите на кнопку «Создать». Откроется редактор кода Visual Basic, в который нужно вставить следующий текст:
Call FndNRplClrFrmttng
Selection.Find.Font.Bold = True
Call FndNRpl("", "[*b]^&[/b*]", 1, wdFindContinue, 1, 0, 0, 0, 0, wdReplaceAll)
End Sub
Sub FndNRplClrFrmttng()
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
End Sub
Sub FndNRpl(FndTxt, RplTxt, Frwrd, Wrp, Frmt, Cs, WW, AWF, Wldcrds, Exct)
With Selection.Find
.Text = FndTxt
.Replacement.Text = RplTxt
.Forward = Frwrd
.Wrap = Wrp
.Format = Frmt
.MatchCase = Cs
.MatchWholeWord = WW
.MatchAllWordForms = AWF
.MatchWildcards = Wldcrds
End With
Selection.Find.Execute Replace:=Exct
End Sub

Sub MarkUpI()
Call FndNRplaClrFrmttng
Selection.Find.Font.Italic = True
Call FndNRpla("", "[*i]^&[/i*]", 1, wdFindContinue, 1, 0, 0, 0, 0, wdReplaceAll)
End Sub
Sub FndNRplaClrFrmttng()
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
End Sub
Sub FndNRpla(FndTxt, RplTxt, Frwrd, Wrp, Frmt, Cs, WW, AWF, Wldcrds, Exct)
With Selection.Find
.Text = FndTxt
.Replacement.Text = RplTxt
.Forward = Frwrd
.Wrap = Wrp
.Format = Frmt
.MatchCase = Cs
.MatchWholeWord = WW
.MatchAllWordForms = AWF
.MatchWildcards = Wldcrds
End With
Selection.Find.Execute Replace:=Exct
End Sub

Sub MarkUpSub()
Call FndNRplacClrFrmttng
Selection.Find.Font.Subscript = True
Call FndNRplac("", "[*sub]^&[/sub*]", 1, wdFindContinue, 1, 0, 0, 0, 0, wdReplaceAll)
End Sub
Sub FndNRplacClrFrmttng()
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
End Sub
Sub FndNRplac(FndTxt, RplTxt, Frwrd, Wrp, Frmt, Cs, WW, AWF, Wldcrds, Exct)
With Selection.Find
.Text = FndTxt
.Replacement.Text = RplTxt
.Forward = Frwrd
.Wrap = Wrp
.Format = Frmt
.MatchCase = Cs
.MatchWholeWord = WW
.MatchAllWordForms = AWF
.MatchWildcards = Wldcrds
End With
Selection.Find.Execute Replace:=Exct
End Sub

Sub MarkUpSup()
Call FndNRplaceClrFrmttng
Selection.Find.Font.Superscript = True
Call FndNRplace("", "[*sup]^&[/sup*]", 1, wdFindContinue, 1, 0, 0, 0, 0, wdReplaceAll)
End Sub
Sub FndNRplaceClrFrmttng()
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
End Sub
Sub FndNRplace(FndTxt, RplTxt, Frwrd, Wrp, Frmt, Cs, WW, AWF, Wldcrds, Exct)
With Selection.Find
.Text = FndTxt
.Replacement.Text = RplTxt
.Forward = Frwrd
.Wrap = Wrp
.Format = Frmt
.MatchCase = Cs
.MatchWholeWord = WW
.MatchAllWordForms = AWF
.MatchWildcards = Wldcrds
End With
Selection.Find.Execute Replace:=Exct
и обязательно удалить символы *, сохранить его и закрыть окно редактора. Если все сделано правильно, то в форме создания макросов должны присутствовать:
FndNRplacClrFrmttng
FndNRplaceClrFrmttng
FndNRplaClrFrmttng
FndNRplClrFrmttng
MarkUpB
MarkUpI
MarkUpSub
MarkUpSup
Запуск и использование
MarkUpB отвечает за расстановку тегов для текста, выделенного жирным шрифтом, MarkUpI – для текста, выделенного курсивом, MarkUpSub – для подстрочных символов и MarkUpSup – для надстрочных символов.
Эти команды можно запускать из меню создания макросов, выбором соответствующей строчки и нажатием кнопки «Выполнить». Также можно задать клавиатурную комбинацию для запуска – выбрать: Сервис → Настройка и нажать кнопку «Клавиатура». В появившемся окне «Настройка клавиатуры» выбрать категорию «Макросы», а рядом – имя команды. В строке «Новое сочетание клавиш» указать нужное вам сочетание, после чего нажать кнопку «Назначить».
Макрос расставляет теги по всему документу сразу и его следует запускать после того, как внесена вся необходимая разметка.
Надеюсь, что данное руководство оказалось для Вас полезным, успехов!

Комментарии

Спасибо, Роман, за инструкцию. Но может уже пора обновить информацию. Ведь уже был preview Office 2013...
Сам юзаю 2003 :-D поэтому про него и написал. Старый конь борозды не испортит!
Думаю, что код не должен отличаться для разных версий, тут главное - рассказать принцип.
Может и так...
А разрешите поинтересоваться: почему не хотите обновляться до 2007, 2010 или 2013?
Интерфейс уж больно отличается, а переучиваться нет времени. Мне в основном требуется Excel для расчетов, в которых не так-то легко ориентироваться и не хочется отвлекаться на тонкости программы. Вот пройдет защита и тогда - может быть.
Очень удобно сделан интерфейс. Поверьте, ради удобства работы стоить переучить. Мне было ужасно непривычно когда поставил 2007. Но теперь я не знаю какой интерфейс лучше этого...
Попробуйте. Я думаю не пожалеете.
Отлично, спасибо большое.
А можете подсказать, как помимо всего перечисленного, автоматически вставлять раскраску текста, а так же вставлять в начало абзаца звуковые фрагменты в формате *.wave?
К сожалению вряд ли, выцепил этот скрипт на каком-то форуме, где он мог выделять только жирный текст, как мог доработал и честно удивлен, что вообще работает :-)
Могу только подсказать, что если найти поисковый признак для шрифта каждого цвета, например:
Selection.Find.Font.Superscript = True, где Superscript ищет надстрочные знаки
то нужно вставить в конец макроса дополнительно 3 блока кода (см. выше весь код разбит на 4 блока) для каждого из которых изменить имя в первой строке (например, MarkUpRed), во второй строке изменить конструкцию FndNRpl... хотя бы на одну букву (и далее во всем блоке). В итоге в форме создания макросов должны прибавиться 3 MarkUp конструкции и 3 FndNRpl... ClrFrmttng.
Уверен, что все это можно сделать гораздо проще и красивее, но как пока не выяснил.
В этом разделе нет комментариев.