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

Vba 如何在书签之前添加内容控件?,vba,ms-word,word-contentcontrol,Vba,Ms Word,Word Contentcontrol,我希望宏在书签之前添加内容控件。由于.Range.InsertBefore仅适用于字符串,我很难理解“before”部分的语法 请给我一些指示,如何改变我的代码,使新的内容控制插入书签之前 插入内容控件的当前代码: Sub Test() Dim objCC As ContentControl 'it inserts Content control after bookmark, not before, how to change this part? Set

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

请给我一些指示,如何改变我的代码,使新的内容控制插入书签之前

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

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

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

将书签直接放在内容控件之后的唯一方法是删除并重新创建书签。这里有一个例子。注意使用
Range
对象跟踪内容控件的位置和书签的位置。此示例适用于“I-beam”书签:书签是单个位置,而不是字符范围

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