Dens integration med Windows gør det muligt at styre Internet Explorer på en række overraskende måder ved hjælp af Visual Basic for Applications (VBA) script fra ethvert program, der understøtter det, f.eks. Word, Outlook eller Excel.
VBA-automatisering - specielt direkte automatisering af en browser som IE, som du vil se i denne artikel - er netop den slags ting, der hæver VBA fra et praktisk programmerings script til et kraftigt automatiseringssprog. Det der gør det så fantastisk er, at mange applikationer med kontroller eller objekter er skabt simpelthen for at give dig mulighed for at integrere i det ved hjælp af VBA programmeringssprog.
Gennem årene har vi vist dig, hvordan du laver nogle rigtig flotte ting med VBA. Du kan f.eks. Bruge det til at sende e-mails direkte indefra Excel Sådan sendes e-mails fra et Excel-regneark ved hjælp af VBA-scripts Sådan sender du e-mails fra et Excel-regneark ved hjælp af VBA-scripts Vi viser dig, hvordan du konfigurerer automatiserede e-mails indefra Excel ved hjælp af Collaboration Data Objects, (CDO) og VBA scripts. Vores kode skabeloner gør dette meget lettere end det lyder! Læs mere, du kan automatisk eksportere Outlook-opgaver til et Excel-regneark Sådan eksporteres dine Outlook-opgaver til Excel med VBA Sådan eksporteres dine Outlook-opgaver til Excel med VBA Uanset om du er fan af Microsoft, er en god ting, der kan siges om MS Office-produkter, i hvert fald, er det nemt at integrere hver enkelt af dem med hinanden .... Læs mere, og du kan endda designe din egen internetbrowser Sådan laver du din egen grundlæggende internetbrowser ved hjælp af VBA Sådan laver du Din egen grundlæggende internetbrowser ved hjælp af VBA Når du virkelig holder op med at tænke over det, er en internetbrowser i sin enkleste form ikke så imponerende et program. Jeg mener, ja, internettet er fantastisk af alles standarder. Konceptet med at forbinde ... Læs mere! Det er ikke kun Microsoft-produkter. Der er tredjepartsprogrammer fra alle slags leverandører, der har integreret VBA og kompatible genstande i deres software - fra Adobe Acrobat SDK til ObjectARX SDK til AutoCAD - der er måder at "plugge in" flere applikationer, end du sikkert forstår.
Ideen
I dette tilfælde vil du forbinde Excel med IE. Hvorfor IE? Fordi Internet Explorer er så godt integreret med operativsystemet, at du virkelig ikke behøver at gøre meget for at begynde at bruge IE-automation i VBA i andre Microsoft-produkter som Word eller Excel. Det er skønheden i. I denne artikel kan du se, hvordan denne automatisering fungerer, og i en fremtidig artikel kan du se, hvordan du gør næsten samme slags ting med andre browsere.
Det, jeg vil vise dig her, er en tilsyneladende simpel ansøgning, men det har masser af applikationer, hvor du kan bruge denne kode til at lave en række kølige ting med din browser. Den nederste linje er, at du skal oprette et Excel-regneark med det formål at hurtigt gemme alle dine åbne browservinduer med et enkelt klik. Du kan gemme dette regneark og gå væk eller slukke computeren.
Kom tilbage en time eller tre dage senere, åbn regnearket, klik på en anden knap, og de gemte webadresser genåbnes i samme antal faner som tidligere. Den åbenlyse kølige anvendelse af dette ville være at gemme et helt bibliotek af fælles online arbejdsområdesopsætninger i Excel. Derefter kan du gendanne det pågældende arbejdsområde med et enkelt klik uden at skulle finde alle disse webadresser igen.
Automatisering af Internet Explorer med VBA
Den første ting at gøre er at åbne Excel (jeg bruger 2013 - andre versioner er ens, når det kommer til VBA programmering) og gå til menuen Udvikler. Indeni vil du se en indsætsknap, som falder ned alle dine kontroller. Vælg ActiveX-knappen, og læg den i dit regneark.
Formentlig har du allerede oprettet en header for URL'er, hvis du vil, men du behøver ikke. Dette er virkelig et URL-opbevaringsbibliotek, så overskrifter gør ikke noget meget. Når du har tilføjet knappen, skal du dobbeltklikke på den for at åbne VBA-editoren. Nederst til venstre ses ejendommene for din nye trykknap.
Omdøb det til noget som cmdSaveURLs og sæt billedet til "Gem URL'er" - hvilket angiver, at dette er knappen for at gemme alle åbne webadresser fra din IE-browser.
Gå derefter til menuen Funktioner øverst i VBA-editoren, klik på Referencer i menuen, og rul ned den lange liste for at finde referencen "Microsoft Internet Controls". Klik på afkrydsningsfeltet til venstre for det, og klik derefter på OK.
Nu er du klar til at rulle. I editortekstområdet skal du se en linje, der læser "Privat Sub cmdSaveURLs_Click ()". Hvis du ikke kan se det, skal du klikke på den venstre rulleliste over tekstområdet og finde cmdSaveURLs i listen. Vælg det, og det vil oprette Click () -funktionen for dig.
Dette er koden, du vil indsætte i den funktion:
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 ende hvis næste sæt shellWins = Intet sæt IE = Intet
Microsoft Scripting Runtime-referencen gør det, så du kan få adgang til ShellWindows-objektet, som giver dig mulighed for at gentage gennem Windows og finde forekomster af IE, som du har åbnet. Dette script finder alle de webadresser, du har åbent, og skriver det til Excel-regnearket.
Så i teorien, hvis du arbejder på noget som blogging, og du har nogle ting åbne, f.eks. Forskningsvinduer, din blogredaktør eller et kalendervindue - alle disse faner vil være aktive. Hvis du er nødt til at lukke eller forlade travlt, kan det være en reel smerte at gemme, hvor du er ved at kopiere alle disse webadresser.
Med dit nye Excel-script skal du blot klikke på knappen Load URLs, og det vil indlæse det lige ind i regnearket.
En advarsel. Hvis du ikke bruger en headerrække, vil du gerne ændre linjen "intRowPosition = 2" til "intRowPosition = 1", og dette starter i første række i stedet for at springe over overskriftsrækken.
Åbning af din gemte browser-arbejdsområde
Næste fase af dette projekt er at gå i den anden retning. Klik på "Indlæs webadresser" og få Excel lanceringen IE og genindlæs alle de webadresser, du har gemt i regnearket. Her er hvad funktionen cmdLoadURLs_Click () skal se ud.
Dim IE Som Object Dim ShellWins Som New ShellWindows Dim IE_TabURL Som String Dim IntRowPosition Som Integer intRowPosition = 2 Indstil 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 = Intet
Der er et par trin her, men som du kan se koden er ikke så lang eller kompliceret. Du opretter en ny forekomst af IE, gør den synlig (dette åbner IE uden at indlæse en URL). Herefter lægges den første webadresse op på listen.
"Mens IE.Busy" -delen af scriptet venter, indtil siden er fuldt indlæst, og derefter fortsæt til resten af webadresserne i dit regneark, åbner du en ny fane (det er hvad "CLng (2048)" gør, indtil det rammer en tom celle i dit regneark, så stopper det med at åbne nye faner. Her er min IE-browser med alle fire originale faner genoprettet ved hjælp af Excel IE-automatiseringsskriptet.
Resumé
Mit virkelige mål om at gøre dette var at få individuelle regneark til at oprette samlinger af faner til opgaver som at forske og skrive på min egen blog, skrive på MakeUseOf, lave SEO-projektarbejde på webstedet eller en hel liste over andre roller eller projekter, der kræver En gemt samling af faner, der altid bruges.
Brug af et regneark til at gemme disse opsætninger og automatisere åbning dem i en browser kan spare meget tid ... og det er faktisk ret cool også.
Bruger du nogen form for IE-automatisering i dine VBA-applikationer? Se andre cool anvendelser til denne type IE-kontrol fra Excel? Del dine tanker og feedback i kommentarfeltet nedenfor!