VBA का उपयोग करके इंटरनेट एक्सप्लोरर (IE) को स्वचालित करें

इस पृष्ठ में वीबीए का उपयोग करके इंटरनेट एक्सप्लोरर (आईई) को स्वचालित करने के लिए कोडिंग उदाहरण हैं।

** अद्यतन 6/7/2019: वर्तमान में, वीबीए के साथ वेब ऑटोमेशन प्राप्त करने का सबसे अच्छा तरीका सेलेनियम का उपयोग करना है। यह लेख सेलेनियम को कवर नहीं करता है। नीचे दिए गए उदाहरण काम करेंगे, और आपकी आवश्यकताओं के लिए पर्याप्त हो सकते हैं। हालाँकि, यदि आपकी अधिक उन्नत ज़रूरतें हैं या आप वेब ऑटोमेशन के विशेषज्ञ बनना चाहते हैं, तो मैं दृढ़ता से इसके बजाय सेलेनियम का उपयोग करने की सलाह देता हूँ। वेब ऑटोमेशन पर डैन स्ट्रॉन्ग का कोर्स (इस लिंक के माध्यम से उपलब्ध छूट) सेलेनियम सीखने के लिए एक शानदार संसाधन है:

(मुझे डैन के पाठ्यक्रम से संबद्ध आयोग मिलता है)

VBA वाले वेबपेज पर नेविगेट करें

कोड का पहला भाग IE खोलता है और एक वेबसाइट पर नेविगेट करता है। कोड का दूसरा भाग IE खोलता है, एक वेबसाइट पर नेविगेट करता है और एक इनपुट बॉक्स के साथ इंटरैक्ट करता है।

12345678910111213141516171819202122232425262728293031323334353637 सब ऑटोमेट_आईई_लोड_पेज ()'यह IE में एक वेबपेज लोड करेगा'डिम आई ऐज़ लॉन्गस्ट्रिंग के रूप में मंद URLवस्तु के रूप में मंद आईईवस्तु के रूप में मंद objElementवस्तु के रूप में मंद objCollection'इंटरनेट एक्सप्लोरर ऑब्जेक्ट बनाएं'IE = CreateObject ("InternetExplorer.Application") सेट करें'आईई सेट करें। दृश्यमान = आईई दृश्यमान बनाने के लिए सही है, या आईई के लिए पृष्ठभूमि में चलाने के लिए गलत है'आईई। दृश्यमान = सत्य'यूआरएल परिभाषित करें'यूआरएल = "https://www.automateexcel.com/excel/"'यूआरएल पर नेविगेट करें'IE.नेविगेट URL' Statusbar उपयोगकर्ता को बताएं कि वेबसाइट लोड हो रही हैApplication.StatusBar = URL & "लोड हो रहा है। कृपया प्रतीक्षा करें…"' IE लोड होने तक प्रतीक्षा करें … 'IE रेडीस्टेट = 4 दर्शाता है कि वेबपेज लोड हो गया है (पहला लूप अनजाने में दूसरे लूप पर लंघन से बचने के लिए सेट किया गया है)आईई करते समय करें। रेडीस्टेट = 4: DoEvents: लूप 'जबकि करें'IE तक करें। रेडीस्टेट = 4: DoEvents: लूप 'जब तक करें''वेबपेज लोड किया गया'Application.StatusBar = URL और "लोडेड"'अनलोड आईईआईई सेट करें = कुछ भी नहींसेट objElement = कुछ नहींसेट objCollection = कुछ नहींअंत उप

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

1234 ' IE लोड होने तक प्रतीक्षा करें … 'IE रेडीस्टेट = 4 दर्शाता है कि वेबपेज लोड हो गया है (पहला लूप अनजाने में दूसरे लूप पर लंघन से बचने के लिए सेट किया गया है)आईई करते समय करें। रेडीस्टेट = 4: DoEvents: लूप 'जबकि करें'IE तक करें। रेडीस्टेट = 4: DoEvents: लूप 'जब तक करें'

इसके अलावा, कोड की इस पंक्ति पर ध्यान दें:

1 IE.दृश्यमान = TRUE

यह कोड टॉगल करता है कि IE पृष्ठभूमि में चलता है या अग्रभूमि में।

URL खोलें और VBA का उपयोग करके फॉर्म में डेटा दर्ज करें

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 'यह आपके मॉड्यूल के शीर्ष पर जाना चाहिए। इसका उपयोग IE को सक्रिय विंडो के रूप में सेट करने के लिए किया जाता हैपब्लिक डिक्लेयर फंक्शन SetForegroundWindow Lib "user32" (ByVal HWND जितने लंबे समय तक)उप Automate_IE_Enter_Data()'यह IE में एक वेबपेज लोड करेगा'डिम आई ऐज़ लॉन्गस्ट्रिंग के रूप में मंद URLवस्तु के रूप में मंद आईईवस्तु के रूप में मंद objElementवस्तु के रूप में मंद objCollectionमंद HWNDSrc लंबे समय तक'इंटरनेट एक्सप्लोरर ऑब्जेक्ट बनाएं'IE = CreateObject ("InternetExplorer.Application") सेट करें'आईई सेट करें। दृश्यमान = आईई दृश्यमान बनाने के लिए सही है, या आईई के लिए पृष्ठभूमि में चलाने के लिए गलत है'आईई। दृश्यमान = सत्य'यूआरएल परिभाषित करें'यूआरएल = "https://www.automateexcel.com/vba"'यूआरएल पर नेविगेट करें'IE.नेविगेट URL' Statusbar उपयोगकर्ता को पता है कि वेबसाइट लोड हो रही हैApplication.StatusBar = URL & "लोड हो रहा है। कृपया प्रतीक्षा करें…"' IE लोड होने तक प्रतीक्षा करें … 'IE रेडीस्टेट = 4 दर्शाता है कि वेबपेज लोड हो गया है (पहला लूप अनजाने में दूसरे लूप पर लंघन से बचने के लिए सेट किया गया है)करें जबकि IE.ReadyState = 4: DoEvents: LoopIE तक करें। रेडीस्टेट = 4: DoEvents: Loop'वेबपेज लोड किया गया'Application.StatusBar = URL और "लोडेड"'आईई के लिए विंडो आईडी प्राप्त करें ताकि हम इसे सक्रिय विंडो के रूप में सेट कर सकें'एचडब्ल्यूएनडीएसआरसी = आईई.एचडब्ल्यूएनडी'आईई को सक्रिय विंडो के रूप में सेट करें'सेट फ़ोरग्राउंडविंडो HWNDSrc'इनपुट बॉक्स ढूंढें और भरें'एन = 0प्रत्येक आइटम के लिए IE.document.all . मेंअगर itm = "[ऑब्जेक्ट HTMLInputElement]" तोएन = एन + 1यदि n = 3 तबआईटीएम.वैल्यू = "ऑर्कशीट"itm.Focus 'इनपुट बॉक्स को सक्रिय करता है (कर्सर को प्रकट करता है)Application.SendKeys "{w}", True 'एक 'W' कीस्ट्रोक का अनुकरण करता है। ट्रू वीबीए को प्रतीक्षा करने के लिए कहता है'आगे बढ़ने से पहले कीस्ट्रोक समाप्त होने तक, अनुमति दें'पृष्ठ पर जावास्क्रिप्ट तालिका को चलाने और फ़िल्टर करने के लिए'गो टू एंडमैक्रोअगर अंतअगर अंतअगला'अनलोड IE'एंडमैक्रो:आईई सेट करें = कुछ भी नहींसेट objElement = कुछ नहींसेट objCollection = कुछ नहींअंत उप

वीबीए का उपयोग कर आईई में GetElement

इंटरनेट एक्सप्लोरर में वस्तुओं के साथ बातचीत करना अक्सर एक दर्द हो सकता है। आपको यह पहचानने की आवश्यकता है कि किस विशिष्ट वस्तु के साथ काम करना है। उपरोक्त कोड में, हम "[ऑब्जेक्ट HTMLInputElement]" (एक इनपुट फॉर्म) के तीसरे उदाहरण की तलाश कर रहे हैं। फिर हम इनपुट फॉर्म (itm.value = "orksheet") में "orksheet" दर्ज करते हैं, कर्सर को इनपुट फॉर्म (itm.focus) में ले जाते हैं, और "w" टाइप करते हैं। तालिका को फ़िल्टर करने के लिए प्रयुक्त जावास्क्रिप्ट को सक्रिय करने के लिए इस उदाहरण में "w" टाइप करना आवश्यक है।

वस्तुओं का चयन करने के लिए और अधिक प्रत्यक्ष तरीके हैं, हालांकि अन्य सभी विफल होने पर यह विधि काम करना चाहिए।

उन अन्य विधियों का उपयोग करने के लिए आप निम्नलिखित विकल्पों का उपयोग करना चाहेंगे:

1234 IE.document.getelementbyid("ID").value = "value" 'ID द्वारा खोजेंIE.document.getelementsbytagname("ID").value = "value" 'टैग द्वारा खोजेंIE.document.getelementsbyclassname("ID").value = "value" 'वर्ग द्वारा खोजेंIE.document.getelementsbyname("ID").value = "value" 'नाम से खोजें

यदि एक ही नाम के एक से अधिक तत्व हैं, तो इन विधियों का उपयोग करते समय आप समस्याओं में भाग सकते हैं। लूप का उपयोग करके (जैसा कि ऊपर नमूना कोड में है), आप निर्दिष्ट कर सकते हैं कि किस तत्व का उपयोग करना है।

वीबीए का उपयोग करके आईई के साथ बातचीत करें

उपरोक्त कोड में हम घटना का उपयोग करते हैं: केंद्र (itm.focus) प्रपत्र में कर्सर को सक्रिय करने के लिए।

आप वस्तु/तत्व घटनाओं, विधियों और गुणों के अधिक उदाहरण यहां पा सकते हैं: https://msdn.microsoft.com/en-us/library/ms535893(v=vs.85).aspx

ये सभी हर वस्तु/तत्व के साथ काम नहीं करेंगे और IE में वस्तुओं के साथ बातचीत करते समय काफी परीक्षण और त्रुटि हो सकती है।

इंटरनेट एक्सप्लोरर की सेंडकी

हमने उपरोक्त कोड में Sendkeys कमांड का उपयोग किया है:

1 Application.SendKeys "{w}", True

Sendkeys आम तौर पर एक अंतिम उपाय होना चाहिए। आपको आमतौर पर ऑब्जेक्ट्स के साथ सीधे इंटरैक्ट करने में सक्षम होना चाहिए, हालांकि कभी-कभी केवल Sendkeys कमांड का उपयोग करना आसान होता है। सेंडकी अनिवार्य रूप से कीबोर्ड से टाइप करने के समान ही है। आगे बढ़ने से पहले आपको यह सुनिश्चित करना होगा कि सही विंडो और ऑब्जेक्ट का चयन किया जा रहा है। सेंडकी वेब पर उपयोगकर्ता इंटरैक्शन के आधार पर चलने वाली घटनाओं को भी ट्रिगर कर सकते हैं। ऊपर के उदाहरण में, हम वेब पेज पर उपयोग की जाने वाली तालिका में Javascript फ़िल्टर को सक्रिय करने के लिए Sendkeys का उपयोग करते हैं।

Sendkeys में दो इनपुट होते हैं:
1. प्रवेश करने की कुंजी (आमतौर पर {}… {दर्ज}, {q}… से घिरा हुआ है।)
2. TRUE/FALSE आगे बढ़ने से पहले Sendkeys के पूर्ण होने तक प्रतीक्षा करें। इंटरनेट एक्सप्लोरर के साथ काम करते समय आप आमतौर पर इस सेट को TRUE पर चाहते हैं।

पृष्ठभूमि में इंटरनेट एक्सप्लोरर चलाएं

इंटरनेट एक्सप्लोरर को बैकग्राउंड में चलाने के लिए आपको दो काम करने होंगे:

1. एप्लिकेशन के साथ आईई कोड वाले मैक्रो को कॉल करें। जैसे ही आप काम करना जारी रखते हैं मैक्रो पृष्ठभूमि में चलता है:

1 एप्लिकेशन.रन ("Automate_IE_Load_Page")

नोट: यह कोड संभावित रूप से आपके काम में बाधा डाल सकता है, या आपका काम कोड में हस्तक्षेप कर सकता है। उदाहरण के लिए, यदि आप SendKeys का उपयोग करते हैं, तो Sendkeys गलत एप्लिकेशन को कीस्ट्रोक भेज सकता है। इससे बहुत सावधान रहें।
2. आईई छुपाएं:

1 IE.दृश्यमान = असत्य

सेलेनियम और वीबीए

यदि आपको यह लेख उपयोगी लगा, तो आप वेब ऑटोमेशन पर डैन स्ट्रॉन्ग के पाठ्यक्रम को देखना चाहेंगे। इसमें वीबीए के साथ सेलेनियम का उपयोग करने का तरीका शामिल है।

(मुझे डैन के पाठ्यक्रम से संबद्ध आयोग मिलता है)

डैन के छात्रों में से एक से प्रशंसापत्र

https://excelvbaisfun.com/wp-content/uploads/2019/06/dan_strong_complete_web_automation_course_review_VbFn2vwul8A_1080p.mp4

आप साइट के विकास में मदद मिलेगी, अपने दोस्तों के साथ साझा करने पेज

wave wave wave wave wave