ListFormat.ListLevelNumber
- это то, что вы ищете. Вот некоторый код, который будет выводить уровень списка и текст каждого ListParagraph
в документе:
Sub listLevels()
Dim currentList As Range
Dim i, numLists As Integer
numLists = ActiveDocument.ListParagraphs.Count
For i = 1 To numLists
Set currentList = ActiveDocument.ListParagraphs(i).Range
MsgBox currentList.ListFormat.ListLevelNumber & " " & currentList.Text
Next
End Sub
Конечно, вы можете использовать условие ListLevelNumber = 1
для доступа только к спискам верхнего уровня, ListLevelNumber = 2
для второго уровня и т. Д.
Есть ли способ получить в одном объекте элемент списка вместе со всеми его подпунктами?
Я действительно не думаю, что есть отличный способ сделать это, если вы не создадите его самостоятельно, используя рекурсию или что-то еще (создайте объект с массивом дочерних элементов, и каждый дочерний элемент имеет свой собственный массив дочерних элементов и т. Д.). У меня нет этого кода, но, надеюсь, код, который я разместил, позволит вам выполнить то, что вы хотите сделать - и это намного проще.
Кроме того, ListFormat
также имеет некоторых других членов, которые могут быть полезны, если вы много работаете со списками - покопайтесь в браузере объектов, чтобы узнать больше.