मेरा परिदृश्य यह है कि मैं Word doc1 से कुछ सामग्री को कॉपी और साफ़ करना चाहता हूं और doc2 में स्वच्छता सामग्री (नई असाइन की गई शैलियों के साथ) को संग्रहीत करना चाहता हूं। मुझे पता है कि पैराग्राफ पर कैसे लूप करना है, जो मैं चाहता हूं उसे पहचानें, और उन्हें doc2 में कॉपी करें और वहां नई शैलियों को कैसे असाइन करें।

मैं doc1.Tables संग्रह और कॉपी टेबल पर भी लूप कर सकता हूं।

लेकिन मैं यह नहीं समझ सकता कि doc1 तालिकाओं को doc2 में उपयुक्त स्थान पर कैसे रखा जाए। मैं इस तरह एक लूप का उपयोग करना पसंद करूंगा जो पैराग्राफ और तालिकाओं की सापेक्ष स्थिति को सुसंगत रखता है:

Foreach (object o in doc1) 
   if (o.type = paragraph) then
      if (I like the paragraph) then
         copy the paragraph to doc2
      endif
   else if (o.type = table) then
      if (I like the table for copying) then
         copy the table to doc2
      end if
   endif
next

लेकिन मुझे नहीं पता कि वीबीए में वह लूप स्टाइल (ऑब्जेक्ट्स पर लूपिंग) संभव है या उचित है। मुझे इसका कोई उदाहरण नहीं मिल रहा है। किसी भी अन्य दृष्टिकोण के लिए किसी तालिका को दस्तावेज़ में अनुच्छेदों के अनुक्रम में किसी स्थिति, बुकमार्क, श्रेणी, या पाठ के साथ संबद्ध करने के लिए किसी तरह की आवश्यकता होती है। लेकिन चूंकि मैं वर्तमान में केवल doc1 पाठ का हिस्सा कॉपी कर रहा हूं, इसलिए मैं आसानी से कॉपी नहीं कर सकता जो कुछ भी टेबल के लिए लंगर डाले हुए हैं।

मैं लगभग doc1 से doc2 की "संपूर्ण कहानी" की प्रतिलिपि बनाने और फिर उन हिस्सों को हटाने के लिए हूं जिनकी मुझे आवश्यकता नहीं है और उन हिस्सों को पुनर्स्थापित करना है जिनकी मुझे आवश्यकता है, सभी सीटू में।

क्या doc1 से doc2 तक क्रमिक रूप से चीजों (पैराग्राफ, टेबल, इमेज आदि) को कॉपी करने के लिए ऊपर दिखाए गए लूप के प्रकार का उपयोग करना संभव है? यदि हां, तो वस्तु परीक्षण कोड कैसा दिखता है? (if o.type is type.paragraph)? क्या मुझे भी उस दृष्टिकोण की कोशिश करनी चाहिए, या यह समय की बर्बादी है? शुक्रिया

0
Kevin 18 मार्च 2020, 02:27

1 उत्तर

सबसे बढ़िया उत्तर

यदि आप अनुच्छेदों को लूप कर रहे हैं, तो जांचें कि क्या अनुच्छेद किसी तालिका में है। जहां तक ​​तालिकाओं का संबंध है, यह आपको चीजों को क्रम में करने देगा

Foreach (object o in doc1) 
   if (o.type = paragraph) then
      if (paragraph.Range.Information(wdWithinTable) Then
         do something with the entire table
      elseif (I like the paragraph) then
         copy the paragraph to doc2
      endif
next

हालांकि, ध्यान दें कि ऑब्जेक्ट मॉडल का उपयोग करके सभी संभव वर्ड ऑब्जेक्ट को हैंडल करने का वास्तव में कोई विश्वसनीय तरीका नहीं है। विशेष रूप से, टेक्स्ट रैप (इन-लाइन के विपरीत) के साथ स्वरूपित ग्राफिकल ऑब्जेक्ट बहुत जटिल हैं।

दस्तावेज़ सामग्री के माध्यम से "चीजों" के क्रम में काम करने का अधिक विश्वसनीय तरीका वर्ड ओपन एक्सएमएल फ़ाइल प्रारूप का लाभ उठाना है, जहां वास्तविक अंतर्निहित सामग्री उपलब्ध है।

0
Cindy Meister 21 मार्च 2020, 10:19