मैंने एक्सेल वीबीए और डेटा प्राप्त करने के लिए एक साधारण PHP स्क्रिप्ट का उपयोग कर एक वेबसर्वर को एक्सएमएल स्ट्रिंग या फ़ाइल भेजने के लिए एक मूल स्क्रिप्ट एक साथ रखी है। प्रक्रिया XMLHTTP का उपयोग करती है।
लक्ष्य एक स्प्रेडशीट से बनाए गए XML डेटा वाले सर्वर को अपडेट करने के लिए एक सरल अपलोड स्क्रिप्ट बनाना है। फिर कई अंतिम उपयोगकर्ता कार्यपुस्तिकाओं को केंद्रीय फ़ाइल में मैप करें और इससे रिपोर्ट बनाएं। बुनियादी नट और बोल्ट:
उदाहरण के लिए मैं एक मूल एक्सएमएल स्ट्रिंग का उपयोग करता हूं जो इस तरह दिखता है:
1234567891011 | myxml = "<?xml संस्करण=""1.0""?>" और _"" और _"पुरुष पोलो" और _"4.89" और _"बड़ा" & _"" |
मैंने जिस PHP का उपयोग किया है, वह केवल उस डेटा को लौटाता है जिसे एक्सेल में वापस भेजा गया था। इसलिए यदि आपको वही XML डेटा प्राप्त होता है जो आपने संदेश बॉक्स में भेजा था, तो आपने इसे सही ढंग से किया है। यदि कोई पोस्ट डेटा नहीं मिलता है तो यह "नो पासा" कहता है। परीक्षण URL का स्थान /pl/xlxml.php . है
स्पष्ट रूप से आप व्यावहारिक उपयोग के लिए फ़ाइल सामग्री को अपने सर्वर पर सहेजने के लिए स्क्रिप्ट को अपडेट करना चाहेंगे। यहाँ XML पोस्ट डेटा प्राप्त करने और उसे वापस करने के लिए PHP है:
1234567891011121314151617 |
तो अब हम जानते हैं कि हम क्या भेज रहे हैं, और इसे कैसे प्राप्त करें, आइए XML डेटा भेजें!
निम्नलिखित कोड एक्सेल 2003 में बनाया गया था और वीबी संपादक में टूल्स-> संदर्भ-> माइक्रोसॉफ्ट एक्सएमएल v5.0 के संदर्भ का उपयोग कर रहा था। यह अच्छी तरह से टिप्पणी की गई है ताकि आप वह सब कुछ देख सकें जो चल रहा है:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 | उप SendXML ()'HTTP वैरिएबल'myHTTP को MSXML2.XMLHTTP के रूप में मंद करें'HTTP ऑब्जेक्ट'myHTTP = CreateObject ("msxml2.xmlhttp") सेट करें'डोम दस्तावेज़ चर बनाएँ''भेजने के लिए एक्सएमएल स्टोर करता है'myDom को MSXML2.DOMDocument के रूप में मंद करें'डोमडॉक्यूमेंट ऑब्जेक्ट बनाएं'myDom = CreateObject ("MSXML2.DOMDocument") सेट करें'आगे बढ़ने से पहले पूरे दस्तावेज़ को लोड करें'myDom.async = असत्य'एक्सएमएल स्ट्रिंग वेरिएबल''फ़ाइल या यूआरएल से भेजते समय स्थान के साथ बदलें'स्ट्रिंग के रूप में मंद myxmlmyxml = "<?xml संस्करण=""1.0""?>" और _"" और _"पुरुष पोलो" और _"4.89" और _"बड़ा" & _""'एक्सएमएल लोड करता है''फ़ाइल या url के लिए .Load में बदलें'myDom.loadXML (myxml)'कनेक्शन खोलें'myHTTP.ओपन "पोस्ट", _"https://www.automateexcel.com/excel/pl/xlxml.php", गलत'एक्सएमएल भेजें'myHTTP.भेजें (myDom.XML)'प्रतिक्रिया प्रदर्शित करें'MsgBox myHTTP.ResponseTextअंत उप |
यदि आपने इसे अभी तक बनाया है, एक संदर्भ जोड़ा है और कोड चलाया है, तो आप देखेंगे कि वास्तव में PHP ने एक्सएमएल प्राप्त किया और वापस कर दिया:
नोट्स: मैंने केवल गतिशील रूप से एक्सएमएल बनाया है या इसे एक्सएमएल फाइलों और यूआरएल से लोड किया है, अगला एक्सएमएल मैप से डेटा भेजना है।
मैंने डेटा को सर्वर पर लिखने के बजाय एक्सेल में वापस गूँज दिया क्योंकि यूआरएल सार्वजनिक है, मैं लोगों को एक सैंडबॉक्स देना चाहता था और मेरे सर्वर पर यादृच्छिक फाइलें नहीं भेजी जा रही थीं।