Automatisoi Internet Explorer (IE) VBA: n avulla

Tämä sivu sisältää koodausesimerkkejä Internet Explorerin (IE) automatisoimiseksi VBA: n avulla.

** Päivitys 7.6.2019: Tällä hetkellä paras tapa saavuttaa verkkoautomaatio VBA: n avulla on käyttää seleeniä. Tämä artikkeli EI kata seleeniä. Alla olevat esimerkit toimivat ja saattavat riittää tarpeisiisi. Jos sinulla on kuitenkin edistyneempiä tarpeita tai haluat tulla verkkoautomaation asiantuntijaksi, suosittelen lämpimästi seleenin käyttöä. Dan Strongin Web Automation -kurssi (alennus saatavilla tämän linkin kautta) on loistava resurssi seleenin oppimiseen:

(Saan kumppanikomission Danin kurssilta)

Siirry verkkosivulle VBA: n avulla

Ensimmäinen koodikappale avaa IE: n ja siirtyy verkkosivulle. Toinen koodikappale avaa IE: n, siirtyy verkkosivustolle ja on vuorovaikutuksessa syöttökentän kanssa.

12345678910111213141516171819202122232425262728293031323334353637 Sub Automate_IE_Load_Page ()'Tämä lataa verkkosivun IE: henDim niin kauanHimmennä URL merkkijononaDim IE objektinaDim objElement as ObjectDim objCollection objektinaLuo InternetExplorer -objektiAseta IE = CreateObject ("InternetExplorer.Application")'Aseta IE.Visible = True, jotta IE näkyy, tai False, jos IE suoritetaan taustallaIE.Visible = Totta'Määritä URL -osoiteURL = "https://www.automateexcel.com/excel/"'Siirry URL -osoitteeseenIE.Navigate URL'Tilarivi ilmoittaa käyttäjälle, että verkkosivusto latautuuApplication.StatusBar = URL & "ladataan. Odota…"'Odota, kun IE latautuu …'Do while IE.ReadyState = 4: DoEvents: Loop 'Do whileTee kunnes IE.ReadyState = 4: DoEvents: Loop 'Tee asti'Verkkosivu ladattuApplication.StatusBar = URL & "Ladattu"'Pura IEAseta IE = ei mitäänAseta objElement = Ei mitäänAseta objCollection = Ei mitäänEnd Sub

Hyvin yleinen ongelma, jonka ihmiset kohtaavat työskennellessään IE: n kanssa VBA: ssa, on VBA, joka yrittää suorittaa koodin ennen kuin Internet Explorer on ladattu täyteen. Käyttämällä tätä koodia kerrot VBA: lle toistavan silmukan, kunnes IE on valmis (IE.ReadyState - 4).

1234 'Odota, kun IE latautuu …'Do while IE.ReadyState = 4: DoEvents: Loop 'Do whileTee kunnes IE.ReadyState = 4: DoEvents: Loop 'Tee asti

Huomaa myös tämä koodirivi:

1 IE.Visible = TOSI

Tämä koodi vaihtaa, toimiiko IE taustalla vai etualalla.

Avaa URL ja syötä tiedot lomakkeeseen VBA: n avulla

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 'Tämän on oltava moduulin yläosassa. Sitä käytetään IE: n asettamiseen aktiiviseksi ikkunaksiJulkisen ilmoituksen toiminto SetForegroundWindow Lib "user32" (ByVal HWND niin kauan) niin kauanSub Automate_IE_Enter_Data ()'Tämä lataa verkkosivun IE: henDim niin kauanHimmennä URL merkkijononaDim IE objektinaDim objElement as ObjectDim objCollection objektinaDim HWNDSrc niin pitkäLuo InternetExplorer -objektiAseta IE = CreateObject ("InternetExplorer.Application")'Aseta IE.Visible = True, jotta IE näkyy, tai False, jos IE suoritetaan taustallaIE.Visible = Totta'Määritä URL -osoiteURL = "https://www.automateexcel.com/vba"'Siirry URL -osoitteeseenIE.Navigate URL'Tilarivi ilmoittaa käyttäjälle, että verkkosivusto latautuuApplication.StatusBar = URL & "ladataan. Odota…"'Odota, kun IE latautuu …'Tee samalla IE.ReadyState = 4: DoEvents: LoopTee kunnes IE.ReadyState = 4: DoEvents: Loop'Verkkosivu ladattuApplication.StatusBar = URL & "Ladattu"'Hanki IE: n ikkunatunnus, jotta voimme asettaa sen aktivointi -ikkunaksiHWNDSrc = IE.HWND'Aseta IE aktiiviseksi ikkunaksiSetForegroundWindow HWNDSrc'Etsi ja täytä syöttölaatikkon = 0Jokaiselle ITM: lle IE.document.allJos itm = "[objekti HTMLInputElement]" Sittenn = n + 1Jos n = 3 Sittenitm.Value = "orksheet"itm.Focus 'Aktivoi syöttöruudun (saa kohdistimen näkyviin)Application.SendKeys "{w}", True 'Simuloi W -näppäimen painallusta. True kehottaa VBA: ta odottamaan'kunnes näppäinpainallus on päättynyt ennen kuin jatkat, sallien'javascript sivulla taulukon suorittamiseen ja suodattamiseenGo to endmacroLoppu JosLoppu JosSeuraava'Pura IEpäämakro:Aseta IE = ei mitäänAseta objElement = Ei mitäänAseta objCollection = Ei mitäänEnd Sub

GetElement IE: ssä VBA: n avulla

Vuorovaikutus esineiden kanssa Internet Explorerissa voi usein olla tuskaa. Sinun on tunnistettava, minkä objektin kanssa haluat työskennellä. Yllä olevassa koodissa etsimme ”[object HTMLInputElement]” (syöttölomake) 3. esiintymää. Sitten syötetään "orksheet" syöttölomakkeeseen (itm.value = "orksheet"), siirretään kohdistin syöttölomakkeeseen (itm.focus) ja kirjoitetaan "w". Kirjoittaminen "w" on tässä tapauksessa tarpeen taulukon suodattamiseen käytettävän javascriptin aktivoimiseksi.

Objektien valitsemiseen on olemassa suorempia menetelmiä, mutta tämän menetelmän pitäisi toimia, jos kaikki muu epäonnistuu.

Jos haluat käyttää näitä muita menetelmiä, haluat käyttää seuraavia vaihtoehtoja:

1234 IE.document.getelementbyid ("ID"). Value = "value" 'Etsi tunnuksen perusteellaIE.document.getelementsbytagname ("ID"). Value = "value" 'Etsi tunnisteellaIE.document.getelementsbyclassname ("ID"). Value = "value" 'Etsi luokan mukaanIE.document.getelementsbyname ("ID"). Value = "value" 'Etsi nimen perusteella

Näitä menetelmiä käytettäessä voi esiintyä ongelmia, jos samannimisiä elementtejä on useita. Käyttämällä silmukkaa (kuten yllä olevassa esimerkkikoodissa) voit määrittää käytettävän elementin esiintymän.

Ole vuorovaikutuksessa IE: n kanssa VBA: n avulla

Yllä olevassa koodissa käytämme tapahtumaa: Keskity (itm.focus) aktivoidaksesi kohdistimen lomakkeessa.

Lisää esimerkkejä objektien/elementtien tapahtumista, menetelmistä ja ominaisuuksista löydät täältä: https://msdn.microsoft.com/en-us/library/ms535893(v=vs.85).aspx

Kaikki nämä eivät toimi kaikkien objektien / elementtien kanssa, ja voi olla melko vähän kokeiluja ja virheitä, kun olemme vuorovaikutuksessa objektien kanssa IE: ssä.

Lähetä avaimet Internet Exploreriin

Käytimme Sendkeys -komentoa yllä olevassa koodissa:

1 Application.SendKeys "{w}", Totta

Lähetysavainten pitäisi yleensä olla viimeinen keino. Sinun pitäisi yleensä pystyä olemaan vuorovaikutuksessa objektien kanssa suoraan, mutta joskus on helpompaa käyttää vain Sendkeys -komentoa. Lähetysavaimet ovat pohjimmiltaan sama kuin näppäimistöllä kirjoittaminen. Sinun on varmistettava, että oikeat ikkunat ja objektit valitaan ennen kuin jatkat. Lähetysavaimet voivat myös käynnistää tapahtumia, jotka suoritetaan käyttäjän vuorovaikutuksen perusteella verkossa. Yllä olevassa esimerkissä käytämme Sendkeys -näppäintä aktivoidaksemme Javascript -suodattimen taulukossa, jota käytämme verkkosivulla.

Sendkeysissä on kaksi tuloa:
1. syötettävä avain (yleensä ympäröi {}… {enter}, {q}…)
2. Odota, kunnes Sendkeys on valmis, ennen kuin jatkat TOSI/EPÄTOSI. Yleensä haluat tämän asetuksen olevan TOSI, kun käytät Internet Exploreria.

Suorita Internet Explorer taustalla

Jos haluat käyttää Internet Exploreria taustalla, sinun on tehtävä kaksi asiaa:

1. Soita IE -koodin sisältävä makro sovelluksella. Suorita niin, että makro toimii taustalla, kun jatkat työskentelyä:

1 Application.Run ("Automate_IE_Load_Page")

Huomautus: Tämä koodi saattaa keskeyttää työn tai työsi voi häiritä koodia. Jos esimerkiksi käytät SendKeys -näppäintä, Sendkeys saattaa lähettää näppäinpainalluksen väärään sovellukseen. Ole erittäin varovainen tämän kanssa.
2. Piilota IE:

1 IE.Visible = epätosi

Seleeni ja VBA

Jos tämä artikkeli oli mielestäsi hyödyllinen, kannattaa ehkä tarkistaa Dan Strongin Web Automation -kurssi. Se kattaa seleenin käytön VBA: n kanssa.

(Saan kumppanikomission Danin kurssilta)

Lausunto eräältä Danin oppilaalta

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

Tulet auttaa kehittämään sivuston jakaminen sivu ystävillesi

wave wave wave wave wave