【问题标题】:Replace text in word document with content control objects用内容控件对象替换 word 文档中的文本
【发布时间】:2019-05-04 18:02:16
【问题描述】:

我有很多文档在括号内带有可变词,如下所示: [my_word] 我的代码已经找到了所有这些单词,并将它们保存为字符串。

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

【问题讨论】:

  • docs.microsoft.com/en-us/office/vba/word/concepts/… 有添加内容控件的代码示例
  • 请向我们展示您用于查找这些条款的(最小)代码。保留 - 取决于您使用的代码 - 答案是:是的,应该是可能的。但更具体地说,我们确实需要查看代码。

标签: vba ms-word word-contentcontrol


【解决方案1】:

到目前为止,我的代码看起来像这样(现在可以一次用一个控制元素替换一个单词;我想替换宏内部的所有内容。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() 和上面的函数是一样的。

【讨论】:

    猜你喜欢
    • 2015-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-23
    • 1970-01-01
    相关资源
    最近更新 更多