Automatizuokite „Internet Explorer“ (IE) naudodami VBA

Šiame puslapyje pateikiami kodavimo pavyzdžiai, kaip automatizuoti „Internet Explorer“ (IE) naudojant VBA.

** Atnaujinimas 6/7/2019: Šiuo metu geriausias būdas pasiekti žiniatinklio automatizavimą naudojant VBA yra seleno naudojimas. Šis straipsnis neapima seleno. Žemiau pateikti pavyzdžiai veiks ir gali pakakti jūsų poreikiams. Tačiau jei turite daugiau pažengusių poreikių arba norite tapti žiniatinklio automatizavimo ekspertu, primygtinai rekomenduoju naudoti seleną. Dano Strongo žiniatinklio automatikos kursas (nuolaida pasiekiama per šią nuorodą) yra puikus šaltinis mokytis seleno:

(Iš Dano kurso gaunu partnerių komisiją)

Eikite į tinklalapį naudodami VBA

Pirmasis kodo elementas atidaro IE ir nukreipia į svetainę. Antrasis kodo gabalas atidaro IE, eina į svetainę ir sąveikauja su įvesties langeliu.

12345678910111213141516171819202122232425262728293031323334353637 Papildomas automatizavimas_IE_Load_Page ()„Tai įkels tinklalapį IETamsiai ilgasPritemdyti URL kaip eilutęDim IE kaip objektasDim objElement As ObjectDim objCollection as Object„Sukurkite„ InternetExplorer “objektąNustatykite IE = CreateObject ("InternetExplorer.Application")'Nustatykite IE.Visible = True, kad IE būtų matomas, arba False, kad IE veiktų foneIE.Visible = Tiesa„Apibrėžkite URLURL = "https://www.automateexcel.com/excel/"„Eikite į URLIE. Naršyti URL„Būsenos juosta leiskite vartotojui žinoti, kad svetainė įkeliamaApplication.StatusBar = URL & "įkeliamas. Palaukite …"„Palaukite, kol įkeliamas IE“.„Do while IE.ReadyState“ = 4: „DoEvents: Loop“ Do whileDaryti iki IE.ReadyState = 4: DoEvents: ciklas „Daryti iki'Tinklapis įkeltasApplication.StatusBar = URL ir „Įkelta“„Iškrauti IENustatykite IE = niekoNustatyti objElement = NiekoNustatyti objCollection = NiekoPabaiga Sub

Labai dažna problema, su kuria susiduria žmonės, dirbdami su IE VBA, yra VBA bandymas paleisti kodą prieš visiškai įkeliant „Internet Explorer“. Naudodami šį kodą, liepiate VBA kartoti ciklą, kol IE bus paruoštas (IE.ReadyState - 4).

1234 „Palaukite, kol įkeliamas IE“.„Do while IE.ReadyState“ = 4: „DoEvents: Loop“ Do whileDaryti iki IE.ReadyState = 4: DoEvents: ciklas „Daryti iki

Taip pat atkreipkite dėmesį į šią kodo eilutę:

1 IE.Visible = TRUE

Šis kodas perjungia, ar IE veikia fone, ar priekiniame plane.

Atidarykite URL ir įveskite duomenis formoje naudodami VBA

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 „Tai turi būti jūsų modulio viršuje. Jis naudojamas nustatyti IE kaip aktyvų langąViešo deklaravimo funkcija SetForegroundWindow Lib "user32" (ByVal HWND tiek laiko) tiek laikoPapildomas automatizavimas_IE_Enter_Data ()„Tai įkels tinklalapį IETamsiai ilgasPritemdyti URL kaip eilutęDim IE kaip objektasDim objElement As ObjectDim objCollection as ObjectDim HWNDSrc kaip ilgai„Sukurkite„ InternetExplorer “objektąNustatykite IE = CreateObject ("InternetExplorer.Application")'Nustatykite IE.Visible = True, kad IE būtų matomas, arba False, kad IE veiktų foneIE.Visible = Tiesa„Apibrėžkite URLURL = "https://www.automateexcel.com/vba"„Eikite į URLIE. Naršyti URL„Būsenos juosta leiskite vartotojui žinoti, kad svetainė įkeliamaApplication.StatusBar = URL & "įkeliamas. Palaukite …"„Palaukite, kol įkeliamas IE“.„Do while IE.ReadyState“ = 4: „DoEvents“: ciklasDaryti iki IE.ReadyState = 4: DoEvents: Loop'Tinklapis įkeltasApplication.StatusBar = URL ir „Įkelta“„Gaukite IE lango ID, kad galėtume jį nustatyti kaip aktyvinimo langąHWNDSrc = IE.HWND„Nustatykite IE kaip aktyvų langąSetForegroundWindow HWNDSrc„Raskite ir užpildykite įvesties laukelįn = 0Už kiekvieną ITM IE.document.allJei itm = "[objektas HTMLInputElement]" Tadan = n + 1Jei n = 3, tadaitm.Value = "orksheet"itm.Focus 'Suaktyvina įvesties laukelį (rodomas žymeklis)Application.SendKeys „{w}“, tiesa 'Modeliuoja klavišo „W“ paspaudimą. Tiesa liepia VBA palaukti“, kol paspausite klavišą prieš tęsdami, leisdami„javascript“ puslapyje, kad galėtumėte paleisti ir filtruoti lentelę„GoTo endmacro“Pabaiga JeiPabaiga JeiKitas„Iškrauti IEendmacro:Nustatykite IE = niekoNustatyti objElement = NiekoNustatyti objCollection = NiekoPabaiga Sub

„GetElement“ IE naudojant VBA

Sąveika su objektais „Internet Explorer“ dažnai gali būti skausminga. Turite nustatyti, su kokiu konkrečiu objektu dirbti. Pirmiau pateiktame kode ieškome trečiojo „[object HTMLInputElement]“ egzemplioriaus (įvesties formos). Tada įvesties formoje įvedame „orksheet“ (itm.value = „orksheet“), perkeliame žymeklį į įvesties formą (itm.focus) ir įvedame „w“. Šiuo atveju būtina įvesti „w“, kad suaktyvintumėte „JavaScript“, naudojamą lentelės filtravimui.

Yra daugiau tiesioginių objektų pasirinkimo būdų, tačiau šis metodas turėtų veikti, jei visa kita nepavyks.

Norėdami naudoti kitus metodus, norėsite naudoti šias parinktis:

1234 IE.document.getelementbyid ("ID"). Value = "value" 'Rasti pagal IDIE.document.getelementsbytagname ("ID"). Value = "value" 'Rasti pagal žymąIE.document.getelementsbyclassname ("ID"). Value = "value" 'Rasti pagal klasęIE.document.getelementsbyname ("ID"). Value = "value" 'Rasti pagal pavadinimą

Naudodami šiuos metodus galite susidurti su problemomis, jei yra daugiau nei vienas elementas tuo pačiu pavadinimu. Naudodami ciklą (kaip aukščiau pateiktame pavyzdiniame kode) galite nurodyti, kurį elemento egzempliorių naudoti.

Bendraukite su IE naudodami VBA

Aukščiau esančiame kode naudojame įvykį: Sutelkti dėmesį (itm.focus), kad suaktyvintumėte formos žymeklį.

Daugiau objektų/elementų įvykių, metodų ir ypatybių pavyzdžių rasite čia: https://msdn.microsoft.com/en-us/library/ms535893(v=vs.85).aspx

Ne visi jie veiks su kiekvienu objektu / elementu, o sąveikaujant su objektais IE gali būti nemažai bandymų ir klaidų.

„Sendkeys“ į „Internet Explorer“

Mes naudojome komandą „Sendkeys“ aukščiau esančiame kode:

1 Application.SendKeys „{w}“, tiesa

„Sendkeys“ paprastai turėtų būti paskutinė išeitis. Paprastai turėtumėte turėti galimybę tiesiogiai bendrauti su objektais, tačiau kartais paprasčiau tiesiog naudoti komandą „Sendkeys“. „Sendkeys“ iš esmės yra tas pats, kas rašyti klaviatūra. Prieš tęsdami turite įsitikinti, kad pasirenkami tinkami langai ir objektai. „Sendkeys“ taip pat gali suaktyvinti įvykius, kurie vykdomi atsižvelgiant į naudotojo sąveiką žiniatinklyje. Aukščiau pateiktame pavyzdyje mes naudojame „Sendkeys“, kad suaktyvintume „Javascript“ filtrą lentelėje, kurią naudojame tinklalapyje.

„Sendkeys“ turi du įėjimus:
1. raktas, kurį reikia įvesti (paprastai apsuptas {}… {enter}, {q}…)
2. Prieš tęsdami TRUE/FALSE, palaukite, kol Sendkeys bus baigtas. Paprastai norėsite, kad šis rinkinys būtų TRUE, kai dirbate su „Internet Explorer“.

Fone paleiskite „Internet Explorer“

Norėdami paleisti „Internet Explorer“ fone, turite atlikti du veiksmus:

1. Paskambinkite makrokomandai, kurioje yra IE kodas, naudodami programą. Vykdykite, kad makrokomanda veiktų fone, kai tęsite darbą:

1 Application.Run („Automatizuoti_IE_Load_Page“)

Pastaba: šis kodas gali sutrikdyti jūsų darbą arba jūsų darbas gali trukdyti kodui. Pvz., Jei naudojate „SendKeys“, „Sendkeys“ gali nusiųsti klavišo paspaudimą netinkamai programai. Būkite labai atsargūs.
2. Slėpti IE:

1 IE.Visible = Netiesa

Selenas ir VBA

Jei šis straipsnis jums pasirodė naudingas, galbūt norėsite patikrinti Dano Strongo žiniatinklio automatikos kursą. Jame aprašoma, kaip naudoti seleną su VBA.

(Iš Dano kurso gaunu partnerių komisiją)

Vieno iš Dano mokinių liudijimas

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

Padėsite svetainės plėtrą, dalintis puslapį su draugais

wave wave wave wave wave