VBA : L’objet WebBrowser



En réponse à l’article du 2 avril 2009 sur
l’importation de tableau HTML, un lecteur me demande comment on pourrait récupérer des images se trouvant dans le dit tableau ? Evidement la méthode des données externes ne peut convenir ici, mais plusieurs méthodes permettent de réaliser ce travail…Aujourd’hui laissez moi vous présenter l’objet WebBrowser !

- 1 – Avant tous vous allez charger dans votre éditeur VBA, les bibliothèques Microsoft HTML Object Library et Microsoft Internet Controls. (Si vous n’êtes pas sur de la démarche, lisez l’article du 9 Mai 2009)

- 2 – Placez dans votre feuille de calcul, deux objets WebBrower. Pour cela utiliser la commande Développeur / Insérer / Autres contrôles…Dans la liste sélectionnez le contrôle Microsoft Web Brower, cliquez sur le bouton OK et glisser pour tracer votre contrôle. La taille et la position de l’objet n’ont pas d’importance pour l’instant.

- 3 –Comme son nom l’indique un Web Brower est simplement un navigateur Internet que l’on a ici incorporé dans notre feuille de calcul. Donc il va nous permettre d’afficher des pages web et d’en étudier le contenu…

- 4 – La première partie du programme a pour objet d’afficher une page web dans le premier web browser et de trouver des informations sur cette page, notamment le nombre et la liste des images qu’elle contient.

- 5 – La seconde partie ramène dans la feuille une image précise en adaptant la taille du webbrowser à la taille de l’image.

- 6 – Voici le code, puisse t’il vous inspirer des améliorations…

Option Explicit

Private Sub Worksheet_Activate()
'ici je lance ma procédure à l'ouverture du classeur
'à vous de choisir éventuellement un autre événements et (ou) un autre objet
Dim maPageHtml As HTMLDocument
Dim imgHtml As HTMLImg
Dim resultat As String
Dim I As Integer
Dim haut As Integer
Dim larg As Integer
'position et taille du premier webbrowser
Feuil2.WebBrowser1.Left = 1
Feuil2.WebBrowser1.Top = 1
Feuil2.WebBrowser1.Width = 400
Feuil2.WebBrowser1.Height = 200
'position du seond webbrowser
Feuil2.WebBrowser2.Left = 500
Feuil2.WebBrowser2.Top = 1
'affichons une page dans le premier webbrower
Feuil2.WebBrowser1.Navigate "http://www.olivier-picot.fr/pagetest.html"
'analysons le contenu de cette page et retournons
'son url + date de modification + taille + nombre d'images
Set maPageHtml = WebBrowser1.Document
resultat = "adresse de la source : " & maPageHtml.URL & vbLf & _
"derniere modification de la page : " & maPageHtml.LastModified & vbLf & _
"taille de la page : " & maPageHtml.fileSize & " octets " & vbLf & _
"nombre d'images dans la page : " & maPageHtml.images.Length & "."
'affichons cette information
MsgBox resultat, , "Information"
'boucle sur les images pour récupérer leurs noms et écriture dans ma feuille de cacul
For I = 0 To maPageHtml.images.Length - 1
Set imgHtml = maPageHtml.images.Item(I)
Feuil2.Cells(I + 15, 1) = imgHtml.src
Next I
'**************************************
'je recupere la taille de la seconde image de ma page
Set imgHtml = maPageHtml.images.Item(1)
haut = imgHtml.Height
larg = imgHtml.Width
'pour adapter la taille de mon webbrowser à celle de mon image
Feuil2.WebBrowser2.Width = larg
Feuil2.WebBrowser2.Height = haut
'un peu de html et l'image est récupérée
.WebBrowser2.Navigate "about:<img src="http://www.olivier-picot.fr/album2.png" />"
'il est impossible de passer des variables VBA au code HTML aussi cette méthode ne ‘permet de récupérer toutes les images d'une page sans les nommer une à une et les ‘afficher dans des webbrowser différents
End Sub





top