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