
Owen Little
0
4446
583
Dens integration med Windows giver kontrol over 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, såsom Word, Outlook eller Excel.
VBA-automatisering - især direkte automatisering af en browser som IE, som du vil se i denne artikel - er nøjagtigt den slags ting, der løfter VBA fra et praktisk programmeringsskript til et kraftfuldt automatiseringssprog. Det, der gør det så fantastisk, er det faktum, at mange applikationer med kontroller eller objekter oprettes simpelthen med det formål at give dig mulighed for at integrere det ved hjælp af VBA-programmeringssprog.
Gennem årene har vi vist dig, hvordan du laver nogle virkelig seje ting med VBA. For eksempel kan du bruge det til at sende e-mails direkte fra Excel Sådan sendes e-mails fra et Excel-regneark ved hjælp af VBA-scripts Sådan sendes e-mails fra et Excel-regneark ved hjælp af VBA-scripts Vores kodeskabelon hjælper dig med at opsætte automatiserede e-mails fra Excel ved hjælp af Samarbejdsdataobjekter (CDO) og VBA-scripts. , kan du 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 eller ikke, er en god ting der kan siges om MS Kontorprodukter er i det mindste hvor nemt det er at integrere hver af dem med hinanden ... og du kan endda designe din egen internetbrowser Sådan opretter du din egen basale internetbrowser ved hjælp af VBA Sådan opretter 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 en applikation. Jeg mener, ja, Internettet er forbløffende efter nogens standarder. Begrebet at forbinde ...! Det er heller ikke kun Microsoft-produkter. Der er tredjeparts applikationer fra alle mulige leverandører, der har integreret VBA og kompatible objekter i deres software - fra Adobe Acrobat SDK til ObjectARX SDK til AutoCAD - der er måder at “tilsluttes” flere applikationer, end du sandsynligvis er klar over.
Ideen
I dette tilfælde skal 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-automatisering i VBA i andre Microsoft-produkter som Word eller Excel. Det er det smukke ved. I denne artikel kan du se, hvordan denne automatisering fungerer, og i en fremtidig artikel vil du se, hvordan du gør næsten den samme slags ting med andre browsere.
Hvad jeg vil vise dig her er et tilsyneladende enkelt program, men det har masser af applikationer, hvor du kunne bruge denne kode til at gøre en række seje 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 på en knap. Du kan gemme dette regneark og gå væk eller slukke for din computer.
Kom tilbage en time eller tre dage senere, åbn regnearket, klik på en anden knap, og de gemte URL'er åbnes igen i det samme antal faner, som du havde før. Den åbenlyse cool anvendelse af dette ville være at gemme et helt bibliotek med almindelige online arbejdsområdeopsætninger i Excel. Derefter kan du gendanne dette arbejdsområde med et enkelt klik på en knap uden at skulle finde alle disse URL'er igen.
Automatisering af Internet Explorer med VBA
Den første ting at gøre er at åbne Excel (jeg bruger 2013 - andre versioner ligner når det kommer til VBA-programmering) og gå til Developer-menupunktet. Inde der ser du en indsættelsesknap, der slipper alle dine kontroller ned. Vælg ActiveX-trykknappen, og anbring den i dit regneark.
Antagelig har du allerede oprettet en header til webadresser, hvis du vil, men det behøver du ikke. Dette er virkelig et URL-lagringsbibliotek, så headers betyder ikke rigtig noget. Når du har tilføjet knappen, skal du dobbeltklikke på den for at åbne VBA-editoren. Nederst til venstre ser du egenskaberne for din nye trykknap.
Omdøb det til noget som cmdSaveURLs, og indstil billedtekst til “Gem webadresser” - hvilket indikerer, at dette er knappen til 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 langs den lange liste for at finde “Microsoft Internet-kontrol” reference. Klik på afkrydsningsfeltet til venstre for det, og klik derefter på OK.
Nu er du klar til at rulle. I editorens tekstområde skal du se en linje, der læser “Privat sub cmdSaveURLs_Click ()”. Hvis du ikke kan se det, skal du klikke på det venstre rulleliste over tekstområdet og finde cmdSaveURLs på listen. Vælg det, så oprettes funktionen Click () til dig.
Dette er den kode, du vil indsætte i den funktion:
im IE Som objekt Dim shellWins Som nye ShellWindows Dim IE_TabURL Som streng Dim intRowPosition Som heltal intRowPosition = 2 For hver IE i shellWins IE_TabURL = IE.LocationURL Hvis IE_TabURL vbNullString derefter Sheet1.Range ("A" & intRowPosition = I 1 Slut Hvis næste sæt shellWins = Intet sæt IE = Intet
Microsoft Scripting Runtime-reference gør det så du kan få adgang til ShellWindows-objektet, som giver dig mulighed for at iterere gennem Windows og finde de forekomster af IE, du har åbent. Dette script finder hver URL, du har åben, og skriver den til Excel-regnearket.
Så i teorien, hvis du arbejder på noget som blogging, og du har et par emner åbne, f.eks. Forskningsvinduer, din blogeditor eller et kalendervindue - alle disse faner vil være aktive. Hvis du er nødt til at lukke eller forlade det, kan det være en rigtig smerte at gemme, hvor du er ved at kopiere alle disse webadresser.
Med dit nye Excel-script skal du bare klikke på knappen Indlæs webadresser, og det indlæses direkte i regnearket.
Et advarsel. Hvis du ikke bruger en overskriftsrække, skal du ændre linjen “intRowPosition = 2” til “intRowPosition = 1” og dette vil begynde ved den første række i stedet for at springe overskriftsraden.
Åbning af dit gemte browserarbejdsområde
Den næste fase af dette projekt er at gå i den anden retning. Klik på “Indlæs webadresser” og lad Excel starte IE og genindlæse alle de URL-adresser, du har gemt i regnearket. Her er hvordan cmdLoadURLs_Click () -funktionen skal se ud.
Dim IE som objekt Dim shellVinser som nye ShellWindows Dim IE_TabURL Som streng Dim intRowPosition Som heltal intRowPosition = 2 Set IE = CreateObject ("InternetExplorer.Application") IE.Visible = Sand IE.Navigate Sheet1.Range ("A" & intRowPosition) IE.Busy DoEvents Wend intRowPosition = intRowPosition + 1 While Sheet1.Range ("A" & intRowPosition) vbNullString IE.Navigate Sheet1.Range ("A" & intRowPosition), CLng (2048) While IE.Busy DoEvents Wend intRowPosition = intRow 1 Wend Set IE = Intet
Der er et par trin her, men som du kan se er koden 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). Dernæst indlæses den første URL på listen.
Det “Mens IE.Busy” en del af scriptet venter, indtil siden er fuldt indlæst, og gå derefter videre til resten af URL-adresserne i dit regneark ved at åbne en ny fane (det er hvad “CLng (2048)” gør, indtil den rammer en tom celle i dit regneark, stopper det med at åbne nye faner. Her er min IE browser med alle fire originale faner gendannet ved hjælp af Excel IE automatiseringsscript.
Resumé
Mit virkelige mål med 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, udføre 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 automatisering af at åbne dem i en browser kan spare meget tid… og det er faktisk også ret cool.
Bruger du nogen form for IE-automatisering i dine VBA-applikationer? Ser du andre seje anvendelser til denne type IE-kontrol fra Excel? Del dine tanker og feedback i kommentarfeltet nedenfor!