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 :
- Piloter Internet Explorer depuis Access, par Automation
- Ouvrir une page HTML avec mot de passe depuis Access
Le code VBA
Voici une fonction VBA à recopier (comme d’habitude !) dans un module standard de votre base de données :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
' --- ' SAUVEGARDE D'UNE PAGE WEB A L'AIDE DE INTERNET EXPLORER ' --- ' Function EnregistrerHTML( _ ByVal strURL As String, _ ByVal strFichier As String) As Boolean ' Démarrer et afficher Internet Explorer On Error GoTo EnregistrerHTMLErr Dim ie As Object Set ie = CreateObject("InternetExplorer.Application") ie.Visible = True ' Naviguer vers l'adresse souhaitée ' et attendre qu'elle soit chargée ie.navigate strURL While ie.Busy DoEvents Wend ' Créer et ouvrir le fichier texte Dim intHandle As Integer intHandle = FreeFile Open strFichier For Output As #intHandle ' Ecrire le contenu HTML de la page Web dans le fichier Print #intHandle, ie.Document.documentElement.innerHTML ' Fermer le fichier et Internet Explorer Close #intHandle ie.Quit ' Renvoyer un code de succès EnregistrerHTML = True Exit Function EnregistrerHTMLErr: MsgBox "Erreur : " & Err.Description, vbExclamation EnregistrerHTML = False Exit Function End Function |
- 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, etFalse
sinon.
Tester la fonction
Pour tester la fonction rapidement, utilisez la fenêtre Exécution :
- Appuyez sur
CTRL
+G
. - 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.
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é…