Word 2010 VBA-управление нумерованными списками
Я пытаюсь взять нумерованный список, созданный в Outlook, и управлять им на основе элементов списка верхнего уровня. К сожалению, единственный способ, которым я нашел манипулировать списком, - это тип ListParagraph, который разбивает все элементы списка (включая подпункты) одинаково, вместо того, чтобы иметь различный доступ для каждого уровня в списке.
есть ли способ получить доступ в одном объекте к элементу списка вместе со всеми его подпунктами?
спасибо.
вот что В настоящее время я использую, что отлично работает для списков только с одним уровнем элементов:
While i <= oMeetingWordDoc.Lists(1).ListParagraphs.Count
Set oRange = oMeetingWordDoc.Lists(1).ListParagraphs(i).Range
*Perform actions with oRange
i = i + 1
wend
по спискам с "одним уровнем" я имею в виду что-то вроде этого:
- пункт 1
- пункт 2
- пункт 3
списки с подпунктами-я имею в виду что-то вроде этого:
-
элемент списка 1
a) пункт a
b) пункт b
с) пункт c -
пункт 2
a) пункт a
b) пункт b -
пункт 3
a) пункт a
2 ответов
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
для второго уровня, etc.
есть ли способ получить доступ в одном объекте к элементу списка вместе со всеми его подпунктами?
Я не думаю, что есть отличный способ сделать это, если вы строите его вы используете рекурсию или что-то еще (создайте объект с массивом детей, и каждый ребенок с его собственным массивом детей и т. д.). Я не закодировал это, но надеюсь, что код, который я разместил, позволит вам выполнить то, что вы хотите сделать, - и это намного проще.
и ListFormat
также есть некоторые другие члены, которые могут быть полезны, если вы делаете много со списками - копаться в браузере объектов, чтобы узнать больше.
Я нашел ListFormat.ListLevelNumber недостоверной.
У меня есть документ, который кто-то послал мне с маркированным списком, который имеет вложенный (Уровень 2) Список под одним из элементов. Вложенный список содержит 3 подпозиции. Только подпункт 2 сообщает, что это ListLevelNumber 2. Остальные продолжают сообщать ListLevelNumber = 1.
на боковой ноте подэлементы, которые сообщают о неправильном уровне списка, имеют ListFormat.ListString устанавливается на символ, используемый на уровне 2 список, поэтому вы можете обойти проблему, проверив оба.