如何在书签前添加内容控件?
How to add Content Control before bookmark?
我希望宏在书签前添加内容控件。我无法弄清楚 "before" 部分的语法,因为 .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
书签在文本流中并不重要"objects",就像字符一样,因此不可能在书签之前立即插入任何内容。插入位置必须从书签至少向后移动一个字符。
在内容控件之后直接拥有书签的唯一方法是删除并重新创建书签。这是一个例子。请注意使用 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
我希望宏在书签前添加内容控件。我无法弄清楚 "before" 部分的语法,因为 .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
书签在文本流中并不重要"objects",就像字符一样,因此不可能在书签之前立即插入任何内容。插入位置必须从书签至少向后移动一个字符。
在内容控件之后直接拥有书签的唯一方法是删除并重新创建书签。这是一个例子。请注意使用 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