【问题标题】:How to add Content Control before bookmark?如何在书签前添加内容控件?
【发布时间】:2019-03-22 00:08:05
【问题描述】:

我希望宏在书签之前添加内容控制。我无法弄清楚“之前”部分的语法,因为.Range.InsertBefore 仅适用于字符串。

请给我一些指导如何更改我的代码以在书签之前插入新的内容控制。

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

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

【问题讨论】:

    标签: vba ms-word word-contentcontrol


    【解决方案1】:

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

    在内容控件之后直接拥有书签的唯一方法是删除并重新创建书签。这是一个例子。请注意使用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
    

    【讨论】:

      猜你喜欢
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 2019-08-08
      • 1970-01-01
      • 2011-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多