Automatiseerige Internet Explorer (IE) VBA abil

See leht sisaldab kodeerimisnäiteid Internet Exploreri (IE) automatiseerimiseks VBA abil.

** Uuendus 6.06.2019: Praegu on parim viis veebiautomaatika saavutamiseks VBA abil kasutada seleeni. See artikkel ei hõlma seleeni. Allpool toodud näited töötavad ja võivad teie vajaduste jaoks olla piisavad. Kui teil on aga rohkem arenenud vajadusi või soovite saada veebiautomaatika eksperdiks, soovitan tungivalt selle asemel kasutada seleeni. Dan Strongi veebiautomaatika kursus (selle lingi kaudu saadaval allahindlus) on suurepärane vahend seleeni õppimiseks:

(Saan Dani kursuselt sidusettevõtte komisjonitasu)

Navigeerige veebisaidile VBA abil

Esimene kooditükk avab IE ja navigeerib veebisaidile. Teine kooditükk avab IE, navigeerib veebisaidile ja suhtleb sisendkastiga.

12345678910111213141516171819202122232425262728293031323334353637 Alamautomaatne_IE_Load_Page ()"See laadib veebisaidi IE -sseDim i As LongHämarda URL stringinaDim IE kui objektDim objElement As ObjectDim objCollection kui objekt"Looge InternetExplorer objektMäära IE = CreateObject ("InternetExplorer.Application")'Set IE.Visible = True, et muuta IE nähtavaks, või vale, kui IE töötab taustalIE.Visible = Tõsi„Määrake URLURL = "https://www.automateexcel.com/excel/"'Liikuge URL -ileIE. Navigeeri URL -is"Olekuriba annab kasutajale teada, et veebisaiti laaditakseApplication.StatusBar = URL & "laaditakse. Palun oodake…"„Oota, kuni IE laadib…” IE ReadyState = 4 tähendab, et veebileht on laaditud (esimene tsükkel on seatud nii, et vältida teise silmuse tahtmatut vahelejätmist)Do while IE.ReadyState = 4: DoEvents: Loop 'Do whileTehke kuni IE.ReadyState = 4: DoEvents: Loop 'Tehke kuni'Veebileht on laaditudApplication.StatusBar = URL & "Laetud"'Laadige IE mahaMäära IE = mitte midagiMäära objElement = Mitte midagiMäära objCollection = Mitte midagiEnd Sub

Väga levinud probleem, millega inimesed VBA -s IE -ga töötades kokku puutuvad, on VBA katse käivitada kood enne Internet Exploreri täielikku laadimist. Seda koodi kasutades käskite VBA -l korrata tsüklit, kuni IE on valmis (IE.ReadyState - 4).

1234 'Oota, kuni IE laadib …' IE ReadyState = 4 tähendab, et veebileht on laaditud (esimene tsükkel on seatud nii, et vältida teise silmuse tahtmatut vahelejätmist)Do while IE.ReadyState = 4: DoEvents: Loop 'Do whileTehke kuni IE.ReadyState = 4: DoEvents: Loop 'Tehke kuni

Pange tähele ka seda koodirida:

1 IE.Visible = TRUE

See kood lülitab sisse, kas IE töötab taustal või esiplaanil.

Avage URL ja sisestage vormi andmed VBA abil

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 "See peab asuma teie mooduli ülaosas. Seda kasutatakse aktiivseks aknaks IE seadmiseksAvaliku deklareerimise funktsioon SetForegroundWindow Lib "user32" (ByVal HWND nii kaua) nii kauaSub Automate_IE_Enter_Data ()"See laadib veebisaidi IE -sseDim i As LongHämarda URL stringinaDim IE kui objektDim objElement As ObjectDim objCollection kui objektDim HWNDSrc nii kaua"Looge InternetExplorer objektMäära IE = CreateObject ("InternetExplorer.Application")'Set IE.Visible = True, et muuta IE nähtavaks, või vale, kui IE töötab taustalIE.Visible = Tõsi„Määrake URLURL = "https://www.automateexcel.com/vba"'Liikuge URL -ileIE. Navigeeri URL -is"Olekuriba annab kasutajale teada, et veebisaiti laaditakseApplication.StatusBar = URL & "laaditakse. Palun oodake…"'Oota, kuni IE laadib …' IE ReadyState = 4 tähendab, et veebileht on laaditud (esimene tsükkel on seatud nii, et vältida teise silmuse tahtmatut vahelejätmist)Do while IE.ReadyState = 4: DoEvents: LoopTehke kuni IE.ReadyState = 4: DoEvents: Loop'Veebileht on laaditudApplication.StatusBar = URL & "Laetud"'Hankige IE jaoks Windowsi ID, et saaksime selle aktiveerimisaknaks määrataHWNDSrc = IE.HWND'Määra IE aktiivseks aknaksSetForegroundWindow HWNDSrc'Sisendkasti leidmine ja täitminen = 0Iga ITM -i jaoks IE.document.allKui itm = "[objekt HTMLInputElement]" Siisn = n + 1Kui n = 3, siisitm.Value = "orksheet"itm.Focus 'Aktiveerib sisendkasti (paneb kursori ilmuma)Application.SendKeys "{w}", True 'Simuleerib' W 'klahvivajutust. True käsib VBA -l oodata'kuni klahvivajutus on lõpetatud enne jätkamist, lubades'javascript lehel tabeli käitamiseks ja filtreerimiseksMine endmakro juurdeLõpp KuiLõpp KuiEdasi'Laadige IE mahaendmakro:Määra IE = mitte midagiMäära objElement = Mitte midagiMäära objCollection = Mitte midagiEnd Sub

GetElement IE -s, kasutades VBA -d

Internet Exploreris objektidega suhtlemine võib sageli olla valus. Peate välja selgitama, millise konkreetse objektiga töötada. Ülalolevas koodis otsime objekti „[object HTMLInputElement]” (sisendvorm) kolmandat eksemplari. Seejärel sisestame sisestusvormile “orksheet” (itm.value = “orksheet”), liigutame kursori sisestusvormile (itm.focus) ja tipime “w”. Tabeli filtreerimiseks kasutatava JavaScripti aktiveerimiseks on sel juhul vaja sisestada „w”.

Objektide valimiseks on rohkem otseseid meetodeid, kuid see meetod peaks toimima, kui kõik muu ebaõnnestub.

Nende muude meetodite kasutamiseks peate kasutama järgmisi valikuid.

1234 IE.document.getelementbyid ("ID"). Value = "value" 'Otsi ID järgiIE.document.getelementsbytagname ("ID"). Value = "value" 'Otsi märgendi järgiIE.document.getelementsbyclassname ("ID"). Value = "value" 'Otsi klassi järgiIE.document.getelementsbyname ("ID"). Value = "value" 'Otsi nime järgi

Nende meetodite kasutamisel võib tekkida probleeme, kui sama nimega elemente on rohkem kui üks. Tsükli abil (nagu ülaltoodud näidiskoodis) saate määrata, millist elemendi eksemplari kasutada.

Suhelge IE -ga VBA abil

Ülaltoodud koodis kasutame sündmust: Keskendu (itm.focus) kursori aktiveerimiseks vormis.

Rohkem näiteid objektide/elementide sündmuste, meetodite ja atribuutide kohta leiate siit: https://msdn.microsoft.com/en-us/library/ms535893(v=vs.85).aspx

Kõik need ei tööta iga objekti / elemendiga ning IE objektidega suhtlemisel võib esineda üsna palju katseid ja vigu.

Saatmisvõtmed Internet Explorerisse

Ülaltoodud koodis kasutasime käsku Sendkeys:

1 Application.SendKeys "{w}", tõsi

Saatmisvõtmed peaksid üldiselt olema viimane abinõu. Tavaliselt peaksite saama objektidega otse suhelda, kuid mõnikord on lihtsam kasutada lihtsalt käsku Sendkeys. Sendkeys on sisuliselt sama, mis klaviatuuriga kirjutamine. Enne jätkamist peate veenduma, et valite õiged aknad ja objektid. Saatmisvõtmed võivad käivitada ka sündmusi, mis käivituvad kasutajate suhtluse põhjal veebis. Ülaltoodud näites kasutame veebisaidil kasutatava tabeli JavaScripti filtri aktiveerimiseks Sendkeys.

Sendkeysil on kaks sisendit:
1. sisestusvõti (tavaliselt ümbritsetud {}… {enter}, {q}…)
2. Enne TRUE/FALSE jätkamist oodake, kuni Sendkeys on lõpule jõudnud. Kui soovite Internet Exploreriga töötada, soovite selle komplekti väärtuseks tõsi anda.

Käivitage taustal Internet Explorer

Internet Exploreri taustal käivitamiseks peate tegema kahte asja.

1. Helistage rakendusele IE -koodi sisaldav makro. Käivitage nii, et makro jätkab töötamist taustal:

1 Application.Run ("Automate_IE_Load_Page")

Märkus. See kood võib teie tööd katkestada või teie töö võib koodi häirida. Näiteks kui kasutate SendKeys, võivad Sendkeys saata klahvivajutuse valele rakendusele. Olge sellega väga ettevaatlik.
2. Peida IE:

1 IE.Visible = Vale

Seleen ja VBA

Kui see artikkel oli teile kasulik, võiksite vaadata Dan Strongi veebiautomaatika kursust. See hõlmab seleeni kasutamist koos VBA -ga.

(Saan Dani kursuselt sidusettevõtte komisjonitasu)

Iseloomustus ühelt Dan'i õpilaselt

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

Te aitate arengu ala, jagades leht oma sõpradega

wave wave wave wave wave