Полезные макросы для Ворда -> SEO программы для веб-мастера -> VBA примеры в Microsoft Word

Макросы в Microsoft Word

Нередко простановка HTML тегов в статье занимает почти столько же времени, сколько ее написание. Особенно часто такая проблема возникает со статьями со сложной версткой, включающей множество заголовков, списков, цитат и стилей.

Заметно облегчить работу по подготовке текстов к публикации на web-сайте помогут макросы Word, которые могут автоматизировать любую задачу. Для написания такого макроса требуется знание языка программирования Visual Basic for Applications (VBA), встроенного не только в линейку программных пакетов от MicroSoft, но и многие другие приложения. Однако, благодаря тому, что VBA представляет собой упрощенную версию Visual Basic, начать писать простейшие скрипты может любой пользователь.

Кроме того, упростить задачу по написанию VBA макроса поможет возможность записи всех действий пользователя, которые автоматически преобразуются в программный код. Таким образом, чтобы создать простейший макрос, достаточно:

Остановка записи

Кликнув по пункту меню Вид –> Макросы –> Запись макроса, вы откроете окно со список всех имеющихся у вас макросов и сможете запустить их, отредактировать или удалить.

Расстановка тегов абзаца <P> в Word при помощи VBA макроса

Предварительная простановка тегов

в тексте перед его размещением требуется при работе со многими CMS. Далеко не все встроенные в web-движки редакторы могут автоматически опознать абзацы в статье и автоматически вставить туда тексты. Кроме того, нередко разбивку текста HTML-тегами требуют и от копирайтеров, чтобы размещение статьи занимало у заказчика как можно меньше времени.

Самый простой способ автоматизировать вставку HTML-тега в Word – это использование опции автозамены (окошко «Найти и заменить»), вызываемой сочетанием клавиш Ctrl+H.

Вставляем в строку «Найти» сочетание ^p, а в строку «Заменить на» </p>^p<p> и жмем на кнопку «Заменить все». Word автоматически проставит необходимые HTML-теги в тексте.

Замена абзацев на HTML-теги

Чтобы перевести данное действие в макрос, запустим его запись перед выполнением всех действий.

  1. Включаем запись макроса.
  2. Выполняем замену абзацев на HTML-теги в тексте при помощи опции «Заменить все».
  3. Останавливаем запись.

Теперь, чтобы проставить тег <P> в статье, вам будет достаточно нажать единственную кнопку запуска макроса.

Готовый код (помимо простановки тегов, он изменяет шрифт текста на Times New Roman и устанавливает размер 11):

Sub P()
'
'
'
Selection.WholeStory
Selection.Font.Name="TimesNewRoman"
Selection.Font.Size=11
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
WithSelection.Find
.Text="^p"
.Replacement.Text="</p>^p<p>"
.Forward=True
.Wrap=wdFindAsk
.Format=False
.MatchCase=False
.MatchWholeWord=False
.MatchWildcards=False
.MatchSoundsLike=False
.MatchAllWordForms=False
EndWith
Selection.Find.ExecuteReplace:=wdReplaceAll
Selection.HomeKeyUnit:=wdStory
Selection.TypeTextText:="<p>"
Application.Browser.Next
Selection.EndKeyUnit:=wdStory
Selection.TypeBackspace
Selection.TypeBackspace
Selection.TypeBackspace
Selection.TypeBackspace
End Sub

Учтите, что если в конце вашего текста есть много лишних абзацев, то данный VBA скрипт обязательно заменит их на HTML-теги, поэтому обязательно проверяйте то, как выглядит конец статьи, перед ее непосредственной публикацией на сайте.

Как видите, код интуитивно понятный, и многие команды VBA имеют говорящее название, указывающее на их функцию:

Команда Selection.TypeBackspace обозначение удаление одного символа, стоящего впереди курсора. Она необходима, так как в случае выполнения замены абзацев на HTML-теги

в конце всегда будет находиться лишний открывающий тег <P>.

Продолжим писать наш макрос для «Ворда». Пусть он обрамляет тегами <b></b> или <strong></strong> или <span class="bolder"></span> текст, выделенный жирным.

Сделать это при помощи автозамены можно так.

В поле «Найти» вставляем текст (<*>). В пункте «Формат» выбираем Шрифт –> Полужирный. Ставим галочку в пункте «Подстановочные знаки». В поле «Заменить на» пишем <b>\1</b>. Нажимаем «Заменить все».

Замена жирного текста в Ворде

У такой опции есть один недостаток: программа расставит обрамляющие HTML-теги не возле вокруг всего «куска» жирного текста, а вокруг каждого слова, следовательно, итоговый код будет очень грязный.

Лишние HTML-теги

Чтобы исправить эту ошибку, просто заменим </b> <b> на пробел.

Удаляем лишние теги

Итоговый код (на примере замены на <span class="bolder"></span>):

Sub B()
'
'
'
Selection.Find.ClearFormatting
Selection.Find.Font.Bold=True
Selection.Find.Replacement.ClearFormatting
WithSelection.Find
.Text="(<*>)"
<span class=""bolder"">\1</span>
.Forward=True
.Wrap=wdFindContinue
.Format=True
.MatchCase=False
.MatchWholeWord=False
.MatchAllWordForms=False
.MatchSoundsLike=False
.MatchWildcards=True
EndWith
Selection.Find.ExecuteReplace:=wdReplaceAll
WithSelection.Find
.Text = "</span><span class=""bolder"">"
.Replacement.Text=""
.Forward=True
.Wrap=wdFindContinue
.Format=False
.MatchCase=False
.MatchWholeWord=False
.MatchWildcards=False
.MatchSoundsLike=False
.MatchAllWordForms=False
EndWith
Selection.Find.ExecuteReplace:=wdReplaceAll
End Sub

Двойные кавычки в коде – это не опечатка, так как именно таким образом осуществляется экранирование кавычек в VBA-скриптах.

Аналогичным способом вы можете дополнить макрос, например, обрамляя курсив тегами <i></i> или <blockquote></blockquote>.

Автоматическая простановка тегов заголовков

Чтобы автоматически расставить заголовки H1, H2, H3, H4, H5 и H6, необходимо задать для них размер шрифта, отличный от остального текста. Например, если вы пишите статью 12 размером, можно выделять заголовки 16 размером. Тогда опция автозамены будет выглядеть так:

Простановка тегов H1

Затем заменяем лишние «</h2> <h2>».

Макрос будет выглядеть следующим образом:

Selection.Find.ClearFormatting
Selection.Find.Font.Size=18
Selection.Find.Replacement.ClearFormatting
WithSelection.Find
.Text="(<*>)"
.Replacement.Text="<h2>\1</h2>"
.Forward=True
.Wrap=wdFindContinue
.Format=True
.MatchCase=False
.MatchWholeWord=False
.MatchAllWordForms=False
.MatchSoundsLike=False
.MatchWildcards=True
EndWith
Selection.Find.ExecuteReplace:=wdReplaceAll
Selection.Find.ClearFormatting
Selection.Find.Font.Size=16
Selection.Find.Replacement.ClearFormatting
WithSelection.Find
.Text="</h2><h2>"
.Replacement.Text=""
.Forward=True
.Wrap=wdFindContinue
.Format=True
.MatchCase=False
.MatchWholeWord=False
.MatchWildcards=False
.MatchSoundsLike=False
.MatchAllWordForms=False
EndWith
Selection.Find.ExecuteReplace:=wdReplaceAll
EndSub

Используя приведенные примеры, вы можете создавать собственные макросы, форматируя текст, как вам удобно, что позволит ускорить работу по подготовке тексте перед размещением на сайте.


Меню сайта

Макросы в Microsoft Word
Макросы в Microsoft Word