/ / Office इंटरऑप के माध्यम से सी # से एक्सेल में पूर्ववत स्टैक तक कैसे पहुंचे? - सी #, एक्सेल, एमएस-वर्ड, ऑफिस-इंटरऑप

Office इंटरऑप के माध्यम से सी # से एक्सेल में पूर्ववत स्टैक तक कैसे पहुंचे? - सी #, एक्सेल, एमएस-वर्ड, ऑफिस-इंटरऑप

मैं एक सी # ऐप बना रहा हूं जिसके साथ बातचीत करने की आवश्यकता हैऑफिस इंटरऑप के माध्यम से एक एक्सेल स्प्रेडशीट। मैं पूर्ण पूर्ववत स्टैक तक पहुंच प्राप्त करना चाहता हूं, इसलिए मैं वर्कशीट में बदलावों की एक श्रृंखला बना सकता हूं और फिर आवश्यक होने पर उन्हें एक बार वापस रोल कर सकता हूं। मुझे लगता है कि इंटरऑप असेंबली में वर्ड डॉक्यूमेंट ऑब्जेक्ट में अंडो रिकॉर्ड और कुछ है अन्य niceties, एक पूर्ववत समारोह सहित। उदाहरण के लिए, मैं एकाधिक क्रियाओं को पूर्ववत करने के लिए पैरामीटर के साथ Microsoft.Office.Interop.Word._Document.Undo () को कॉल कर सकता हूं। दूसरी ओर एक्सेल की पूर्ववत सामग्री, अधिक सीमित दिखती है । निश्चित रूप से, वहाँ माइक्रोसॉफ्ट.ऑफिस.इंटरोप.एक्ससेल._एप्लिकेशंस.इंडो () है, लेकिन यह केवल एक ही क्रिया गहराई से चला जाता है, और अगर फिर से बुलाया जाता है तो स्टैक को गहराई से नीचे जाने के बजाय "रेडो" करता है।

मुझे कोड ऑनलाइन मिला है जहां वीबीए डेवलपर्स ने कोड किया थाExcel के लिए अपने स्वयं के पूर्ववत इतिहास क्योंकि वांछित कार्यक्षमता प्राप्त करने का यही एकमात्र तरीका था। मुझे सी # के लिए ऐसा कुछ नहीं दिख रहा है, हालांकि क्या वर्ड के इंटरऑप पूर्ववत एक्सेल में काम करने के तरीके की नकल करने का कोई तरीका है?

उत्तर:

जवाब के लिए 3 № 1

हां, एक्सेल के लिए वर्ड isn "के लिए क्या सच है। शायद क्योंकि बहुत से लोग वर्ड वीबीए लिखते हैं :)। यह देखो जॉन वॉकेनबाक पेज एक्सेल वीबीए (और इंटरऑप) में क्या संभव है। यहां उनके विवरण का हिस्सा है:

अपने subroutines के प्रभाव को पूर्ववत करने के प्रभावस्वचालित नहीं है। आपका subroutine पिछले राज्य को स्टोर करने की आवश्यकता होगी ताकि इसे बहाल किया जा सके यदि उपयोगकर्ता पूर्ववत आदेश संपादित करें का चयन करें। आप यह कैसे करेंगे अलग-अलग होंगे, subroutine क्या करता है के आधार पर। चरम मामलों में, आप कर सकते हैं एक संपूर्ण वर्कशीट को बचाने की जरूरत है। यदि आपका सबराउटिन एक सीमा को संशोधित करता है, उदाहरण के लिए, आपको केवल उस सीमा की सामग्री को सहेजने की आवश्यकता है।

संपादित करें:

वहाँ है Application.Undo विधि, लेकिन यह बहुत सीमित है। यहां Excel 2010 VBA से विवरण है:

आवेदन। इंडो विधि

अंतिम उपयोगकर्ता-इंटरफेस कार्रवाई रद्द करता है।

टिप्पणियां यह विधि उपयोगकर्ता द्वारा ली गई अंतिम कार्रवाई को केवल अनदेखा करती है मैक्रो चलाने से पहले, और यह मैक्रो में पहली पंक्ति होना चाहिए। इसका उपयोग विजुअल बेसिक कमांड को पूर्ववत करने के लिए नहीं किया जा सकता है।

विशेष रूप से इंटरऑप के संबंध में, मुझे यकीन है कि कुछ भी उपलब्ध नहीं है जो "वीबीए में नहीं है।