2011-12-08 23 views
7

Outlookで作成された番号付きリストを取得し、トップレベルのリストアイテムに基づいて操作することを試みています。残念ながら、私がリストを操作するために見つけた唯一の方法は、リスト内の各レベルに対して異なるアクセス権を持たせる代わりに、すべてのリストアイテム(サブアイテムを含む)を均等に分割するListParagraphタイプです。Word 2010 VBA - 番号付きリストの操作

1つのオブジェクトで、リストアイテムとすべてのサブアイテムにアクセスする方法はありますか?

ありがとうございました。

    :私はこのような何かを意味する「1つのレベル」でリストによって

    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
'サブアイテム' 私はこのような何かを意味して一覧表示することで0


C

  1. リスト項目1

    a)の項目
    b)の項目
    C b)の項目

  2. 項2

    A)項目
    B)

  3. 項3

    a)の項目

答えて

2

ListFormat.ListLevelNumber B項目は、あなたが探しているものです。ここではいくつかのコードがあり、出力文書のリストレベルとすべてのListParagraphのテキストは以下となりますなどあなたはもちろんの第二のレベルのために、ListLevelNumber = 2を唯一トップレベルのリストにアクセスするためにListLevelNumber = 1の条件を使用することができます

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 

を、

リストアイテムとすべてのサブアイテムに1つのオブジェクトでアクセスする方法はありますか?

あなたが再帰や何かを使って自分で構築しない限り、私は実際にこれを行う素晴らしい方法はないと思います(子供の配列を持つオブジェクトを作成し、 )。私はこれをコード化しているわけではありませんが、私が投稿したコードでは、あなたがしたいことを達成できるようになり、はるかに簡単です。

また、ListFormatには、リストで多くのことを行う場合に便利なその他のメンバーがあります。詳細については、オブジェクトブラウザを参照してください。

+0

MS Wordでも動作するように見えます。 – PerryJ

3

私は、ListFormat.ListLevelNumberが信頼できないと判断しました。

私は誰かがアイテムの1つの下にネストされた(レベル2)リストを持つ箇条書きリストを送った文書を持っています。ネストされたリストには3つのサブアイテムが含まれます。サブリスト2のみがListLevelNumber 2であると報告します。他のサブリーダーはListLevelNumber = 1を報告し続けます。

不適切なリストレベルを報告するサブアイテムは、ListFormat.ListStringがレベル2で使用されている文字に設定されています。両方の項目をチェックすることで問題を回避することができます。

関連する問題