VBA: Выделить слова в Microsoft Word

Условие: Написать макрос для Word, который запрашивает слово и выделяет его каким-либо образом в тексте.

Алгоритм: пробежаться по всем словам в тексте, и если слово совпадает с заданным- применить к нему некоторые изменения.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Sub Выделение()
Dim Выделение As String
Выделение = InputBox("Введите слово для выделения", "Выделяем слова")
If Выделение = Empty Then Exit Sub
For Each i In ActiveDocument.Words()
With Selection.Find
  .Text = Выделение
  .Replacement.Text = ""
  .Forward = True
  .Wrap = wdFindContinue
  .Format = True
  .MatchCase = False
  .MatchWholeWord = True
  .MatchWildcards = False
  .MatchSoundsLike = False
  .MatchAllWordForms = False
End With
Selection.Find.Execute
If Not Selection.Font.ColorIndex = wdBlue Then
  Selection.Font.ColorIndex = wdBlue
  Selection.MoveRight Unit:=wdWord, Count:=1
Else
  MsgBox "Выделение закончено!"
Exit Sub
End If
Next i
End Sub
Sub Выделение()
Dim Выделение As String
Выделение = InputBox("Введите слово для выделения", "Выделяем слова")
If Выделение = Empty Then Exit Sub
For Each i In ActiveDocument.Words()
With Selection.Find
  .Text = Выделение
  .Replacement.Text = ""
  .Forward = True
  .Wrap = wdFindContinue
  .Format = True
  .MatchCase = False
  .MatchWholeWord = True
  .MatchWildcards = False
  .MatchSoundsLike = False
  .MatchAllWordForms = False
End With
Selection.Find.Execute
If Not Selection.Font.ColorIndex = wdBlue Then
  Selection.Font.ColorIndex = wdBlue
  Selection.MoveRight Unit:=wdWord, Count:=1
Else
  MsgBox "Выделение закончено!"
Exit Sub
End If
Next i
End Sub

Получается такое: говорим пользователю, а введи-ка нам слово для поиска. А он и вводит. Это слово пишется в переменную, которая называется «Выделение«. Далее проверка. Если пользователь решил ничего не вбивать — выйти. А дальше основной цикл, с помощью которого перебираются все слова документа с текстом из переменной. Далее исполняем поиск по заданным параметрам и начинаем выделять слова.

В этом примере слова будут подсвечиваться синеньким. Соответственно условие гласит, если слово не выделено, то… Выделить его синим и перейти к следующему слову в коллекции.

Когда-то да не выделенные слова закончатся. И тогда вывести сообщение: Выделение закончено!

Добавить комментарий