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

Utilisation de VBA pour automatiser des sessions Internet Explorer à partir d'une feuille de calcul Excel / les fenêtres

Son intégration à Windows permet de contrôler de manière surprenante Internet Explorer à l'aide d'un script VBA (Visual Basic pour Applications) à partir de toute application qui le prend en charge, telle que 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 à un puissant langage d'automatisation. Ce qui le rend si génial est le fait que de nombreuses applications avec des contrôles ou des objets sont créées simplement dans le but de vous permettre de l'intégrer à l'aide du 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 courriers électroniques directement à partir d’Excel. Comment envoyer des courriers électroniques depuis une feuille de calcul Excel à l’aide de scripts VBA Comment envoyer des courriers électroniques depuis une feuille de calcul Excel à l’aide de scripts VBA CDO (Collaboration Data Objects) et scripts VBA. En savoir plus, vous pouvez exporter automatiquement des 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 un fan de Microsoft ou non, une bonne chose à dire au moins sur les produits MS Office, c’est à quel point il est facile d’intégrer chacun d’entre eux… Pour en savoir plus, vous pouvez même concevoir votre propre navigateur Internet Comment créer votre propre navigateur Internet de base avec VBA Comment créer votre propre base Navigateur Internet en utilisant VBA Lorsque vous vous arrêtez vraiment pour y penser, un navigateur Internet dans sa forme la plus simple n'est pas vraiment une application aussi impressionnante. Je veux dire, oui, Internet est incroyable par rapport aux normes de quiconque. Le concept de liaison… Lire la suite! Ce n'est pas juste les produits Microsoft non plus. Il existe des applications tierces de tous types de fournisseurs qui intègrent des objets compatibles VBA et compatibles dans leurs logiciels - du kit Adobe Acrobat SDK au kit SDK ObjectARX pour AutoCAD - il existe des moyens de “brancher” plus d'applications que vous réalisez probablement.

L'idée

Dans ce cas, vous allez connecter Excel à IE. Pourquoi IE? Parce qu'Internet Explorer est tellement bien intégré au système d'exploitation que vous n'avez vraiment pas à faire beaucoup 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 allez voir comment cette automatisation fonctionne, et dans un article à venir, vous apprendrez à faire à peu près le même genre de chose avec d’autres navigateurs..

Ce que je vais vous montrer ici est une application apparemment simple, mais elle contient de nombreuses applications dans lesquelles vous pouvez utiliser ce code pour effectuer diverses tâches intéressantes avec votre navigateur. En bout de ligne, vous allez créer une feuille de calcul Excel dans le but de sauvegarder rapidement toutes vos fenêtres de navigateur ouvertes en un seul clic. Vous pouvez enregistrer cette feuille de calcul et vous en aller 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 sauvegardées seront rouvertes dans le même nombre d'onglets qu'auparavant. L’utilisation sympa évidente de cela serait de stocker toute une bibliothèque de configurations d’espaces de travail en ligne courantes dans Excel. Ensuite, vous pouvez restaurer cet espace de travail en un seul clic sans avoir à retrouver toutes ces URL..

Automatisation d'Internet Explorer avec VBA

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

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

Renommez-le en quelque chose comme cmdSaveURLs et définissez la légende sur “Enregistrer les URL” - indiquant qu'il s'agit du bouton permettant d'enregistrer toutes les URL ouvertes à partir de votre navigateur IE.

Ensuite, allez dans le menu Outils en haut de l'éditeur VBA, cliquez sur Références dans le menu, puis faites défiler la longue liste pour trouver le “Contrôles Internet Microsoft” référence. Cochez la case à gauche de celle-ci, puis cliquez sur OK..

Maintenant vous êtes prêt à rouler. Dans la zone de texte de l'éditeur, vous devriez voir une ligne qui se lit “Private Sub cmdSaveURLs_Click ()”. Si vous ne le voyez pas, cliquez sur la liste déroulante gauche au-dessus de la zone de texte et recherchez cmdSaveURL 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 en tant qu'objet dim shellWins en tant que nouveau ShellWindows Dim IE_TabURL en tant que chaîne intRowPosition en tant qu'entier intRowPosition = 2 pour chaque IE dans un shellWins IE_TabURL = IE.LocationURL Si IE_TabURL <> vbNullString Then Sheet1.Range ("A" & intRowPosition) intRowPosition + 1 End If Next Set shellWins = Nothing Set IE = Nothing

La référence Microsoft Scripting Runtime permet d'accéder à l'objet ShellWindows, ce qui vous permet d'effectuer une itération sous Windows et de localiser les instances d'IE que vous avez ouvertes. Ce script va localiser toutes les URL que vous avez ouvertes et les écrire dans la feuille de calcul Excel..

Donc, en théorie, si vous travaillez sur quelque chose comme un blog et que vous avez quelques éléments ouverts, tels que des fenêtres de recherche, votre éditeur de blog ou une fenêtre de calendrier, tous ces onglets seront actifs. Si vous devez fermer ou partir rapidement, il peut être très difficile de sauvegarder votre emplacement en copiant toutes ces URL..

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

Une mise en garde. Si vous n'utilisez pas une ligne d'en-tête, vous voudrez changer la ligne “intRowPosition = 2” à “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. Clique le “Charger des URL” et demandez à Excel de lancer IE et de recharger toutes les URL que vous avez enregistrées dans la feuille de calcul. Voici à quoi devrait ressembler la fonction cmdLoadURLs_Click ().

Dim IE IE en tant qu'objet Dim ShellWins en tant que nouveau ShellWindows Dim IE_TabURL en tant que chaîne Dim intRowPosition en tant que Integer intRowPosition = 2 Définissez 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) Tant que IE.Busy DoEvents Wend intRowPosition = intRowPosition + 1 Wend Set IE = rien

Il y a quelques étapes ici, mais comme vous pouvez le constater, le code n’est pas si long ni si compliqué. Vous créez une nouvelle instance d'IE, vous la rendez visible (cela ouvrira IE sans charger d'URL). Ensuite, il chargera la première URL de la liste..

le “Bien que IE.Busy” une partie du script attend que la page soit entièrement chargée, puis passez au reste des URL de votre feuille de calcul, ouvrant un nouvel onglet (c'est ce que “CLng (2048)” fait, jusqu'à ce qu'il frappe une cellule vide dans votre feuille de calcul, alors il cessera d'ouvrir de nouveaux onglets. Voici mon navigateur IE avec les quatre onglets d'origine récupérés à l'aide du script d'automatisation Excel IE.

Résumé

Mon véritable objectif était de faire en sorte que des feuilles de calcul individuelles constituent des ensembles d'onglets pour des tâches telles que la recherche et l'écriture sur mon propre blog, l'écriture sur MakeUseOf, le travail de projet de référencement sur le site ou toute une liste d'autres rôles ou projets nécessitant une collection sauvegardée d'onglets toujours utilisés.

Utiliser un tableur pour stocker ces configurations et automatiser leur ouverture dans un navigateur permet de gagner beaucoup de temps… et c'est en fait plutôt cool aussi.

Utilisez-vous un type d’automatisation IE dans vos applications VBA? Voyez-vous d’autres utilisations intéressantes de ce type de contrôle IE dans Excel? Partagez vos opinions et commentaires dans la section commentaires ci-dessous!

En savoir plus sur: Computer Automation, Microsoft Excel, Spreadsheet.