Мой код до сих пор выглядит следующим образом (сейчас можно заменить одно слово за раз элементом управления; я хотел бы заменить все внутри макроса. Word говорит мне, что невозможно заменить несколько вариантов выбора,поэтому мне пришлось бы повторно запускать этот макрос несколько раз вручную ..)
Sub ReplaceTags()
'
' ReplaceTags Macro
'
'
Selection.Find.ClearFormatting
With Selection.Find
.Text = "\<?*\>"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Selection.Find.Execute
Selection.Range.ContentControls.Add (wdContentControlText)
End Sub
РЕДАКТИРОВАТЬ: я немного поработал над своим кодом и нашел решение, чтобы заменить текст, который я ищу:
Sub ReplaceTags()
'
' ReplaceTags Macro
'
'
With Selection.Find
.ClearFormatting
.Text = "\<?*\>"
.Execute Forward:=True
.MatchWildcards = True
End With
If Selection.Find.Found = True Then
Selection.Range.ContentControls.Add (wdContentControlText)
Selection.ParentContentControl.Tag = Selection.Text
End If
End Sub
Тем не менее, я не совсем уверен, как это сделать со всем документом без необходимости многократно нажимать кнопку «запустить макрос».
РЕДАКТИРОВАТЬ (РЕДАКТИРОВАТЬ): я решил это.Если у кого-то возникнет такая же проблема в будущем:
Sub ReplaceAllTags()
'
' ReplaceAllTags Macro
'
'
For i = 0 To ActiveDocument.Words.Count
Selection.EscapeKey
Application.Run MacroName:="ReplaceTags"
Next
End Sub
ReplaceTags () - та же функция, что и выше.