Статьи из блога

Поиск и подсвечивание одинаковых слов в документе

Вопрос от Александра:

Не могли бы вы подсказать. можно ли в Word XP сделать так, чтобы при двойном клике на любом слове в тексте, слова, похожие на него, высвечивались бы по всему документу. А потом, чтобы при очередном двойном клике все обратно бы гасло? Мне приходится достаточно много работать с текстом, править стилистику и подобной функции очень очень не хватает. Приходится постоянно лезть в поиск, менять его настройки и каждый раз прописывать нужное слово, бегая затем по всему документу. Очень неудобно...

Александр, увы, по двойному клику можно выделить только текущее слово, но никак не совершить дополнительные действия с текстом.

Возможно, вам подойдет следующий макрос, позволяющий искать в тексте документа выделенное слово и подсвечивать найденные вхождения текущим цветом. То есть, вы выделяете интересующее вас слово и запускаете макрос (например, с помощью кнопки на панели инструментов). Макрос раскрасит текущим цветом все найденные слова.

К сожалению, просто выделить найденные слова редактор с помощью VBA не позволяет (по-крайней мере, специалисты так прокомментировали). Существуют определенные ограничения...

Вот код макроса:

Sub selectWord()
'Подсвечивание цветом найденных слов
Dim rTmp As Range
Set rTmp = ActiveDocument.Range
With rTmp.Find
   .Text = Selection.Text
   .Replacement.Text = ""
   .Replacement.Highlight = True
   .Execute Replace:=wdReplaceAll
End With
End Sub

Неудобство этого макроса в том, что он подсвечивает цветом найденные слова. И для того, чтобы убрать цветовое выделение, нужно либо выделить все и убрать выделение цветом (кнопка на панели инструментов), либо использовать похожий макрос:

Sub unSelectWord()
'Снятие выделение цветом
With Selection.Find
    .ClearFormatting
    .Highlight = True
    .Replacement.ClearFormatting
    .Replacement.Highlight = False
    .Text = ""
    .Replacement.Text = ""
    .Wrap = wdFindContinue
    .Format = True
    .Execute Replace:=wdReplaceAll
End With
End Sub

Если вы не знаете, как подключить к документу и применить этот макрос, изучите следующие заметки с сайта:

Создание макроса из готового кода

Автоматическая запись макроса

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru rutvit.ru myspace.com technorati.com digg.com friendfeed.com pikabu.ru blogger.com liveinternet.ru livejournal.ru memori.ru google.com bobrdobr.ru mister-wong.ru yahoo.com yandex.ru del.icio.us

Еще записи по вопросам использования Microsoft Word:

Комментариев: 4

  1. равшан
    23.12.2008 в 08:46 | #1

    убрать цветовое выделение можно проще

    ActiveDocument.Content.HighlightColorIndex = wdNoHighlight

  2. Дмитрий Мацкевич
    24.12.2008 в 13:12 | #2

    Есть одна идея, которая позволит решить задачу

    Нужно создать новый стиль.

    И присвоить стиль всем найденным словам

    А потом выделить все вхождения в этот стиль

  3. Алексей
    13.01.2009 в 16:12 | #3

    Попробуйте утилиту NotePad++ если совсем невмоготу.

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

  4. Стрелыч
    18.05.2011 в 15:20 | #4

    Очень дельные макросы, этого достаточно. Спасибо знатокам.

Оставьте комментарий!

(обязательно)

^ Наверх