Kev*_*ope 8 vba word-vba outlook-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
Run Code Online (Sandbox Code Playgroud)
通过"一级"列表,我的意思是这样的:
通过带有"子项"的列表,我的意思是这样的:
清单项目1
a)项目a
b)项目b
c)项目c
第2项
a)项目a
b)项目b
第3项
a)项目a
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
Run Code Online (Sandbox Code Playgroud)
当然,您可以使用 的条件ListLevelNumber = 1仅访问顶级列表、ListLevelNumber = 2第二级列表等。
有没有一种方法可以在一个对象中访问列表项及其所有子项?
我真的不认为有一个很好的方法来做到这一点,除非您使用递归或其他东西自己构建它(创建一个具有子数组的对象,并且每个子数组都有自己的子数组等)。我没有对此进行编码,但希望我发布的代码能让您完成您想做的事情 - 而且它要简单得多。
此外,ListFormat还有一些其他成员,如果您经常使用列表进行操作,这些成员可能会很有用 - 在对象浏览器中深入了解以了解更多信息。