VBA gebruiken om sessies van Internet Explorer te automatiseren vanuit een Excel-spreadsheet
Dankzij de integratie met Windows kan Internet Explorer op een aantal verrassende manieren worden beheerd 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 je in dit artikel zult zien - is precies het soort ding dat VBA van een handig programmeringsscript naar een krachtige automatiseringstaal tilt. Wat het zo geweldig maakt, is het feit dat veel applicaties met besturingselementen of objecten eenvoudigweg 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 Met onze codesjabloon kunt u geautomatiseerde e-mails instellen vanuit Excel met behulp van Samenwerking Data Objects (CDO) en VBA-scripts. Lees meer, 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 elk van hen te integreren met elkaar ... Lees meer en je kunt zelfs je eigen internetbrowser ontwerpen. Hoe maak je je eigen standaard internetbrowser Gebruik VBA Hoe maak je je eigen basis 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 toepassingen van derden van allerlei leveranciers met geïntegreerde VBA en compatibele objecten in hun software - van Adobe Acrobat SDK tot de ObjectARX SDK voor AutoCAD - er zijn manieren om “aansluiten op” meer toepassingen 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 stel het bijschrift in “Bewaar URL's” - geeft aan dat dit de knop is om alle open URL's van uw IE-browser op te slaan.
Ga vervolgens naar het menu Tools boven in de VBA-editor, klik op Referenties in het menu en blader door de lange lijst om de “Microsoft Internet Controls” referentie. 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 die luidt “Privé 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 snel moet vertrekken, 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 wijzigen “intRowPosition = 2” naar “intRowPosition = 1” en dit 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 de “URL's laden” en laat Excel IE starten en laad al die URL's opnieuw die je in de spreadsheet 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.
De “Terwijl IE.Busy” een deel van het script wacht tot de pagina volledig is geladen en gaat dan verder met de rest van de URL's in uw spreadsheet, waarbij een nieuw tabblad wordt geopend (dat is wat de “CLng (2048)” totdat het een lege cel in uw spreadsheet raakt, stopt het met het openen van nieuwe tabbladen. Hier is mijn IE-browser met alle vier originele tabbladen hersteld met behulp van het Excel IE-automatiseringsscript.
Samenvatting
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 deze instellingen op te slaan en deze automatisch te openen in een browser 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 opmerkingen hieronder!
Ontdek meer over: Computer Automation, Microsoft Excel, Spreadsheet.