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

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

Integreringen 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 låta dig integrera i det med hjälp av VBA programmeringsspråk.

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 hjälp av VBA-skript Vår kodmall hjälper dig att ställa in automatiserade e-postmeddelanden från Excel med hjälp av Samarbeta dataobjekt (CDO) och VBA-skript. 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 Internet Browser Använda 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 tredjepartsprogram 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 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.

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 på bildtexten till “Spara webbadresser” - vilket indikerar att detta är knappen för att spara alla öppna webbadresser från din IE-webbläsare.

Gå sedan till Verktyg-menyn längst upp i VBA-editoren, klicka på Referenser i menyn och bläddra längs den långa listan för att hitta “Microsoft Internet Controls” referens. Klicka på kryssrutan till vänster om det och klicka sedan på OK.

Nu är du redo att rulla. I redigeringstextområdet ska 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 Objekt 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 Då Sheet1.Range ("A" & intRowPosition) = IE_TabURL intRowPosition = intRowPosition + 1 Enda om nästa set shellWins = Inget set 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.

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.

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

En försiktighet. Om du inte använder en rubrikrad så vill du ändra raden “intRowPosition = 2” till “intRowPosition = 1” och detta kommer att börja 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 New 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.

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

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!

Utforska mer om: Datautomatisering, Microsoft Excel, Kalkylark.