2011-12-08 68 views
7

我試圖在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

    一)項的

回答

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也有一些其他成員,如果您在列表中做了很多工作,可能會對您有所幫助,請在對象瀏覽器中進行深入瞭解以瞭解更多信息。

+0

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

3

我發現ListFormat.ListLevelNumber是不可靠的。

我有一個文檔有人給我發送了一個項目列表下有一個嵌套(級別2)列表的項目列表。嵌套列表包含3個子項目。只有子項2報告它是ListLevelNumber 2。其他報告繼續報告ListLevelNumber = 1。

在附註上,報告錯誤列表級別的子項將ListFormat.ListString設置爲在級別2中使用的字符清單,因此您可以通過檢查兩者來解決問題。