用内容控制对象替换Word文档中的文本

时间:2018-12-03 12:25:32

标签: vba ms-word word-contentcontrol

我有很多文档的方括号内带有可变词,例如: [my_word] 我的代码已经找到了所有这些单词,我将它们另存为String。

现在,我需要一个函数以ContentControl元素替换此String。这可能吗?因为我首先需要生成一个元素,然后使用[my_word]更改里面的文本和它的标签。
任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

到目前为止,我的代码看起来像这样(现在可以用一个控制元素一次替换一个单词;我想替换宏中的所有内部。Word告诉我无法替换多个选择,因此我将不得不手动重新运行此宏mutliple时间。)

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

我还是不太确定如何在整个文档上执行此操作,而不必多次单击“运行宏”

EDIT(EDIT): 我解决了如果将来有人遇到相同的问题:

Sub ReplaceAllTags()
'
' ReplaceAllTags Macro
'
'
For i = 0 To ActiveDocument.Words.Count
    Selection.EscapeKey
    Application.Run MacroName:="ReplaceTags"
Next
End Sub

ReplaceTags()与上面的功能相同。