2011-12-08 22 views
7

मैं Outlook में बनाई गई क्रमांकित सूची लेने और शीर्ष-स्तरीय सूची आइटमों के आधार पर इसे कुशल बनाने की कोशिश कर रहा हूं। दुर्भाग्यवश, सूची में हेरफेर करने का एकमात्र तरीका सूची पैराग्राफ प्रकार के माध्यम से है, जो सूची में प्रत्येक स्तर के लिए अलग-अलग पहुंच के बजाय सभी सूची आइटम (उप-आइटम समेत) को तोड़ देता है।वर्ड 2010 वीबीए - क्रमांकित सूचियों को मैनिपुलेट करना

क्या किसी ऑब्जेक्ट में, एक सूची आइटम, इसके सभी उप-आइटमों के साथ पहुंचने का कोई तरीका है?

धन्यवाद।

    :

    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

    एक) आइटम ख एक
    ख) मद
    ग) मद ग

  2. मद 2

    एक) आइटम एक
    ख) मद ख

  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 = 2 दूसरे स्तर के लिए उपयोग करने के लिए ListLevelNumber = 1 की हालत उपयोग कर सकते हैं, आदि

क्या किसी ऑब्जेक्ट में, एक सूची आइटम, इसके सभी उप-आइटमों के साथ पहुंचने का कोई तरीका है?

मैं वास्तव में वहाँ यह करने के लिए, जब तक आप इसे अपने आप को बनाने के प्रत्यावर्तन या कुछ (बच्चों की एक सरणी के साथ एक वस्तु बनाने का उपयोग कर एक शानदार तरीका है, और बच्चों की उसके अपने सरणी, आदि के साथ प्रत्येक बच्चे है नहीं लगता है ।)। मेरे पास यह कोड नहीं है, लेकिन उम्मीद है कि मैंने जो कोड पोस्ट किया है वह आपको पूरा करने देगा जो आप करना चाहते हैं- और यह बहुत आसान है।

इसके अलावा, ListFormat में कुछ अन्य सदस्य भी हैं जो उपयोगी हो सकते हैं यदि आप सूचियों के साथ बहुत कुछ कर रहे हैं- अधिक जानने के लिए ऑब्जेक्ट ब्राउज़र में खोदें।

+0

एमएस वर्ड में भी काम करने के लिए प्रकट होता है। – PerryJ

3

मुझे ListFormat.ListLevelNumber अविश्वसनीय पाया गया है।

मेरे पास एक दस्तावेज़ है जिसने मुझे किसी बुलेट सूची के साथ भेजा है जिसमें आइटमों में से एक के तहत घोंसला (स्तर 2) सूची है। नेस्टेड सूची में 3 सबिटैम होते हैं। केवल subitem 2 रिपोर्ट्स है कि यह ListLevelNumber 2 है। अन्य लोग ListLevelNumber = 1.

एक तरफ ध्यान दें, गलत सूची स्तर की रिपोर्ट करने वाले उपनिवेशों में ListFormat.ListString के स्तर 2 में उपयोग किए गए वर्ण पर सेट है सूची, ताकि आप दोनों की जांच करके इस मुद्दे के आसपास काम करने में सक्षम हो सकें।