Word 2010 VBA - 操作编号列表
我试图在Outlook中创建一个编号列表,并根据顶级列表项操纵它。不幸的是,我发现操纵列表的唯一方法是通过ListParagraph类型,它可以平分所有列表项目(包括子项目),而不是对列表中的每个级别进行不同的访问。Word 2010 VBA - 操作编号列表
有没有办法在一个对象中访问列表项及其所有子项?
谢谢。
这里就是我目前使用,这对于列表工作正常,只有一个级别的项目:
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
一)项的
B)B项
三)项C -
项目2
a)项目一个
二)B项 -
项目3
一)项的
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
也有一些其他成员,如果您在列表中做了很多工作,可能会对您有所帮助,请在对象浏览器中进行深入了解以了解更多信息。
我发现ListFormat.ListLevelNumber是不可靠的。
我有一个文档有人给我发送了一个项目列表下有一个嵌套(级别2)列表的项目列表。嵌套列表包含3个子项目。只有子项2报告它是ListLevelNumber 2。其他报告继续报告ListLevelNumber = 1。
在附注上,报告错误列表级别的子项将ListFormat.ListString设置为在级别2中使用的字符清单,因此您可以通过检查两者来解决问题。
似乎也在MS Word中工作。 – PerryJ