Как добавить Контент Контроля перед закладкой? - PullRequest
0 голосов
/ 17 октября 2018

Я хочу, чтобы макрос добавил Content Control перед закладкой.У меня проблемы с определением синтаксиса для части "before", так как .Range.InsertBefore работает только со строкой.

Пожалуйста, дайте мне несколько указаний о том, как изменить мой код, чтобы новые Content Conrols были вставлены перед закладкой.

Мой текущий код для вставки Content Control:

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 голосов
/ 17 октября 2018

Закладки не являются существенными "объектами" в текстовом потоке, как символ, поэтому невозможно вставить что-либо непосредственно перед закладкой.Положение вставки должно быть перемещено как минимум на один символ назад от закладки.

Единственный способ получить закладку сразу после элемента управления контентом - удалить и заново создать закладку.Вот пример.Обратите внимание на использование 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...