Annons
Dess integration med Windows möjliggör kontroll av Internet Explorer på ett antal överraskande sätt att använda Visual Basic for Applications (VBA) -skript från alla program som stöder det, till exempel Word, Outlook eller Excel.
VBA-automatisering - särskilt direkt automatisering av en webbläsare som IE som du ser i den här artikeln - är exakt den typen av saker som höjer 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 integreras i det med VBA-programmeringsspråket.
Genom åren har vi visat dig hur du gör riktigt coola saker med VBA. Till exempel kan du använda den till skicka e-post direkt från Excel Så här skickar du e-postmeddelanden från ett Excel-kalkylblad med VBA-skriptVår kodmall hjälper dig att konfigurera automatiserade e-postmeddelanden från Excel med hjälp av Collaboration Data Objects (CDO) och VBA-skript. Läs mer
, kan du automatiskt exportera Outlook-uppgifter till ett Excel-kalkylblad Hur du exporterar dina Outlook-uppgifter till Excel med VBAOavsett om du är ett fan av Microsoft eller inte, en bra sak som kan sägas om MS Office-produkter, åtminstone, är hur lätt det är att integrera var och en av dem med varandra ... Läs mer , och du kan till och med design din egen webbläsare Hur du gör din egen grundläggande webbläsare med VBANär du verkligen slutar att 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 heller bara Microsoft-produkter. Det finns tredjepartsapplikationer från alla typer av leverantörer som har integrerade VBA och kompatibla objekt i sin programvara - från Adobe Acrobat SDK till ObjectARX SDK för AutoCAD - det finns sätt att "ansluta till" fler applikationer än du antagligen inse.Idén
I det här fallet kommer du att ansluta Excel till IE. Varför IE? Eftersom Internet Explorer är så bra integrerat med operativsystemet att du verkligen inte behöver göra mycket för att börja använda IE-automatisering i VBA i andra Microsoft-produkter som Word eller Excel. Det är skönheten i. I den här artikeln ser du hur denna automatisering fungerar och i en framtida artikel ser du hur du gör nästan samma sort med andra webbläsare.
Det jag ska visa dig här är en till synes enkel applikation, men den har många applikationer där du kan använda den här koden för att göra en mängd coola saker med din webbläsare. Sammanfattningen är att du kommer att skapa ett Excel-kalkylblad för att snabbt spara alla dina öppna webbläsarfönster med ett klick på en knapp. Du kan spara det här kalkylbladet och gå bort eller stänga av datorn.
Kom tillbaka en timme eller tre dagar senare, öppna kalkylbladet, klicka på en annan knapp så öppnas de sparade URL: erna i samma antal flikar som du hade tidigare. Den uppenbara coola användningen av detta skulle vara att lagra ett helt bibliotek med vanliga online-arbetsytor i Excel. Sedan kan du återställa det arbetsytan med ett klick på en knapp utan att behöva hitta alla dessa webbadresser igen.
Automatisera Internet Explorer med VBA
Det första du ska göra är att öppna Excel (jag använder 2013 - andra versioner är liknande när det gäller VBA-programmering) och gå till utvecklingsmenyn. Där inne ser du en infogningsknapp som släpper ner alla dina kontroller. Välj ActiveX-knappsknapp och placera den i kalkylarket.
Antagligen har du redan skapat en rubrik för webbadresser om du vill, men du behöver inte göra det. Detta ä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-redigeraren. Längst ner till vänster ser du egenskaperna för din nya tryckknapp.
Byt namn på det till något liknande cmdSaveURLs och ställ bildtexten till "Spara URL: er" - vilket indikerar att det här är knappen för att spara alla öppna URL: er från din IE-webbläsare.
Gå sedan till Verktyg-menyn högst upp i VBA-redigeraren, klicka på Referenser i menyn och bläddra ner i den långa listan för att hitta referensen "Microsoft Internet Controls". Klicka på kryssrutan till vänster om den och klicka sedan på OK.
Nu är du redo att rulla. I redigerarens textområde ska du se en rad som läser “Privat sub cmdSaveURLs_Click ()”. Om du inte ser det klickar du på den vänstra rullgardinsrutan ovanför textområdet och hittar cmdSaveURLs i listan. Markera den så skapar du klickfunktionen () för dig.
Det här är koden du vill infoga i den funktionen:
im IE som objekt. Fördunkla skalet som nya ShellWindows. Dim IE_TabURL som sträng. Dim intRowPosition som heltal intRowPosition = 2 för varje IE i shellWins IE_TabURL = IE.LocationURL If IE_TabURL <> vbNullString Then Sheet1.Range ("A" & intRowPosition) = IE_TabURL intRowPosition = intRowPosition + 1 Slut om Nästa Ställ shellWins = Ingenting. Ställ IE = ingenting
Microsoft Scripting Runtime-referensen gör det så att du kan komma åt ShellWindows-objektet, vilket gör att du kan iterera genom Windows och hitta de instanser av IE som du har öppnat. Det här skriptet kommer att hitta alla webbadresser du har öppnat och skriva den till Excel-kalkylbladet.
Så i teorin, om du arbetar med något som att blogga, och du har några objekt öppna, som forskningsfönster, din bloggredaktör 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 Ladda URL: er och laddar det direkt i kalkylbladet.
En varning. Om du inte använder en rubrikrad kommer du att ändra raden "intRowPosition = 2" till "intRowPosition = 1" och detta kommer att börja vid den första raden i stället för att hoppa över rubrikraden.
Öppna din sparade webbläsares arbetsyta
Nästa projektsteg är att gå i den andra riktningen. Klicka på "Ladda URL: er" och låt Excel starta IE och ladda om alla de URL: er som du har sparat i kalkylbladet. Så här ska cmdLoadURLs_Click () -funktionen se ut.
Dim IE som objekt. Fördunkla skalet som nya ShellWindows. Dim IE_TabURL som sträng. Dim intRowPosition som heltal intRowPosition = 2 Ange IE = CreateObject ("InternetExplorer. Ansökan") IE.Visible = True IE.Avigate Sheet1.Range ("A" & intRowPosition) medan IE.Busy DoEvents. Wend intRowPosition = intRowPosition + 1 While Sheet1.Range ("A" & intRowPosition) <> vbNullString IE.Navigate Ark1.Range ("A" & intRowPosition), CLng (2048) Medan IE.Busy DoEvents Wend intRowPosition = intRowPosition + 1. Wend Set IE = Ingenting
Det finns några steg här, men som du ser är koden inte så lång eller komplicerad. Du skapar en ny instans av IE, gör den synlig (detta öppnar IE utan att ladda en URL). Därefter laddas den första webbadressen i listan.
"While IE.Busy" -delen av skriptet väntar tills sidan är fullastad och gå vidare till resten av webbadresserna i din kalkylblad, öppnar en ny flik (det är vad "CLng (2048)" gör, tills den träffar en tom cell i kalkylbladet, då kommer det att stoppa öppnar nya flikar. Här är min IE-webbläsare med alla fyra originalflikar som har återhämtats med Excel IE-automatiseringsskriptet.
Sammanfattning
Mitt verkliga mål med att göra detta var att få individuella kalkylblad att skapa samlingar av flikar för uppgifter som att forska och skriva på min egen blogg, skriva på MakeUseOf, gör SEO-projektarbete på webbplatsen eller en hel lista med andra roller eller projekt som kräver en sparad samling flikar som alltid är Begagnade.
Att använda ett kalkylblad för att lagra dessa inställningar och automatisera öppna dem i en webbläsare kan spara mycket tid... och det är faktiskt ganska coolt också.
Använder du någon form av IE-automatisering i dina VBA-applikationer? Ser du några andra coola användningar för den här typen av IE-kontroll från Excel? Dela dina tankar och feedback i kommentarerna nedan!
Ryan har en kandidatexamen i elektroteknik. Han har arbetat 13 år inom automationsteknik, 5 år inom IT och är nu en applikationsingenjör. Han var tidigare chefredaktör för MakeUseOf och talade vid nationella konferenser om datavisualisering och har varit med på nationell TV och radio.