1

Тема: Одновременное выделение цветом разных слов.

Здравствуйте уважаемые форумчане!

Пожалуйста, подскажите, есть ли способ одновременно выделить несколько разных слов в одном тексте?

Например:

2

Re: Одновременное выделение цветом разных слов.

Например: "В лесу родилась елочка, в лесу она росла. Зимой и летом стройная, зеленая была".
Выделить цветом: была елочка и лесу росла стройная.

P.S. В макросах я 0, последний раз использовал в школе.
Заменить придется несколько сотен слов.
Я честно искал в интернете, искал и на этом форуме.
Заранее благодарю за любые ответы, очень надеюсь на Вашу помощь!

3

Re: Одновременное выделение цветом разных слов.

suxariks пишет:

Например: "В лесу родилась елочка, в лесу она росла. Зимой и летом стройная, зеленая была".
Выделить цветом: была елочка и лесу росла стройная.

P.S. В макросах я 0, последний раз использовал в школе.
Заменить придется несколько сотен слов.
Я честно искал в интернете, искал и на этом форуме.
Заранее благодарю за любые ответы, очень надеюсь на Вашу помощь!

Выделите курсором несколько нужных вам контекстов, удерживая нажатой клавишу Ctrl. Затем укажите цвет.

4

Re: Одновременное выделение цветом разных слов.

Спасибо Вам yshindin, но повторюсь: "заменить придется несколько сотен слов".
Вручную уйдет очень много времени и всего не углядишь.

5

Re: Одновременное выделение цветом разных слов.

suxariks пишет:

Спасибо Вам yshindin, но повторюсь: "заменить придется несколько сотен слов".
Вручную уйдет очень много времени и всего не углядишь.

Чтобы автоматизировать эту работу, нужно сформулировать яснее принцип, по которому должны выделяться слова. Иначе при любом раскладе это "ручная работа". Если бы, скажем все возможные для выделения в основном тексте слова были представлены в другом документе, то при таких условиях макрос можно было бы написать.

6

Re: Одновременное выделение цветом разных слов.

yshindin пишет:
suxariks пишет:

Спасибо Вам yshindin, но повторюсь: "заменить придется несколько сотен слов".
Вручную уйдет очень много времени и всего не углядишь.

Чтобы автоматизировать эту работу, нужно сформулировать яснее принцип, по которому должны выделяться слова. Иначе при любом раскладе это "ручная работа". Если бы, скажем все возможные для выделения в основном тексте слова были представлены в другом документе, то при таких условиях макрос можно было бы написать.

Есть такой документ! И все возможные для выделения в основном тексте слова уже выбраны и аккуратно вставлены в колонки.

7

Re: Одновременное выделение цветом разных слов.

suxariks пишет:

Есть такой документ! И все возможные для выделения в основном тексте слова уже выбраны и аккуратно вставлены в колонки.

Я набросал для вас макрос. Назовите документ с ключевыми словами как Dic.docx. В нем выделите все места, содержащие ключевые слова (выделять можно абзацами, ячейками таблиц и т.п.) и отметьте такие места закладками dic01, dic02 и т.д. Откройте оба документа: основной и ключевой (активным должен быть основной документ). Выполните макрос Mk_dic (это стартовый, он вызывает исполняющий макрос-подпрограмму MarkKeywords.Макрос собирает словарь из слов закладок ключевого документа, а затем размечает по словарю слова основного документа (если слово

8

Re: Одновременное выделение цветом разных слов.

suxariks пишет:

Есть такой документ! И все возможные для выделения в основном тексте слова уже выбраны и аккуратно вставлены в колонки.

Я набросал для вас макрос. Назовите документ с ключевыми словами как Dic.docx. В нем выделите все места, содержащие ключевые слова (выделять можно абзацами, ячейками таблиц и т.п.) и отметьте такие места закладками dic01, dic02 и т.д. Откройте оба документа: основной и ключевой (активным должен быть основной документ). Выполните макрос Mk_dic (это стартовый, он вызывает исполняющий макрос-подпрограмму MarkKeywords.
Макрос собирает словарь из слов закладок ключевого документа, а затем размечает по словарю слова основного документа (если слово "похоже" на слово из словаря).
Тексты макросов ниже.

Sub Mk_dic()
Call MarkKeywords("Dic.doc*", wdColorRed)
End Sub
Sub MarkKeywords(Keyw_Doc As String, keyw_highlight As Variant)
'Marks keywords in the current (main) document
Dim kw() As String
Dim Main_Document As String
Dim Keyw_Document As String
Dim errflag As Long
Dim kwdoc_found As Boolean
Dim iwrd As Long
Dim nwrd As Long
Dim word_ctr As Long
Dim wrd As Object
Dim cword As String

'1. Check for the keywords.doc file opened
Main_Document = ActiveDocument.name
kwdoc_found = False
For Each doc In Documents
    If UCase$(doc.name) Like UCase$(Keyw_Doc) Then
        kwdoc_found = True
        Keyw_Doc = doc.name
    End If
Next doc
If kwdoc_found <> True Then
   MsgBox Keyw_Doc & " file is not loaded"
   GoTo e_mark_keywords
End If

'2. Prepare the keywords array
Documents(Keyw_Doc).Activate
iwrd = 0
For Each bmk In Documents(Keyw_Doc).Bookmarks
    If bmk.name Like "dic*" Then
        For Each wrd In bmk.Range.Words
           If Not ((CStr(wrd) = Chr$(13)) Or (Trim(CStr(wrd)) = "")) Then
              iwrd = iwrd + 1
              ReDim Preserve kw(1 To iwrd)
              kw(iwrd) = LCase(Trim(CStr(wrd)))
           End If
        Next
    End If
Next
nwrd = iwrd

'3. Scan the main file and shade the matching keywords.
Documents(Main_Document).Activate
Selection.GoTo What:=wdGoToLine, Which:=wdGoToFirst
For Each wrd In Documents(Main_Document).Range.Words
    cword = LCase(CStr(Trim(wrd)))
    For iwrd = 1 To nwrd
        If cword Like "*" & kw(iwrd) & "*" Then
           wrd.Font.Color = keyw_highlight
        End If
    Next iwrd
Next

e_mark_keywords:
Selection.GoTo What:=wdGoToLine, Which:=wdGoToFirst
End Sub