Заменить текст в текстовом документе объектами управления контентом - PullRequest
0 голосов
/ 03 декабря 2018

У меня много документов с переменными словами в квадратных скобках, например: [my_word] Мой код уже находит все эти слова, и я сохраняю их как строку.

Теперь мне нужна функция для замены этой строки элементом ContentControl.Это возможно?Поскольку сначала мне нужно сгенерировать элемент, а затем изменить текст внутри него и его тег с помощью [my_word].
Любая помощь приветствуется.

1 Ответ

0 голосов
/ 05 декабря 2018

Мой код до сих пор выглядит следующим образом (сейчас можно заменить одно слово за раз элементом управления; я хотел бы заменить все внутри макроса. 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 () - та же функция, что и выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...