Utilisation de VBA pour automatiser les sessions Internet Explorer à partir d'une feuille de calcul Excel

Son intégration avec Windows permet le contrôle d'Internet Explorer de plusieurs manières surprenantes en utilisant le script Visual Basic pour Applications (VBA) depuis n'importe quelle application qui le prend en charge, comme Word, Outlook ou Excel.

Son intégration avec Windows permet le contrôle d'Internet Explorer de plusieurs manières surprenantes en utilisant le script Visual Basic pour Applications (VBA) depuis n'importe quelle application qui le prend en charge, comme Word, Outlook ou Excel.
Publicité

Son intégration avec Windows permet le contrôle d'Internet Explorer de plusieurs manières surprenantes en utilisant le script Visual Basic pour Applications (VBA) depuis n'importe quelle application qui le prend en charge, comme Word, Outlook ou Excel.

L'automatisation VBA - en particulier l'automatisation directe d'un navigateur comme IE, comme vous le verrez dans cet article - est exactement le genre de chose qui élève VBA d'un script de programmation pratique dans un langage d'automatisation puissant. Ce qui le rend si impressionnant est le fait que de nombreuses applications avec des contrôles ou des objets sont créés simplement dans le but de vous permettre de l'intégrer en utilisant le langage de programmation VBA.

Au fil des ans, nous vous avons montré comment faire des choses vraiment cool avec VBA. Par exemple, vous pouvez l'utiliser pour envoyer des emails directement depuis Excel Comment envoyer des emails depuis une feuille de calcul Excel en utilisant des scripts VBA Comment envoyer des emails depuis une feuille de calcul Excel Utiliser des scripts VBA Nous allons vous montrer comment configurer des emails automatisés depuis Excel en utilisant des objets Collaboration Data Objects, (CDO) et VBA. Nos modèles de code rendent cela beaucoup plus facile que ça en al'air! En savoir plus, vous pouvez exporter automatiquement les tâches Outlook vers une feuille de calcul Excel Comment exporter vos tâches Outlook vers Excel avec VBA Comment exporter vos tâches Outlook vers Excel avec VBA Que vous soyez ou non fan de Microsoft, une bonne chose peut être dite A propos des produits MS Office, au moins, est-il facile d'intégrer chacun d'entre eux .... Lire la suite, et vous pouvez même concevoir votre propre navigateur Internet Comment faire votre propre navigateur Internet de base en utilisant VBA Comment faire Votre propre navigateur Internet de base utilisant VBA Quand vous vous arrêtez vraiment à y penser, un navigateur Internet dans sa forme la plus simple n'est pas vraiment une application aussi impressionnante. Je veux dire, oui, l'Internet est incroyable par les normes de quiconque. Le concept de la liaison ... Lire la suite! Ce ne sont pas seulement les produits Microsoft. Il existe des applications tierces de toutes sortes de fournisseurs qui ont intégré des objets VBA et compatibles dans leur logiciel - du SDK Adobe Acrobat au SDK ObjectARX pour AutoCAD - il existe des moyens de se «connecter» à plus d'applications que vous ne le pensez probablement.

L'idée

Dans ce cas, vous allez connecter Excel avec IE. Pourquoi IE? Parce qu'Internet Explorer est si bien intégré avec le système d'exploitation que vous n'avez vraiment rien à faire pour commencer à utiliser l'automatisation IE dans VBA dans d'autres produits Microsoft tels que Word ou Excel. C'est la beauté de. Dans cet article, vous verrez comment cette automatisation fonctionne, et dans un prochain article, vous verrez comment faire presque le même genre de chose avec d'autres navigateurs.

Ce que je vais vous montrer ici est une application apparemment simple, mais il y a beaucoup d'applications où vous pouvez utiliser ce code pour faire une variété de choses intéressantes avec votre navigateur. L'essentiel est que vous allez créer une feuille de calcul Excel dans le but d'enregistrer rapidement toutes vos fenêtres de navigateur ouvertes en un seul clic sur un bouton. Vous pouvez enregistrer cette feuille de calcul et partir ou éteindre votre ordinateur.

Revenez une heure ou trois jours plus tard, ouvrez la feuille de calcul, cliquez sur un autre bouton et les URL enregistrées seront rouvertes dans le même nombre d'onglets que précédemment. L'utilisation cool évidente de ceci serait de stocker toute une bibliothèque de configurations communes d'espace de travail en ligne dans Excel. Vous pouvez ensuite restaurer cet espace de travail en cliquant sur un bouton sans avoir à retrouver toutes ces URL.

Automatiser Internet Explorer avec VBA

La première chose à faire est d'ouvrir Excel (j'utilise 2013 - d'autres versions sont similaires en ce qui concerne la programmation VBA) et d'aller à l'élément de menu Developer. À l'intérieur, vous verrez un bouton d'insertion, qui descend toutes vos commandes. Sélectionnez le contrôle bouton-poussoir ActiveX et placez-le dans votre feuille de calcul.

IE-automation1

Vraisemblablement, vous avez déjà créé un en-tête pour les URL si vous le souhaitez, mais vous n'êtes pas obligé de le faire. C'est vraiment une bibliothèque de stockage d'URL, donc les en-têtes n'ont pas vraiment d'importance. Une fois que vous avez ajouté le bouton, double-cliquez dessus pour ouvrir l'éditeur VBA. En bas à gauche, vous verrez les propriétés de votre nouveau bouton poussoir.

Renommez-le en quelque chose comme cmdSaveURLs et définissez la légende sur "Save URLs" - indiquant qu'il s'agit du bouton permettant d'enregistrer toutes les URL ouvertes depuis votre navigateur IE.

save-urls

Ensuite, allez dans le menu Outils en haut de l'éditeur VBA, cliquez sur Références dans le menu, et faites défiler la longue liste pour trouver la référence "Microsoft Internet Controls". Cochez la case à sa gauche, puis cliquez sur OK.

IE-automation3

Maintenant vous êtes prêt à rouler. Dans la zone de texte de l'éditeur, vous devriez voir une ligne indiquant "Private Sub cmdSaveURLs_Click ()". Si vous ne le voyez pas, cliquez sur la zone de liste déroulante à gauche au-dessus de la zone de texte et trouvez cmdSaveURLs dans la liste. Sélectionnez-le, et il va créer la fonction Click () pour vous.

C'est le code que vous voulez insérer dans cette fonction:

 im IE Comme Object Dim shellWins Comme Nouveau ShellWindows Dim IE_TabURL Comme Chaîne Dim intRowPosition As Integer intRowPosition = 2 Pour chaque IE Dans shellWins IE_TabURL = IE.LocationURL Si IE_TabURL vbNullString Alors Sheet1.Range ("A" & intRowPosition) = IE_TabURL intRowPosition = intRowPosition + 1 End If Prochain Set shellWins = Nothing Set IE = Rien 

La référence Microsoft Scripting Runtime vous permet d'accéder à l'objet ShellWindows, ce qui vous permet de parcourir Windows et de localiser les instances d'Internet Explorer que vous avez ouvertes. Ce script va localiser chaque URL que vous avez ouvert et l'écrire dans la feuille de calcul Excel.

IE-automation4

Donc, en théorie, si vous travaillez sur quelque chose comme des blogs, et que vous avez quelques éléments ouverts, comme des fenêtres de recherche, votre éditeur de blog, ou une fenêtre de calendrier - tous ces onglets seront actifs. Si vous devez vous arrêter ou partir à la hâte, il peut être très pénible de sauvegarder où vous êtes en copiant toutes ces URL.

IE-automation5

Avec votre nouveau script Excel, il vous suffit de cliquer sur le bouton Charger les URL et de le charger directement dans la feuille de calcul.

IE-automation6

Une mise en garde. Si vous n'utilisez pas une ligne d'en-tête, alors vous voudrez changer la ligne "intRowPosition = 2" en "intRowPosition = 1" et cela commencera à la première ligne plutôt que de sauter la ligne d'en-tête.

Ouverture de votre espace de travail de navigateur enregistré

La prochaine étape de ce projet est d'aller dans l'autre sens. Cliquez sur "Charger les URL" et Excel lance IE et recharge toutes les URL que vous avez sauvegardées dans la feuille de calcul. Voici à quoi devrait ressembler la fonction cmdLoadURLs_Click ().

 Dim IE comme objet Dim shellWins comme nouveau ShellWindows Dim IE_TabURL comme chaîne Dim intRowPosition As Integer intRowPosition = 2 Définir IE = CreateObject ("InternetExplorer.Application") IE.Visible = Vrai IE.Navigate Sheet1.Range ("A" & intRowPosition) IE.Busy DoEvents Wend intRowPosition = intRowPosition + 1 Tandis que Sheet1.Range ("A" & intRowPosition) vbNullString IE.Navigate Sheet1.Range ("A" & intRowPosition), CLng (2048) Tandis que IE.Busy DoEvents Wend intRowPosition = intRowPosition + 1 Wend Set IE = Rien 

Il y a quelques étapes ici, mais comme vous pouvez le voir le code n'est pas si long ou compliqué. Vous créez une nouvelle instance de IE, la rendre visible (ceci ouvrira IE sans charger d'URL). Ensuite, il va charger la première URL dans la liste.

IE-automation8

La partie "While IE.Busy" du script attend jusqu'à ce que la page soit entièrement chargée, puis passez au reste des URL de votre feuille de calcul, en ouvrant un nouvel onglet (c'est ce que fait le "CLng (2048)", jusqu'à il frappe une cellule vide dans votre feuille de calcul, puis il va arrêter d'ouvrir de nouveaux onglets.Voici mon navigateur IE avec les quatre onglets d'origine récupérés en utilisant le script d'automatisation Excel IE.

IE-automation9

Résumé

Mon objectif était de créer des tableurs individuels pour des tâches telles que la recherche et l'écriture sur mon propre blog, l'écriture sur MakeUseOf, le travail de projet SEO sur le site, ou toute une liste d'autres rôles ou projets qui nécessitent une collection sauvegardée d'onglets toujours utilisés

Utiliser une feuille de calcul pour stocker ces configurations et les automatiser en les ouvrant dans un navigateur peut vous faire gagner beaucoup de temps ... et c'est plutôt cool.

Utilisez-vous un type d'automatisation IE dans vos applications VBA? Voir toutes les autres utilisations cool pour ce genre de contrôle IE à partir d'Excel? Partagez vos pensées et vos commentaires dans la section des commentaires ci-dessous!

In this article