Visual Basic for Applications:
Télécharger une page web

Comment faire :

Pour télécharger une page web en VBA, vous pouvez utiliser la bibliothèque Microsoft XML, v6.0 (MSXML6), qui permet les requêtes HTTP serveur. Avant de plonger dans le code, assurez-vous d’avoir activé cette référence dans votre éditeur VBA en allant dans Outils -> Références et en cochant Microsoft XML, v6.0.

Voici un exemple simple de la manière de télécharger le contenu HTML d’une page web :

Sub DownloadWebPage()
    Dim request As Object
    Dim url As String
    Dim response As String
    
    ' Initialisation de l'objet de requête XML HTTP
    Set request = CreateObject("MSXML2.XMLHTTP")
    
    url = "http://www.example.com"
    
    ' Ouverture d'une requête synchrone
    request.Open "GET", url, False
    
    ' Envoi de la requête au serveur
    request.send
    
    ' Obtention du texte de réponse
    response = request.responseText
    
    ' Affichage de la réponse dans la fenêtre immédiate (à des fins de débogage)
    Debug.Print response
    
    ' Nettoyage
    Set request = Nothing
End Sub

L’exécution de cette sous-routine affichera le HTML de http://www.example.com dans la Fenêtre immédiate de l’éditeur VBA. Notez que le paramètre False dans la méthode Open rend la requête synchrone, ce qui signifie que le code attendra que la page web soit téléchargée avant de passer à la ligne suivante.

Exploration approfondie

La technique présentée repose sur MSXML, l’implémentation par Microsoft de la norme XML HTTP Request, souvent utilisée pour les requêtes AJAX en développement web. Ce composant fait partie de la pile technologique de Microsoft depuis longtemps, ce qui en fait un choix robuste pour les requêtes réseau en VBA.

Cependant, la dépendance à MSXML et VBA pour télécharger et analyser le contenu web peut être limitante, en particulier avec les applications web modernes qui utilisent fortement JavaScript pour le rendu de contenu dynamique. Ces limitations peuvent rendre d’autres langages ou outils comme Python avec des bibliothèques telles que BeautifulSoup ou Selenium plus adaptés aux tâches de scraping web en raison de leur capacité à exécuter JavaScript et à gérer des interactions de sites web complexes.

Malgré cela, pour des tâches simples impliquant la récupération de contenu HTML simple ou lorsqu’on travaille dans le cadre des applications Office, VBA reste un outil pratique. Son intégration au sein de la suite Office permet une manipulation directe des documents basée sur le contenu web, offrant un avantage unique pour des cas d’utilisation spécifiques.