Получить индекс конкретного управления контентом на основе идентификатора или заголовка - PullRequest
0 голосов
/ 21 декабря 2018

Я хотел бы получить индекс элемента управления содержимым слова через VBA с заданным заголовком без необходимости циклически перебирать все элементы управления содержимым в поисках заголовка.

Я знаю название элемента управления содержимым, которое мне бы хотелосьпоэтому для выбора я могу установить идентификатор этого конкретного элемента управления содержимым для переменной, например

a = ActiveDocument.SelectContentControlsByTitle("123").Item(1).ID

Теперь я хотел бы знать, что индекс этого элемента находится среди других элементов управления содержимым в документе (более 450 элементов управления содержимым в шаблоне файла), так что я могу ссылаться на индекс элемента управления содержимым как на переменную.

В терминах мирян я хотел бы что-то вроде "b = getIndexOfA (a)", чтобыЯ могу выполнить более поздний процесс, такой как:

for i=b to ActiveDocument.ContentControls.Count
    .....
next i

Я использую Word 2016 в Windows 10.

1 Ответ

0 голосов
/ 21 декабря 2018

Следующий подход работает только для объекта в теле документа, который является частью текста (в отличие от плавающего изображения).Получите Range для объекта, затем установите его отправную точку в начало документа.Подсчитайте все объекты этого типа в диапазоне:

Dim lIndexCC as Long
Dim cc as Word.ContentControl
Dim rng as Word.Range

Set cc = ActiveDocument.SelectContentControlsByTitle("123").Item(1)
Set rng = cc.Range
rng.Start = ActiveDocument.Content.Start
lIndexCC = rng.ContentControls.Count
Debug.Print lIndexCC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...