Dankzij de integratie met Windows kan Internet Explorer op een aantal verrassende manieren worden bestuurd met behulp van een VBA-script (Visual Basic for Applications) vanuit elke toepassing die dit ondersteunt, zoals Word, Outlook of Excel.
VBA-automatisering - met name het direct automatiseren van een browser zoals IE zoals u in dit artikel zult zien - is precies het soort ding dat VBA van een handig programmeringsscript verheft tot een krachtige automatiseringstaal. Wat het zo geweldig maakt, is het feit dat veel applicaties met besturingselementen of objecten eenvoudig worden gemaakt om je erin te laten integreren met de VBA-programmeertaal.
Door de jaren heen hebben we je laten zien hoe je heel coole dingen kunt doen met VBA. U kunt het bijvoorbeeld gebruiken om e-mails rechtstreeks vanuit Excel te verzenden E-mailberichten vanuit een Excel-spreadsheet verzenden VBA-scripts gebruiken E-mails verzenden vanuit een Excel-spreadsheet VBA-scripts gebruiken We laten u zien hoe u geautomatiseerde e-mails kunt instellen vanuit Excel met behulp van Collaboration Data Objects, (CDO) en VBA-scripts. Onze codesjablonen maken dit een stuk eenvoudiger dan het klinkt! Meer lezen, u kunt Outlook-taken automatisch exporteren naar een Excel-spreadsheet Hoe uw Outlook-taken exporteren naar Excel met VBA Hoe exporteert u uw Outlook-taken naar Excel met VBA Of u nu een fan bent van Microsoft, één ding kan gezegd worden over MS Office-producten, is hoe gemakkelijk het is om ze allemaal met elkaar te integreren .... Lees meer en je kunt zelfs je eigen internetbrowser ontwerpen. Hoe maak je je eigen eenvoudige internetbrowser Gebruik VBA Hoe maak je Eigen basale internetbrowser VBA gebruiken Wanneer u echt stopt om erover na te denken, is een internetbrowser in zijn eenvoudigste vorm niet zo indrukwekkend als een toepassing. Ik bedoel, ja, het internet is geweldig voor iedereen. Het concept van koppelen ... Lees meer! Het zijn ook niet alleen Microsoft-producten. Er zijn applicaties van derden van allerlei soorten leveranciers die VBA en compatibele objecten in hun software hebben geïntegreerd - van Adobe Acrobat SDK tot de ObjectARX SDK voor AutoCAD - er zijn manieren om meer applicaties aan te sluiten dan u waarschijnlijk denkt.
Het idee
In dit geval gaat u Excel verbinden met IE. Waarom IE? Omdat Internet Explorer zo goed is geïntegreerd met het besturingssysteem dat u echt niet veel hoeft te doen om IE-automatisering in VBA te gebruiken in andere Microsoft-producten zoals Word of Excel. Dat is de schoonheid van in. In dit artikel zult u zien hoe deze automatisering werkt, en in een toekomstig artikel zult u zien hoe u bijna hetzelfde doet met andere browsers.
Wat ik hier ga laten zien is een ogenschijnlijk eenvoudige applicatie, maar het heeft veel applicaties waar je deze code zou kunnen gebruiken om een aantal coole dingen met je browser te doen. Waar het op neer komt, is dat u een Excel-spreadsheet gaat maken met als doel al uw geopende browservensters snel te bewaren met één klik op een knop. U kunt deze spreadsheet opslaan en weglopen of uw computer uitschakelen.
Kom een uur of drie dagen later terug, open de spreadsheet, klik op een andere knop en die opgeslagen URL's worden opnieuw geopend op hetzelfde aantal tabbladen als voorheen. Het voor de hand liggende koele gebruik hiervan zou zijn om een hele bibliotheek met veelvoorkomende instellingen voor online werkruimten op te slaan in Excel. Vervolgens kunt u die werkruimte met één klik op een knop herstellen zonder al die URL's opnieuw te hoeven vinden.
Automatisering van Internet Explorer met VBA
Het eerste wat je moet doen is Excel openen (ik gebruik 2013 - andere versies zijn vergelijkbaar als het gaat om VBA-programmering) en ga naar het menu-item Ontwikkelaar. Daarbinnen ziet u een invoegknop waarmee al uw bedieningselementen worden neergezet. Selecteer de ActiveX-drukknopbediening en plaats deze in uw spreadsheet.
Waarschijnlijk hebt u al een koptekst gemaakt voor URL's als u dat wilt, maar dat hoeft niet. Dit is echt een URL-opslagbibliotheek, dus headers doen er niet echt toe. Nadat u de knop hebt toegevoegd, dubbelklikt u erop om de VBA-editor te openen. Linksonder zie je de eigenschappen van je nieuwe drukknop.
Hernoem het naar iets als cmdSaveURLs en zet de bijschrift op "URL's opslaan" - dit geeft aan dat dit de knop is om alle open URL's van je IE-browser op te slaan.
Ga vervolgens naar het menu Tools boven aan de VBA-editor, klik op Referenties in het menu en blader door de lange lijst om de verwijzing naar "Microsoft Internet Controls" te vinden. Klik op het selectievakje links ervan en klik vervolgens op OK.
Nu ben je klaar om te rollen. In het tekstgedeelte van de editor zou u een regel moeten zien met de tekst "Private Sub cmdSaveURLs_Click ()". Als u het niet ziet, klikt u op de linker vervolgkeuzelijst boven het tekstgedeelte en zoekt u cmdSaveURLs in de lijst. Selecteer het en het zal de Click () -functie voor u maken.
Dit is de code die u in die functie wilt invoegen:
im IE Als object Dim shellWins As New ShellWindows Dim IE_TabURL As String Dim intRowPosition As Integer intRowPosition = 2 voor elk IE in shellWins IE_TabURL = IE.LocationURL Als IE_TabURL vbNullString Then Sheet1.Range ("A" & intRowPosition) = IE_TabURL intRowPosition = intRowPosition + 1 End If Next Set shellWins = Nothing Set IE = Niets
De Microsoft Scripting Runtime-verwijzing zorgt ervoor dat u toegang hebt tot het ShellWindows-object, waarmee u door Windows kunt bladeren en de IE-exemplaren kunt vinden die u hebt geopend. Dit script zal elke URL vinden die u open hebt en deze naar het Excel-werkblad schrijven.
Dus, in theorie, als je aan iets als bloggen werkt en je hebt een paar items open, zoals onderzoeksvensters, je blog-editor of een kalendervenster - zullen al deze tabbladen actief zijn. Als je moet afsluiten of haast hebt, kan het erg lastig zijn om te bewaren waar je bent door al die URL's te kopiëren.
Klik met uw nieuwe Excel-script op de knop URL's laden en laad deze rechtstreeks in het werkblad.
Een waarschuwing. Als u geen kopregel gebruikt, moet u de regel "intRowPosition = 2" wijzigen in "intRowPosition = 1" en deze begint bij de eerste rij in plaats van de koprij te overslaan.
De opgeslagen werkruimte van uw browser openen
De volgende fase van dit project is om de andere kant op te gaan. Klik op 'URL's laden' en laat Excel IE starten en laad al die URL's opnieuw die u in het werkblad hebt opgeslagen. Dit is hoe de cmdLoadURLs_Click () -functie eruit zou moeten zien.
Dim IE Als object Dim shellWins As New ShellWindows Dim IE_TabURL As String Dim intRowPosition As Integer intRowPosition = 2 Set IE = CreateObject ("InternetExplorer.Application") IE.Visible = True IE.Navigate Sheet1.Range ("A" & intRowPosition) While 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 = intRowPosition + 1 Wend Set IE = Niets
Er zijn een paar stappen hier, maar zoals je kunt zien is de code niet zo lang of gecompliceerd. U maakt een nieuw exemplaar van IE, maakt het zichtbaar (dit opent IE zonder een URL te laden). Vervolgens wordt de eerste URL in de lijst geladen.
Het gedeelte "While IE.Busy" van het script wacht totdat de pagina volledig is geladen en gaat vervolgens naar de rest van de URL's in uw spreadsheet en opent een nieuw tabblad (dat is wat de "CLng (2048)" doet, totdat het raakt een lege cel in uw spreadsheet, daarna stopt het met het openen van nieuwe tabbladen. Hier is mijn IE-browser met alle vier originele tabbladen hersteld met behulp van het automatiseringsscript van Excel IE.
Overzicht
Mijn echte doel om dit te doen was om individuele spreadsheets een verzameling tabbladen te laten maken voor taken zoals onderzoeken en schrijven op mijn eigen blog, schrijven op MakeUseOf, SEO-projectwerk doen op de site of een hele lijst van andere rollen of projecten die vereisen een bewaarde verzameling tabbladen die altijd worden gebruikt.
Het gebruik van een spreadsheet om die instellingen op te slaan en deze in een browser te automatiseren, kan veel tijd besparen ... en het is eigenlijk best cool.
Gebruikt u elke vorm van IE-automatisering in uw VBA-toepassingen? Zie andere coole toepassingen voor dit soort IE-controle van Excel? Deel uw mening en feedback in de comments hieronder!