我正在尝试在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
a)项目a
b)项目b
c)项目c
第2项
a)项目a
b)项目b
第3项
a)项目a
答案 0 :(得分:3)
我发现ListFormat.ListLevelNumber不可靠。
我有一个文件,有人发给我一个项目符号列表,其中一个项目下有一个嵌套(第2级)列表。嵌套列表包含3个子项。只有子项2报告它是ListLevelNumber 2.其他人继续报告ListLevelNumber = 1.
另一方面,报告错误列表级别的子项将ListFormat.ListString设置为列表级别2中使用的字符,因此您可以通过选中这两个来解决此问题。
答案 1 :(得分: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
访问第二级列表等。
有没有办法在一个对象中访问列表项及其所有子项?
我真的不认为这是一个很好的方法,除非你自己使用递归或其他东西构建它(创建一个带有子数组的对象,每个子节点都有自己的子数组等)。我没有这个编码,但希望我发布的代码可以让你完成你想做的事情 - 而且它更简单。
此外,ListFormat
还有一些其他成员,如果你在对象浏览器中进行大量工作以了解更多信息,那么它们可能会非常有用。