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. 项目1
  2. 项目2
  3. 项目3

通过与 '子项' 我的意思是像这样的东西列表:

  1. 清单项目1

    一)项的
    B)B项
    三)项C

  2. 项目2

    a)项目一个
    二)B项

  3. 项目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也有一些其他成员,如果您在列表中做了很多工作,可能会对您有所帮助,请在对象浏览器中进行深入了解以了解更多信息。

+0

似乎也在MS Word中工作。 – PerryJ

我发现ListFormat.ListLevelNumber是不可靠的。

我有一个文档有人给我发送了一个项目列表下有一个嵌套(级别2)列表的项目列表。嵌套列表包含3个子项目。只有子项2报告它是ListLevelNumber 2。其他报告继续报告ListLevelNumber = 1。

在附注上,报告错误列表级别的子项将ListFormat.ListString设置为在级别2中使用的字符清单,因此您可以通过检查两者来解决问题。