2016-06-17 13 views
1

Мне нужно автоматизировать вставку комментариев в документ Word: поиск предопределенного набора слов (иногда строк слов и всех нечувствительных к регистру), каждый из которых Я добавляю предопределенный комментарий.Word VBA: поиск набора слов и вставка предопределенных комментариев

Есть два набора слов, с двумя целями:

  • Wordset 1: идентичный комментарий для каждого расположенного слова
  • Wordset 2: индивидуальные комментарии (я предлагаю новый текст, основанный на слове идентифицированного)

Я полуавтоматизировал это с помощью кода, который идентифицирует все идентифицированные слова и выделяет их, помогая мне в этом процессе (но мне все равно нужно вводить все комментарии вручную - и я также мог вводить комментарии - но только по одному слову за раз.) A s мои навыки VBA ограничены, мои попытки скомпилировать надежный макрос из бит другого кода с аналогичными целями, к сожалению, привели меня в никуда.

Ниже приведены биты кода, который я использовал.

Sub HighlightWordList() 

Dim range As range 
Dim i As Long 
Dim TargetList 

TargetList = Array("word1", "word2", "word3") 

For i = 0 To UBound(TargetList) 

Set range = ActiveDocument.range 

With range.Find 
.Text = TargetList(i) 
.Format = True 
.MatchCase = True 
.MatchWholeWord = False 
.MatchWildcards = False 
.MatchSoundsLike = False 
.MatchAllWordForms = False 

Do While .Execute(Forward:=True) = True 
range.HighlightColorIndex = wdYellow 

Loop 

End With 
Next 

End Sub 

Следующий код был в состоянии заставить меня вставить пузыри прямо

Sub CommentBubble() 
' 
' 
Dim range As range 
Set range = ActiveDocument.Content 

Do While range.Find.Execute("Word x") = True 
    ActiveDocument.Comments.Add range, "my comment to enter in the bubble" 
Loop 
End Sub 

Я пытался иметь процесс повторяется, делая, как показано ниже, но по причинам, я уверен, очевидны для многих из вас (и совершенно неизвестных мне) - эта стратегия провалилась, работая на «слово х», но не в состоянии функционировать в течение всех последующих слов:

Sub CommentBubble() 
' 
' 
Dim range As range 
Set range = ActiveDocument.Content 

Do While range.Find.Execute("Word x") = True 
    ActiveDocument.Comments.Add range, "my 1st comment to enter in the bubble" 
Loop 

Do While range.Find.Execute("Word y") = True 
    ActiveDocument.Comments.Add range, "my 2nd comment to enter in the bubble" 
Loop 

End Sub 

Я скомбинированы биты эти коды бесполезны. Любые идеи, которые помогут мне с одним словом?

Спасибо за помощь всем!

С уважением

ответ

0

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

Sub CommentBubble() 
    Dim range As range 
    Set range = ActiveDocument.Content 

    Do While range.Find.Execute("Word x") = True 
     ActiveDocument.Comments.Add range, "my 1st comment to enter in the bubble" 
    Loop 

    Set range = ActiveDocument.Content ' <---------------Add This. 

    Do While range.Find.Execute("Word y") = True 
     ActiveDocument.Comments.Add range, "my 2nd comment to enter in the bubble" 
    Loop 
End Sub 

Это должно сделать трюк для вас (он работает на моем конце). Если нет, дайте мне знать.

+0

Спасибо Джим! Работает как шарм! – Benoit