यह आलेख प्रदर्शित करेगा कि क्लिपबोर्ड पर आइटम कॉपी करने के लिए वीबीए का उपयोग कैसे करें।
एक समय हो सकता है कि हम एक्सेल वीबीए में जानकारी की प्रतिलिपि बनाना चाहते हैं और इसे किसी अन्य एप्लिकेशन के भीतर या किसी अन्य समय में उपयोग करने के लिए स्टोर करना चाहते हैं जब एक्सेल मैक्रो ने चलना बंद कर दिया हो। एक बार जब मैक्रो चलना बंद कर देता है, तो वेरिएबल या वेरिएबल में संग्रहीत जानकारी मौजूदा बंद हो जाती है और अब इसे पुनर्प्राप्त नहीं किया जा सकता है। इस समस्या को हल करने का एक तरीका यह होगा कि इस जानकारी को क्लिपबोर्ड पर कॉपी किया जाए।
HTML ऑब्जेक्ट लाइब्रेरी का उपयोग करके क्लिपबोर्ड पर कॉपी करना
एक्सेल वीबीए में क्लिपबोर्ड का उपयोग करने का सबसे आसान तरीका एचटीएमएल ऑब्जेक्ट लाइब्रेरी को कॉल करना है।
1234567 | उप स्टोरडेटा ()संस्करण के रूप में मंद varTextवस्तु के रूप में मंद objCPvarText = "कुछ कॉपी किए गए टेक्स्ट"objCP = CreateObject ("HtmlFile") सेट करेंobjCP.ParentWindow.ClipboardData.SetData "पाठ", varTextअंत उप |
चूंकि हम ऑब्जेक्ट के रूप में परिवर्तनीय objCP घोषित करके देर से बाध्यकारी का उपयोग कर रहे हैं, इसलिए हमें इस प्रक्रिया को काम करने के लिए एक्सेल में संदर्भ जोड़ने की आवश्यकता नहीं है।
यदि हम अब अपने एक्सेल वर्कशीट पर स्विच करते हैं और पेस्ट पर क्लिक करते हैं, तो "कुछ कॉपी किए गए डेटा" टेक्स्ट को चयनित सेल में डाला जाएगा।
यदि हम उपरोक्त इस प्रक्रिया को एक फ़ंक्शन में बदलना चाहते हैं, तो हम पाठ को एक चर के रूप में कॉपी करने के लिए पास कर सकते हैं।
12345 | फंक्शन StoreData(varText as Variant) स्ट्रिंग के रूप मेंवस्तु के रूप में मंद objCPobjCP = CreateObject ("HtmlFile") सेट करेंobjCP.ParentWindow.ClipboardData.SetData "पाठ", varTextअंत समारोह |
तब हम अपने वीबीए कोड में इस फ़ंक्शन को कई बार कॉल कर सकते हैं जब हमें क्लिपबोर्ड पर टेक्स्ट कॉपी करने की आवश्यकता होती है। इसलिए पाठ को वीबीए कोड में हार्ड-कोड नहीं किया जाएगा।
123 | उप कॉपीडाटा ()StoreData "कुछ कॉपी किए गए टेक्स्ट"अंत उप |
हम क्लिपबोर्ड से टेक्स्ट को वापस करने के लिए HTML ऑब्जेक्ट का भी उपयोग कर सकते हैं - यानी पेस्ट करना। इसके लिए हम SetData पद्धति के बजाय GetData का उपयोग करते हैं।
12345 | फंक्शन रिटर्नडाटा ()वस्तु के रूप में मंद objCPobjCP = CreateObject ("HtmlFile") सेट करेंरिटर्नडाटा = objCP.parentWindow.clipboardData.GetData("text")अंत समारोह |
फिर हम क्लिपबोर्ड पर संग्रहीत डेटा को वापस करने के लिए इस फ़ंक्शन को कॉल कर सकते हैं।
123 | उप पेस्टडेटा ()MsgBox रिटर्नडाटाअंत उप |
एक साफ-सुथरी चाल 2 कार्यों को एक साथ जोड़ देगी ताकि हम डेटा को कॉपी और पेस्ट करने के लिए एक ही फ़ंक्शन का उपयोग कर सकें, यह इस बात पर निर्भर करता है कि हम क्लिपबोर्ड पर डेटा भेजते हैं या नहीं, या यदि हम क्लिपबोर्ड से डेटा पुनर्प्राप्त करना चाहते हैं।
1234567891011 | फ़ंक्शन StoreOrReturnData (स्ट्रिंग के रूप में वैकल्पिक strText) स्ट्रिंग के रूप मेंसंस्करण के रूप में मंद varTextवस्तु के रूप में मंद objCPobjCP = CreateObject ("HtmlFile") सेट करेंvarText = strTextअगर strText "" तोobjCP.ParentWindow.ClipboardData.SetData "पाठ", varTextअन्यथाStoreOrReturnData = objCP.ParentWindow.ClipboardData.GetData("text")अगर अंतअंत समारोह |
ऊपर दिए गए कोड में, हम strText वेरिएबल को वैकल्पिक बना सकते हैं - इसका मतलब है कि यदि हम डेटा कॉपी करना चाहते हैं, तो हम कॉपी किए जाने वाले टेक्स्ट को शामिल करेंगे, लेकिन अगर हम डेटा पेस्ट करना चाहते हैं, तो हम इसे बाहर कर देंगे।
फिर हम स्ट्रिंग वेरिएबल (strText) को एक वैरिएंट वैरिएबल को असाइन करेंगे ताकि इसे HTML फ़ाइल ऑब्जेक्ट की सेटडेटा विधि में संग्रहीत किया जा सके।
डेटा को कॉपी करने के लिए, हम इस प्रक्रिया का उपयोग कर सकते हैं, ध्यान दें कि हम कॉपी किए जाने वाले टेक्स्ट को शामिल कर रहे हैं।
123 | उप कॉपीडाटा ()StoreOrReturnData "कुछ कॉपी किए गए टेक्स्ट"अंत उप |
डेटा पेस्ट करने के लिए, हम इस प्रक्रिया का उपयोग कर सकते हैं। संदेश बॉक्स क्लिपबोर्ड पर संग्रहीत मान दिखाएगा।
123 | उप पेस्टडेटा ()MsgBox StoreOrReturnDataअंत उप |