如何替换内容控件中的文本

时间:2018-08-19 06:38:48

标签: vba ms-word

我已附上图片

enter image description here

在图像中,如何对“ 危险材料期刊”的内容使用查找/替换为“ 危险材料期刊,在“新闻标题”的内容控制中?

这是示例Word文档文件EMI_14381.docx

这是下面的代码

Sub SP_jt()

' ' SP_Vol Macro ' '

Application.Run MacroName:="MathTypeCommands.UIEnableDisable.UIUpdate"         
Selection.Range.ContentControls.Add (wdContentControlRichText) 
Selection.ParentContentControl.Title = "journal-title" 
Selection.ParentContentControl.Tag = "journal-title"

End Sub

1 个答案:

答案 0 :(得分:0)

以下代码段演示了如何处理内容控件并在其范围上执行“查找/替换”。

文档中的多个内容控件可以具有相同的名称和/或相同的标签。因此,不可能使用这些值之一作为索引来获得单个内容控件。而是,Word对象模型提供了SelectContentControlsByTitleSelectContentControlsByTag方法。它们返回内容控件的 array 数组,以便可以使用符合条件的所有内容控件。

如果只想使用一个(第一个,意味着唯一一个具有该标题或标签的),则使用.Item(1)属性,如示例中所示。拥有内容控件后,就可以获取其范围,并在范围上使用“查找/替换”。

Sub FindReplaceInContentControl()
    Dim doc As Word.Document
    Dim cc As Word.ContentControl
    Dim rngCC As Word.Range

    Set doc = ActiveDocument
    Set cc = doc.SelectContentControlsByTitle("journal-title").Item(1)
    Set rngCC = cc.Range
    With rngCC.Find
        .ClearFormatting
        .Text = ","
        .Replacement.Text = ""
        .Replacement.ClearFormatting
        .Forward = True
        .wrap = wdFindStop
        .Execute Replace:=wdReplaceOne
    End With
End Sub