Använda VBA för att automatisera Internet Explorer-sessioner från ett Excel-kalkylblad

Dess integration med Windows tillåter kontroll av Internet Explorer på ett antal överraskande sätt med hjälp av Visual Basic for Applications (VBA) -skriptet från alla program som stöder det, till exempel Word, Outlook eller Excel.

Dess integration med Windows tillåter kontroll av Internet Explorer på ett antal överraskande sätt med hjälp av Visual Basic for Applications (VBA) -skriptet från alla program som stöder det, till exempel Word, Outlook eller Excel.
Annons

Dess integration med Windows tillåter kontroll av Internet Explorer på ett antal överraskande sätt med hjälp av Visual Basic for Applications (VBA) -skriptet från alla program som stöder det, till exempel Word, Outlook eller Excel.

VBA-automatisering - speciellt direktautomatisering av en webbläsare som IE som du ser i den här artikeln - är precis den saken som lyfter VBA från ett bekvämt programmeringsskript till ett kraftfullt automatiseringsspråk. Det som gör det så fantastiskt är det faktum att många applikationer med kontroller eller objekt skapas helt enkelt för att du ska kunna integrera det med VBA-programmeringsspråket.

Genom åren har vi visat dig hur man gör några riktigt coola saker med VBA. Du kan till exempel använda det för att skicka e-post direkt från inuti Excel Så här skickar du e-postmeddelanden från ett Excel-kalkylblad med VBA-skript Hur skickar du e-postmeddelanden från ett Excel-kalkylblad med VBA-skript Vi visar hur du konfigurerar automatiserade e-postmeddelanden från Excel med hjälp av Collaboration Data Objects, (CDO) och VBA-skript. Våra kodmallar gör det mycket enklare än det låter! Läs mer, du kan automatiskt exportera Outlook-uppgifter till ett Excel-kalkylblad. Så här exporterar du dina Outlook-uppgifter till Excel med VBA. Så här exporterar du dina Outlook-uppgifter till Excel med VBA. Oavsett om du är en fan av Microsoft, är det en bra sak som kan sägas om MS Office-produkter är åtminstone hur enkelt det är att integrera var och en av dem med varandra .... Läs mer, och du kan även designa din egen webbläsare Hur man gör din egen grundläggande webbläsare med hjälp av VBA Hur man gör Din egen grundläggande webbläsare med hjälp av VBA När du verkligen slutar tänka på det, är en webbläsare i sin enklaste form inte så imponerande en applikation. Jag menar, ja, Internet är fantastiskt av någons standarder. Konceptet att länka ... Läs mer! Det är inte bara Microsoft-produkter. Det finns 3-parters applikationer från alla sorters leverantörer som har integrerat VBA och kompatibla objekt i deras programvara - från Adobe Acrobat SDK till ObjectARX SDK för AutoCAD - det finns sätt att "plugga in" fler applikationer än vad du förmodligen inser.

Idén

I det här fallet kommer du att ansluta Excel med IE. Varför IE? Eftersom Internet Explorer är så väl integrerad med operativsystemet som du verkligen inte behöver göra mycket för att börja använda IE-automation i VBA i andra Microsoft-produkter som Word eller Excel. Det här är skönheten i. I den här artikeln kan du se hur denna automatisering fungerar, och i en kommande artikel kan du se hur du gör nästan samma sak med andra webbläsare.

Vad jag ska visa dig här är en till synes enkelt applikation, men det har många applikationer där du kan använda den här koden för att göra en rad coola saker med din webbläsare. Utgångspunkten är att du ska skapa ett Excel-kalkylblad för att snabbt spara alla dina öppna webbläsarfönster med ett klick av en knapp. Du kan spara detta kalkylblad och gå bort eller stänga av datorn.

Kom tillbaka en timme eller tre dagar senare, öppna kalkylbladet, klicka på en annan knapp och de sparade webbadresserna öppnas igen i samma antal flikar som tidigare. Den uppenbara, snygga användningen av detta skulle vara att lagra ett helt bibliotek med vanliga arbetsinställningar på nätet i Excel. Då kan du återställa den arbetsytan med ett tryck på en knapp utan att behöva hitta alla dessa webbadresser igen.

Automatisering av Internet Explorer med VBA

Det första du gör är att öppna Excel (jag använder 2013 - andra versioner är lika när det gäller VBA-programmering) och gå till menyn Utvecklare. Inuti finns en infogningsknapp, som släpper ner alla dina kontroller. Välj ActiveX-knappens kontroll och placera den i kalkylbladet.

IE-automation1

Förmodligen har du redan skapat en rubrik för webbadresser om du vill, men du behöver inte. Det här är verkligen ett URL-lagringsbibliotek, så rubriker spelar ingen roll. När du har lagt till knappen dubbelklickar du på den för att öppna VBA-editoren. Nedre vänster ser du egenskaperna för din nya knapp.

Byt namn på det till något som cmdSaveURLs och sätt bildtexten till "Spara webbadresser" - vilket indikerar att det här är knappen för att spara alla öppna webbadresser från din IE-webbläsare.

spara-webbadresser

Gå sedan till Verktyg-menyn längst upp i VBA-redigeraren, klicka på Referenser i menyn och rulla ner den långa listan för att hitta "Microsoft Internet Controls" -referensen. Klicka på kryssrutan till vänster om det och klicka sedan på OK.

IE-automation3

Nu är du redo att rulla. I redigeringstextområdet bör du se en rad som läser "Privat Sub cmdSaveURLs_Click ()". Om du inte ser det, klicka på den vänstra rullgardinsrutan ovanför textområdet och hitta cmdSaveURLs i listan. Välj det, och det kommer att skapa funktionen Click () () för dig.

Detta är koden du vill infoga i den funktionen:

 im IE Som Object Dim ShellWins Som New ShellWindows Dim IE_TabURL Som String Dim IntRowPosition Som Integer intRowPosition = 2 För varje IE I ShellWins IE_TabURL = IE.LocationURL Om IE_TabURL vbNullString Sedan Sheet1.Range ("A" & intRowPosition) = IE_TabURL intRowPosition = intRowPosition + 1 avsluta om nästa uppsättning shellWins = Inget inställt IE = Inget 

Microsoft Scripting Runtime-referensen gör det så att du kan komma åt ShellWindows-objektet, vilket gör att du kan iterera via Windows och hitta de instanser av IE som du har öppnat. I det här skriptet hittar du varje webbadress du har öppnat och skriver den till Excel-kalkylbladet.

IE-automation4

Så, i teorin om du arbetar med något som bloggar, och du har några saker öppna, som forskningsfönster, din bloggredigerare eller ett kalenderfönster - alla dessa flikar kommer att vara aktiva. Om du måste stänga av eller lämna bråttom kan det vara en verklig smärta att spara var du är genom att kopiera alla dessa webbadresser.

IE-automation5

Med ditt nya Excel-skript klickar du bara på knappen Load URLs, och det laddas in direkt i kalkylbladet.

IE-automation6

En försiktighet. Om du inte använder en rubrikrad vill du ändra linjen "intRowPosition = 2" till "intRowPosition = 1" och detta börjar i första raden istället för att hoppa över rubrikraden.

Öppnar din sparade webbläsarbetsyta

Nästa steg i detta projekt är att gå i andra riktningen. Klicka på "Ladda webbadresser" och ha Excel starta IE och ladda om alla de webbadresser du har sparat i kalkylbladet. Här är vad funktionen cmdLoadURLs_Click () ska se ut.

 Dim IE Som Objekt Dim ShellWins Som Nya ShellWindows Dim IE_TabURL Som String Dim IntRowPosition Som Integer intRowPosition = 2 Ställ in IE = CreateObject ("InternetExplorer.Application") IE.Visible = True IE.Navigate Sheet1.Range ("A" & intRowPosition) IE.Busy DoEvents Wend intRowPosition = intRowPosition + 1 Med Sheet1.Range ("A" & intRowPosition) vbNullString IE.Navigate Sheet1.Range ("A" & intRowPosition), CLng (2048) Medan IE.Busy DoEvents Wend intRowPosition = intRowPosition + 1 Wend Set IE = Inget 

Det finns några steg här, men som du kan se är koden inte så lång eller komplicerad. Du skapar en ny instans av IE, gör den synlig (det öppnar IE utan att ladda en URL). Därefter laddas den första webbadressen i listan.

IE-automation8

"Medan IE.Busy" del av skriptet väntar tills sidan är fullt laddad och sedan fortsätter till resten av webbadresserna i kalkylbladet öppnar du en ny flik (det är vad "CLng (2048)" gör, tills Det träffar en tom cell i kalkylbladet, så det slutar öppna nya flikar. Här är min IE-webbläsare med alla fyra ursprungliga flikarna återställda med hjälp av Excel IE-automatiseringsskriptet.

IE-automation9

Sammanfattning

Mitt verkliga mål att göra det här var att få enskilda kalkylblad att skapa samlingar av flikar för uppgifter som att undersöka och skriva på egen blogg, skriva på MakeUseOf, göra SEO-projektarbete på webbplatsen eller en hel lista över andra roller eller projekt som kräver En sparad samling flikar som alltid används.

Genom att använda ett kalkylblad för att lagra dessa inställningar och automatisera öppna dem i en webbläsare kan du spara mycket tid ... och det är faktiskt ganska coolt också.

Använder du någon typ av IE-automation i dina VBA-applikationer? Se andra coola användningsområden för denna typ av IE-kontroll från Excel? Dela dina tankar och feedback i kommentarfältet nedan!

In this article