Az Internet Explorer (IE) automatizálása a VBA használatával

Ez az oldal kódolási példákat tartalmaz az Internet Explorer (IE) VBA használatával történő automatizálására.

** Frissítés 2019.06.07 .: Jelenleg a VBA segítségével a webes automatizálás legjobb módja a szelén használata. Ez a cikk NEM terjed ki a szelénre. Az alábbi példák működni fognak, és elegendőek lehetnek az Ön igényeihez. Ha azonban fejlettebb igényei vannak, vagy a webes automatizálás szakértőjévé szeretne válni, határozottan javaslom a szelén használatát. Dan Strong webautomatizálási tanfolyama (a kedvezmény ezen a linken keresztül érhető el) fantasztikus forrás a szelén elsajátításához:

(Kapok egy Partner Bizottságot Dan tanfolyamától)

Navigáljon egy weboldalra a VBA segítségével

Az első kódrész megnyitja az IE -t, és egy webhelyre navigál. A második kódrészlet megnyitja az IE -t, navigál egy webhelyre, és kölcsönhatásba lép egy beviteli mezővel.

12345678910111213141516171819202122232425262728293031323334353637 Sub Automate_IE_Load_Page ()'Ez betölt egy weboldalt az IE -benDim i As LongAz URL halványítása karakterlánckéntDim IE objektumkéntDim objElement As ObjectDim objCollection as Object"Hozzon létre InternetExplorer objektumotSet IE = CreateObject ("InternetExplorer.Application")'Set IE.Visible = True, hogy láthatóvá tegye az IE -t, vagy hamis, ha az IE a háttérben futIE.Visible = Igaz'Határozza meg az URL -tURL = "https://www.automateexcel.com/excel/"'Navigáljon az URL -hezIE. Navigálás URL -címen„Az állapotsor jelezze a felhasználónak, hogy a webhely betöltődikApplication.StatusBar = URL & "betöltődik. Kérjük, várjon…"'Várjon, amíg az IE betöltődik …'Do while IE.ReadyState = 4: DoEvents: Loop 'Do WhileDo IE.ReadyState = 4: DoEvents: Loop 'Do Before'A weboldal betöltveApplication.StatusBar = URL & "Betöltve"'Töltse le az IE -tSet IE = SemmiSet objElement = SemmiSet objCollection = SemmiEnd Sub

Nagyon gyakori probléma, amellyel az emberek találkoznak, amikor IE -vel dolgoznak a VBA -ban, hogy a VBA megpróbálja futtatni a kódot, mielőtt az Internet Explorer teljesen betöltődne. Ennek a kódnak a használatával azt mondja a VBA -nak, hogy ismételje meg a ciklust, amíg az IE készen áll (IE.ReadyState - 4).

1234 'Várjon, amíg az IE betöltődik …'Do while IE.ReadyState = 4: DoEvents: Loop 'Do WhileDo IE.ReadyState = 4: DoEvents: Loop 'Do Before

Ezenkívül vegye figyelembe ezt a kód sort:

1 IE.Visible = IGAZ

Ez a kód azt váltja, hogy az IE a háttérben vagy az előtérben fut -e.

Nyissa meg az URL -t, és írja be az adatokat az űrlapba a VBA használatával

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 - Ennek a modul tetején kell lennie. Az IE aktív ablakként való beállítására szolgálNyilvános deklarációs funkció SetForegroundWindow Lib "user32" (ByVal HWND As Long) AmígSub Automate_IE_Enter_Data ()'Ez betölt egy weboldalt az IE -benDim i As LongAz URL halványítása karakterlánckéntDim IE objektumkéntDim objElement As ObjectDim objCollection as ObjectHalvány HWNDSrc olyan hosszú"Hozzon létre InternetExplorer objektumotSet IE = CreateObject ("InternetExplorer.Application")'Set IE.Visible = True, hogy láthatóvá tegye az IE -t, vagy hamis, ha az IE a háttérben futIE.Visible = Igaz'Határozza meg az URL -tURL = "https://www.automateexcel.com/vba"'Navigáljon az URL -hezIE. Navigálás URL -címen"Az állapotsor jelezze a felhasználónak, hogy a webhely betöltődikApplication.StatusBar = URL & "betöltődik. Kérjük, várjon…"'Várjon, amíg az IE betöltődik …'Do while IE.ReadyState = 4: DoEvents: LoopDo IE.ReadyState = 4: DoEvents: Loop'A weboldal betöltveApplication.StatusBar = URL & "Betöltve"'Szerezze be az IE ablak -azonosítóját, hogy beállíthassuk aktiválási ablaknakHWNDSrc = IE.HWND'Állítsa be az IE -t aktív ablaknakSetForegroundWindow HWNDSrc'Keresse meg és töltse ki a beviteli mezőtn = 0Minden itm -re az IE.document.all -banHa itm = "[object HTMLInputElement]" Akkorn = n + 1Ha n = 3 Akkoritm.Value = "orksheet"itm. Focus 'Aktiválja a Beviteli mezőt (megjeleníti a kurzort)Application.SendKeys "{w}", True 'Szimulálja a "W" billentyűleütést. True azt mondja a VBA -nak, hogy várjon'amíg a billentyű leütése befejeződik, mielőtt folytatná, lehetővé téve'javascript az oldalon a táblázat futtatásához és szűréséhezGoTo endmacroVége HaVége HaKövetkező'Töltse le az IE -tvégső makró:Set IE = SemmiSet objElement = SemmiSet objCollection = SemmiEnd Sub

GetElement IE -ben a VBA használatával

Az objektumokkal való interakció az Internet Explorerben gyakran fájdalmas lehet. Meg kell határoznia, hogy milyen konkrét objektummal dolgozzon. A fenti kódban az „[object HTMLInputElement]” (beviteli űrlap) 3. példányát keressük. Ezután beírjuk az „orksheet” -t a beviteli űrlapba (itm.value = „orksheet”), áthelyezzük a kurzort a beviteli űrlapba (itm.focus), és beírjuk a „w” -t. Ebben az esetben a „w” beírása szükséges a táblázat szűréséhez használt javascript aktiválásához.

Vannak közvetlen módszerek az objektumok kiválasztására, de ennek a módszernek működnie kell, ha minden más sikertelen.

Ezen egyéb módszerek használatához a következő lehetőségeket kell használnia:

1234 IE.document.getelementbyid ("ID"). Value = "value" 'Keresés azonosító alapjánIE.document.getelementsbytagname ("ID"). Value = "value" 'Keresés címke szerintIE.document.getelementsbyclassname ("ID"). Value = "value" 'Keresés osztály szerintIE.document.getelementsbyname ("ID"). Value = "value" 'Keresés név szerint

Problémákba ütközhet ezen módszerek használatakor, ha több azonos nevű elem is van. A ciklus használatával (mint a fenti mintakódban) megadhatja, hogy az elem melyik példányát használja.

Kommunikáljon az IE -vel a VBA segítségével

A fenti kódban az eseményt használjuk: Fókusz (itm.focus) a kurzor aktiválásához az űrlapon.

További példákat talál az objektum/elem eseményekre, módszerekre és tulajdonságokra itt: https://msdn.microsoft.com/en-us/library/ms535893(v=vs.85).aspx

Nem mindegyik fog működni minden objektummal / elemmel, és meglehetősen sok próba és hiba léphet fel az IE objektumaival való interakció során.

Küldési kulcsok az Internet Explorerhez

A fenti kódban a Sendkeys parancsot használtuk:

1 Application.SendKeys "{w}", igaz

A jelszavaknak általában a végső megoldásnak kell lenniük. Általában képesnek kell lennie arra, hogy közvetlenül interakcióba lépjen az objektumokkal, de néha egyszerűbb a Sendkeys parancs használata. A Sendkeys lényegében megegyezik a billentyűzettel való gépeléssel. A folytatás előtt meg kell győződnie arról, hogy a megfelelő ablakokat és objektumokat választja ki. A küldő kulcsok olyan eseményeket is kiválthatnak, amelyek a felhasználók internetes interakciója alapján futnak. A fenti példában a Sendkeys használatával aktiváljuk a Javascript szűrőt a táblázatban, amelyet a weboldalon használunk.

A Sendkeys két bemenettel rendelkezik:
1. a beírandó kulcs (általában {}… {enter}, {q}… körülveszi)
2. Várjon, amíg a Sendkeys befejeződik, mielőtt folytatná az IGAZ/HAMIS eljárást. Általában azt szeretné, hogy ez a készlet IGAZ legyen, ha az Internet Explorerrel dolgozik.

Futtassa az Internet Explorert a háttérben

Az Internet Explorer háttérben történő futtatásához két dolgot kell tennie:

1. Hívja meg az IE kódot tartalmazó makrót az Application.Futtatásával, így a makró a háttérben fut, miközben folytatja a munkát:

1 Application.Run ("Automate_IE_Load_Page")

Megjegyzés: Ez a kód megszakíthatja a munkát, vagy a munkája zavarhatja a kódot. Például, ha SendKeys -t használ, a Sendkeys billentyűleütést küldhet rossz alkalmazásnak. Legyen nagyon óvatos ezzel.
2. Az IE elrejtése:

1 IE.Visible = Hamis

Szelén és VBA

Ha hasznosnak találta ezt a cikket, akkor érdemes megnézni Dan Strong webautomatizálási tanfolyamát. Leírja, hogyan kell használni a szelént a VBA -val.

(Kapok egy Partnerbizottságot Dan kurzusáról)

Dan egyik tanítványának ajánlása

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

Segít a fejlesztés a helyszínen, megosztva az oldalt a barátaiddal

wave wave wave wave wave