如何在书签之前添加内容控件?

时间:2018-10-17 10:28:55

标签: vba ms-word word-contentcontrol

我希望宏在书签之前添加内容控件。由于.Range.InsertBefore仅适用于字符串,因此我难以弄清“ before”部分的语法。

请给我一些指导,说明如何更改我的代码以使新的Content Conrols插入书签之前。

我当前用于插入内容控件的代码:

Sub Test()

    Dim objCC As ContentControl
          'it inserts Content control after bookmark, not before, how to change this part?
    Set objCC = ActiveDocument.ContentControls.Add(0, ActiveDocument.Bookmarks("VP_pav").Range)
    objCC.Title = "Test"

    End Sub

1 个答案:

答案 0 :(得分:1)

在字符流中,书签不是文本流中的实质“对象”,因此不可能在书签之前立即插入任何内容。插入位置必须从书签至少移回一个字符。

在内容控件之后直接拥有书签的唯一方法是删除并重新创建书签。这是一个例子。请注意使用Range对象来跟踪内容控件在哪里以及书签在哪里。本示例适用于“工字梁”书签:即一个位置而不是字符范围的书签。

Sub InsertCCbeforeBookmark()
    Dim bkm As Bookmark, sBookmarkName As String
    Dim rngBookmark As Word.Range, rngCC As Word.Range
    Dim objCC As ContentControl

    sBookmarkName = "VP_pav"
    Set bkm = ActiveDocument.Bookmarks(sBookmarkName)
    Set rngBookmark = bkm.Range
    Set rngCC = rngBookmark.Duplicate
    rngCC.Collapse wdCollapseStart
    Set objCC = ActiveDocument.Contentcontrols.Add(0, rngCC)
    rngBookmark.Start = objCC.Range.End
    rngBookmark.MoveStart wdCharacter, 1
    bkm.Delete
    ActiveDocument.Bookmarks.Add sBookmarkName, rngBookmark
    objCC.title = "Test"

End Sub