Bruke VBA til å automatisere Internet Explorer-økter fra et Excel-regneark

Bruke VBA til å automatisere Internet Explorer-økter fra et Excel-regneark / Windows

Integrasjonen med Windows tillater kontroll over Internet Explorer på en rekke overraskende måter ved hjelp av Visual Basic for Applications (VBA) skript fra ethvert program som støtter det, for eksempel Word, Outlook eller Excel.

VBA-automatisering - spesielt direkte automatisering av en nettleser som IE som du vil se i denne artikkelen - er akkurat den typen ting som hever VBA fra et praktisk programmeringsskript til et kraftig automatiseringsspråk. Det som gjør det så utrolig er at mange applikasjoner med kontroller eller objekter er opprettet bare for å tillate deg å integrere i det ved hjelp av VBA programmeringsspråk.

Gjennom årene har vi vist deg hvordan du gjør noen veldig kule ting med VBA. For eksempel kan du bruke den til å sende e-post direkte fra innsiden Excel Slik sender du e-post fra et Excel-regneark ved hjelp av VBA-skript Hvordan sende e-post fra et Excel-regneark ved hjelp av VBA-skript Vår kodemal hjelper deg med å konfigurere automatiserte e-poster fra Excel ved hjelp av Samarbeid Dataobjekter (CDO) og VBA-skript. Les mer, du kan automatisk eksportere Outlook-oppgaver til et Excel-regneark. Slik eksporterer du Outlook-oppgaver til Excel med VBA. Slik eksporterer du Outlook-oppgaver til Excel med VBA. Uansett om du er en fan av Microsoft, er det en god ting som kan sies om MS Office-produkter, i hvert fall, er det lett å integrere hverandre med hverandre ... Les mer, og du kan selv designe din egen nettleser Hvordan lage din egen grunnleggende nettleser ved hjelp av VBA Hvordan lage din egen grunnleggende Nettleser ved hjelp av VBA Når du virkelig slutter å tenke på det, er en nettleser i sin enkleste form ikke så imponerende et program. Jeg mener, ja, Internett er fantastisk av alles standarder. Konseptet med å knytte ... Les mer! Det er ikke bare Microsoft-produkter. Det finnes tredjepartsprogrammer fra alle slags leverandører som har integrert VBA og kompatible objekter i deres programvare - fra Adobe Acrobat SDK til ObjectARX SDK for AutoCAD - det finnes måter å “plugg inn i” flere applikasjoner enn du sikkert skjønner.

Ideen

I dette tilfellet skal du koble Excel med IE. Hvorfor IE? Fordi Internet Explorer er så godt integrert med operativsystemet at du egentlig ikke trenger å gjøre mye for å begynne å bruke IE-automatisering i VBA i andre Microsoft-produkter som Word eller Excel. Det er skjønnheten i. I denne artikkelen ser du hvordan denne automatiseringen fungerer, og i en fremtidig artikkel ser du hvordan du gjør nesten samme type ting med andre nettlesere.

Det jeg skal vise deg her, er en tilsynelatende enkel applikasjon, men det har mange applikasjoner der du kan bruke denne koden til å gjøre en rekke kule ting med nettleseren din. Bunnlinjen er at du skal lage et Excel-regneark med det formål å raskt lagre alle dine åpne nettleservinduer med ett klikk på en knapp. Du kan lagre dette regnearket og gå bort eller slå av datamaskinen.

Kom tilbake en time eller tre dager senere, åpne regnearket, klikk på en annen knapp, og de lagrede nettadressene vil åpne i samme antall faner som tidligere. Den åpenbare kule bruken av dette ville være å lagre et helt bibliotek med felles online arbeidsområdeoppsett i Excel. Deretter kan du gjenopprette det arbeidsområdet med ett klikk på en knapp uten å måtte finne alle disse nettadressene igjen.

Automatisere Internet Explorer med VBA

Den første tingen å gjøre er å åpne Excel (jeg bruker 2013 - andre versjoner er liknende når det gjelder VBA programmering) og gå til Utvikler-menyelementet. Innsiden der vil du se en innsatsknapp, som faller ned alle dine kontroller. Velg ActiveX-knappens kontroll og legg den i regnearket.

Formentlig har du allerede opprettet en header for nettadresser hvis du vil, men du trenger ikke. Dette er virkelig et URL-lagringsbibliotek, slik at topptekstene ikke har noe å si. Når du har lagt til knappen, dobbeltklikk på den for å åpne VBA-editoren. Nederst til venstre ser du egenskapene for den nye trykknappen.

Gi nytt navn til noe som cmdSaveURLs og sett bildet til “Lagre nettadresser” - som indikerer at dette er knappen for å lagre alle åpne nettadresser fra din IE-nettleser.

Deretter går du til Verktøy-menyen øverst i VBA-editoren, klikker på Referanser i menyen, og ruller ned den lange listen for å finne den “Microsoft Internet Controls” henvisning. Klikk avkrysningsboksen til venstre for det, og klikk deretter OK.

Nå er du klar til å rulle. I redigeringstekstområdet bør du se en linje som leser “Privat Sub cmdSaveURLs_Click ()”. Hvis du ikke ser det, klikker du på den venstre rullegardinlisten over tekstområdet og finner cmdSaveURLs i listen. Velg den, og den vil skape Click () -funksjonen for deg.

Dette er koden du vil sette inn i den funksjonen:

im IE Som Objekt Dim ShellWins Som New ShellWindows Dim IE_TabURL Som String Dim IntRowPosition Som Integer intRowPosition = 2 For hver IE I shellWins IE_TabURL = IE.LocationURL Hvis IE_TabURL <> vbNullString Så Sheet1.Range ("A" & intRowPosition) = IE_TabURL intRowPosition = intRowPosition + 1 End Hvis Next Set shellWins = Ingenting Sett IE = Ingenting

Microsoft Scripting Runtime-referansen gjør det slik at du får tilgang til ShellWindows-objektet, som lar deg iterere gjennom Windows og finne forekomster av IE som du har åpnet. Dette skriptet vil finne hver nettadresse du har åpnet og skrive den til Excel-regnearket.

Så i teorien om du jobber med noe som blogging, og du har noen ting åpne, for eksempel forskningsvinduer, bloggredaktøren eller et kalendervindu - vil alle disse kategoriene være aktive. Hvis du må stenge eller ha det travelt, kan det være en virkelig smerte å lagre hvor du er ved å kopiere alle disse nettadressene.

Med ditt nye Excel-skript klikker du bare på Load URLs-knappen, og det vil laste det inn i regnearket.

En advarsel. Hvis du ikke bruker en headerrad, vil du endre linjen “intRowPosition = 2” til “intRowPosition = 1” og dette vil starte i første rad i stedet for å hoppe over topplinjen.

Åpner din lagrede nettleserens arbeidsområde

Den neste fasen av dette prosjektet er å gå i den andre retningen. Klikk på “Last inn nettadresser” og har Excel lansering IE og last inn alle de nettadressene du har lagret i regnearket. Her er hva cmdLoadURLs_Click () -funksjonen skal se ut.

Dim IE Som Object Dim ShellWins Som New ShellWindows Dim IE_TabURL Som String Dim IntRowPosition Som Integer intRowPosition = 2 Sett IE = CreateObject ("InternetExplorer.Application") IE.Visible = True IE.Navigate Sheet1.Range ("A" & intRowPosition) Mens IE.Busy DoEvents Wend intRowPosition = intRowPosition + 1 Mens Sheet1.Range ("A" & intRowPosition) <> vbNullString IE.Navigate Sheet1.Range ("A" & intRowPosition), CLng (2048) Mens IE.Busy DoEvents Wend intRowPosition = intRowPosition + 1 Wend Set IE = Ingenting

Det er noen få skritt her, men som du kan se er koden ikke så lang eller komplisert. Du lager en ny forekomst av IE, gjør den synlig (dette åpner IE uten å laste inn en URL). Deretter laster den den første nettadressen i listen.

De “Mens IE.Busy” En del av skriptet venter til siden er fulllastet, og deretter fortsetter du til resten av nettadressene i regnearket ditt, åpner en ny fane (det er det som “CLng (2048)” gjør det til det treffer en tom celle i regnearket ditt, så stopper det å åpne nye faner. Her er min IE-nettleser med alle fire originale faner gjenopprettet ved hjelp av Excel IE-automatiseringsskriptet.

Sammendrag

Mitt virkelige mål om å gjøre dette var å ha individuelle regneark satt opp samlinger av faner for oppgaver som å forske og skrive på min egen blogg, skrive på MakeUseOf, gjøre SEO-prosjektarbeid på nettstedet eller en hel liste over andre roller eller prosjekter som krever En lagret samling av faner som alltid brukes.

Ved å bruke et regneark for å lagre disse oppsettene og automatisere å åpne dem i en nettleser, kan du spare mye tid ... og det er faktisk ganske kult også.

Bruker du noen form for IE-automatisering i dine VBA-applikasjoner? Se noen andre kule bruksområder for denne typen IE-kontroll fra Excel? Del dine tanker og tilbakemeldinger i kommentarfeltet nedenfor!

Utforsk mer om: Computer Automation, Microsoft Excel, Regneark.