Annonse

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

VBA-automatisering - spesielt direkte automatisering av en nettleser som IE som du vil se i denne artikkelen - er nøyaktig den slags ting som løfter VBA fra et praktisk programmeringsskript til et kraftig automatiseringsspråk. Det som gjør det så kjempebra, er det faktum at mange applikasjoner med kontroller eller objekter er laget bare med det formål å la deg integrere i det ved hjelp av programmeringsspråket VBA.

Gjennom årene har vi vist deg hvordan du kan gjøre noen kule ting med VBA. Du kan for eksempel bruke den til send e-post direkte fra Excel Slik sender du e-post fra et Excel-regneark ved hjelp av VBA-skriptKodemalen vår vil hjelpe deg med å sette opp automatiserte e-poster fra Excel ved hjelp av CDO (Collaboration Data Objects) og VBA-skript. Les mer

instagram viewer
, kan du automatisk eksportere Outlook-oppgaver til et Excel-regneark Slik eksporterer du Outlook-oppgavene dine til Excel med VBAEnten du er fan av Microsoft eller ikke, er en god ting som i det minste kan sies om MS Office-produkter hvor enkelt det er å integrere hver av dem med hverandre ... Les mer , og du kan til og med design din egen nettleser Hvordan lage din egen grunnleggende nettleser ved hjelp av VBANår du virkelig stopper opp for å tenke på det, er en nettleser i sin enkleste form ikke så imponerende applikasjon. Jeg mener, ja, Internett er fantastisk etter noens standarder. Konseptet med å koble ... Les mer ! Det er heller ikke bare Microsoft-produkter. Det er tredjeparts applikasjoner fra alle slags leverandører som har integrert VBA og kompatible objekter i programvaren deres - fra Adobe Acrobat SDK til ObjectARX SDK for AutoCAD - det er måter å "koble til" flere applikasjoner enn du sannsynligvis innse.

Ideen

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

Det jeg skal vise deg her er et tilsynelatende enkelt program, men det har mange applikasjoner der du kan bruke denne koden til å gjøre en rekke kule ting med nettleseren din. Hovedpoenget er at du skal lage et Excel-regneark med det formål å raskt lagre alle å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 URL-ene åpnes igjen i samme antall faner som du hadde før. Den åpenbare kule bruken av dette ville være å lagre et helt bibliotek med vanlige online arbeidsoppsett i Excel. Da kan du gjenopprette arbeidsområdet med ett klikk på en knapp uten å måtte finne alle disse URL-ene igjen.

Automatisere Internet Explorer med VBA

Den første tingen å gjøre er å åpne Excel (jeg bruker 2013 - andre versjoner er like når det gjelder VBA-programmering) og gå til Developer-menyelementet. Der inne vil du se en innsettingsknapp som slipper ned alle kontrollene dine. Velg ActiveX-trykknappkontrollen og legg den i regnearket.

IE-automation1

Antagelig har du allerede opprettet en overskrift for nettadresser hvis du vil, men det trenger du ikke. Dette er virkelig et URL-lagringsbibliotek, så topptekster spiller ingen rolle. Når du har lagt til knappen, dobbeltklikker du på den for å åpne VBA-redigereren. Nederst til venstre ser du egenskapene til den nye trykknappen.

Gi den nytt navn til noe som cmdSaveURLs og sett bildeteksten til “Lagre URL-adresser” - som indikerer at dette er knappen for å lagre alle åpne URL-er fra IE-nettleseren.

save-webadresser

Gå deretter til Verktøy-menyen øverst i VBA-redigereren, klikk på Referanser i menyen og bla nedover den lange listen for å finne referansen “Microsoft Internet Controls”. Klikk i avmerkingsboksen til venstre for den, og klikk deretter OK.

IE-automation3

Nå er du klar til å rulle. I tekstområdet for redigeringsprogrammet skal du se en linje som lyder “Privat sub cmdSaveURLs_Click ()”. Hvis du ikke ser det, klikker du den venstre rullegardinboksen over tekstområdet og finner cmdSaveURLs i listen. Velg den, så oppretter du Click () -funksjonen for deg.

Dette er koden du vil sette inn i den funksjonen:

im IE som objekt. Dimm shell shell som nye ShellWindows. Dim IE_TabURL som streng. Dim intRowPosition Som heltall intRowPosition = 2 For hver IE i shellWins IE_TabURL = IE.LocationURL Hvis IE_TabURL <> vbNullString Then Sheet1.Range ("A" & intRowPosition) = IE_TabURL intRowPosition = intRowPosition + 1 Slutt Hvis neste sett shellWins = Ingenting. Sett IE = Ingenting

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

IE-automation4

Så i teorien, hvis du jobber med noe som å blogge, og du har noen få elementer åpne, for eksempel forskningsvinduer, bloggredaktøren eller et kalendervindu - vil alle disse fanene være aktive. Hvis du må legge ned eller la være i en hast, kan det være en virkelig smerte å redde der du er ved å kopiere alle disse URL-ene.

IE-automation5

Med det nye Excel-skriptet klikker du bare på Last inn nettadresser-knappen, så lastes den rett inn i regnearket.

IE-automation6

Ett påminnelse. Hvis du ikke bruker en overskriftsrekke, vil du endre linjen "intRowPosition = 2" til "intRowPosition = 1", og dette vil starte på den første raden i stedet for å hoppe over overskriftsraden.

Åpne det lagrede nettleserarbeidsområdet

Neste trinn i dette prosjektet er å gå i den andre retningen. Klikk på "Last inn URL-adresser" og la Excel starte IE og laste inn alle URL-ene du har lagret i regnearket. Slik ser funksjonen cmdLoadURLs_Click () ut.

Dim IE som objekt. Dimm shell shell som nye ShellWindows. Dim IE_TabURL som streng. Demp intRowPosition som heltall intRowPosition = 2 Sett IE = CreateObject ("InternetExplorer. Applikasjon") IE.Visible = True IE.Avigate Sheet1.Range ("A" & intRowPosition) Mens IE.Busy DoEvents. Wend intRowPosition = intRowPosition + 1 While Sheet1.Range ("A" & intRowPosition) <> vbNullString IE.Navigate Ark1.Range ("A" & intRowPosition), CLng (2048) Mens IE.Busy DoEvents Wend intRowPosition = intRowPosition + 1. Wend Set IE = Ingenting

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

IE-automation8

"Mens IE.Busy" -delen av skriptet venter til siden er fullastet, og gå videre til resten av URL-ene i regnearket, åpner en ny fane (det er hva "CLng (2048)" gjør, til den treffer en tom celle i regnearket ditt, så stopper det åpner nye faner. Her er IE-nettleseren min med alle de fire originale fanene som er gjenopprettet ved hjelp av Excel IE-automatiseringsskriptet.

IE-automation9

Sammendrag

Mitt virkelige mål med å gjøre dette var å få individuelle regneark til å sette opp samlinger med faner for oppgaver som å forske og skrive på min egen blogg, skrive på MakeUseOf, gjør SEO-prosjektarbeid på nettstedet, eller en hel liste over andre roller eller prosjekter som krever en lagret samling av faner som alltid er brukt.

Å bruke et regneark til å lagre oppsettene og automatisere åpne dem i nettleseren kan spare mye tid... og det er faktisk ganske kult også.

Bruker du noen form for IE-automatisering i VBA-applikasjonene dine? Ser du noen andre kule bruksområder for denne typen IE-kontroller fra Excel? Del tankene og tilbakemeldingene i kommentarfeltet nedenfor!

Ryan har en BSc-grad i elektroteknikk. Han har jobbet 13 år innen automatisering, 5 år innen IT, og er nå en applikasjonsingeniør. Han var tidligere administrerende redaktør for MakeUseOf, han snakket på nasjonale konferanser om datavisualisering og har blitt omtalt på nasjonal TV og radio.