Enregistrer une page HTML à partir d’Access

Comment enregistrer sur disque le contenu entier d’une page HTML, à partir d’Access ?

En fait, en VBA en général… Ça marchera donc aussi dans Excel, Word ou toute autre application compatible VBA.

Le principe

Il y a sûrement d’autres moyens de faire, mais dans notre cas, on va sous-traiter le chargement de la page Web par Internet Explorer. On n’aura plus qu’à s’occuper du transfert sur disque…

Ceci continue la série entamée par ces articles :

Le code VBA

Voici une fonction VBA à recopier (comme d’habitude !) dans un module standard de votre base de données :

  • Le 1er paramètre de la fonction est l’adresse de la page Web à visiter (et enregistrer).
  • Le 2ème paramètre est le chemin complet du fichier à créer sur votre disque.
    Attention : si le fichier pointé existe, il sera écrasé sans avertissement. Vous pouvez toujours améliorer le code ! 🙂
  • La fonction fournie renvoie True si la sauvegarde de la page Web a pu se faire correctement, et False sinon.

Tester la fonction

Pour tester la fonction rapidement, utilisez la fenêtre Exécution :

  1. Appuyez sur CTRL + G.
  2. Tapez dans la fenêtre Exécution quelque chose comme :
    ? EnregistrerHTML("http://www.lemonde.fr", "C:\Documents and Settings\Hervé\Mes documents\lemonde.html")
    Bien sûr, vous aménagez le chemin du fichier en fonction de votre propre identifiant de session Windows. Et si vous travaillez sur Vista/7, le chemin a plutôt la forme "C:\Users\Hervé\Documents\lemonde.html".

Si ça marche, vous pouvez l’exploiter dans votre application VBA.

Note
La fonction enregistre toute la page HTML, mais pas les documents joints. Donc vous n’enregistrerez pas les images, les feuilles de styles CSS, les fichiers Javascript, etc.
Tuning 🙂
La ligne ie.Visible = True permet de voir ce qui se passe, le temps de mettre au point le code. Vous pouvez l’enlever une fois que vous aurez testé…

Vous aimerez aussi...

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *