我有许多带有括号内可变词的文档,如下所示:
[my_word]
我的代码已经找到了所有这些词,我将它们保存为字符串。
现在我需要一个函数来用 ContentControl 元素替换这个字符串。这可能吗?因为我首先需要生成一个元素,然后改变里面的文字和它的标签,都用[my_word]
.
任何帮助表示赞赏。
我有许多带有括号内可变词的文档,如下所示:
[my_word]
我的代码已经找到了所有这些词,我将它们保存为字符串。
现在我需要一个函数来用 ContentControl 元素替换这个字符串。这可能吗?因为我首先需要生成一个元素,然后改变里面的文字和它的标签,都用[my_word]
.
任何帮助表示赞赏。
到目前为止,我的代码看起来像这样(现在可以一次用一个控制元素替换一个单词;我想替换宏内部的所有内容。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() 与上面的函数相同。