bayeuxenbessin
XLDnaute Nouveau
Bonjour,
J'ai demandé il y a quelques mois s'il était possible de récupérer le contenu HTML d'une page web à partir d'excel.
A partir du code qui m'avait aimablement été fourni par MichelXLD j'avais écrit celui ci :
Sub RecuperationFichierHTML()
'****************************
'* Récupère le fichier HTML *
'* d'une page sur Internet *
'****************************
'Création des fichiers texte
For NumLigneAdresse = 2 To NombredeLigneAdresse
'Récupération des adresses
'AdresseEnCours = Cells(NumLigneAdresse, ColonneAdresseAdresse).Value
AdresseEnCours = "http://www.orange.fr"
Dim Http As Object
Set Http = CreateObject("WinHttp.WinHttpRequest.5.1")
Http.Open "GET", AdresseEnCours, False
Http.Send
Call BinaryToString(Http.ResponseBody, AdresseEnCours)
Set Http = Nothing
Next NumLigneAdresse
'Positionnement sur la feuille Menu
'Sheets("Menu").Select
End Sub
Function BinaryToString(Binary, AdresseEnCours, Optional CharSet = "")
'Déclaration des variables
Dim BinaryStream As Object
Set BinaryStream = CreateObject("ADODB.Stream")
NomDuFichier = "Recuperation.txt"
Chemin = ActiveWorkbook.Path
AnneeEnCours = Trim(Str(Year(Date)))
MoisEnCours = Trim(Str(Month(Date)))
LongueurMoisEnCours = Len(MoisEnCours)
If LongueurMoisEnCours = 1 Then
MoisEnCours = "0" & MoisEnCours
End If 'LongueurMoisEnCours = 1
JourEnCours = Trim(Str(Day(Date)))
HoraireEnCours = Str(Time)
HeureEnCours = Left(HoraireEnCours, 2)
MinuteEnCours = Mid(HoraireEnCours, 4, 2)
SecondeEnCours = Right(HoraireEnCours, 2)
NomDuFichier = Chemin & "\" & AnneeEnCours & MoisEnCours & JourEnCours & HeureEnCours & MinuteEnCours & SecondeEnCours & " Récuperation.txt"
'Récupération des données HTML
With BinaryStream
.Type = 1 ' (Type Binary)
.Open
.Write Binary
.Position = 0
.Type = 2 ' (Type Text)
.CharSet = "us-ascii"
' Specify charset For the source text (unicode) data.
If Len(CharSet) Then .CharSet = CharSet
BinaryToString = .ReadText
.WriteText BinaryToString
'.SaveToFile FileName, 2
.SaveToFile NomDuFichier, 2
'***********************
VariableTest = .ReadText
'***********************
End With
Set BinaryStream = Nothing
End Function
Ce code fonctionne parfaitement si la page ne possède pas de frame mais renvoi le contenu du premier frame s'il y en a plusieurs.
Quelqu'un saurait-il me dire ce qui devrait être rajouter et à quel endroit pour pointer sur le frame qui m'interesse (qui n'est pas forcement le premier).
En recherchant dans ce forum j'ai vu qu'une fonction inner(0) - avec 0 => N° du frame permettrait de résoudre ce problème mais je n'arrive pas à placer correctement ce paramètres sur le code que je possède déjà.
Si quelqu'un a une idée pour résoudre ce problème ?
J'ai demandé il y a quelques mois s'il était possible de récupérer le contenu HTML d'une page web à partir d'excel.
A partir du code qui m'avait aimablement été fourni par MichelXLD j'avais écrit celui ci :
Sub RecuperationFichierHTML()
'****************************
'* Récupère le fichier HTML *
'* d'une page sur Internet *
'****************************
'Création des fichiers texte
For NumLigneAdresse = 2 To NombredeLigneAdresse
'Récupération des adresses
'AdresseEnCours = Cells(NumLigneAdresse, ColonneAdresseAdresse).Value
AdresseEnCours = "http://www.orange.fr"
Dim Http As Object
Set Http = CreateObject("WinHttp.WinHttpRequest.5.1")
Http.Open "GET", AdresseEnCours, False
Http.Send
Call BinaryToString(Http.ResponseBody, AdresseEnCours)
Set Http = Nothing
Next NumLigneAdresse
'Positionnement sur la feuille Menu
'Sheets("Menu").Select
End Sub
Function BinaryToString(Binary, AdresseEnCours, Optional CharSet = "")
'Déclaration des variables
Dim BinaryStream As Object
Set BinaryStream = CreateObject("ADODB.Stream")
NomDuFichier = "Recuperation.txt"
Chemin = ActiveWorkbook.Path
AnneeEnCours = Trim(Str(Year(Date)))
MoisEnCours = Trim(Str(Month(Date)))
LongueurMoisEnCours = Len(MoisEnCours)
If LongueurMoisEnCours = 1 Then
MoisEnCours = "0" & MoisEnCours
End If 'LongueurMoisEnCours = 1
JourEnCours = Trim(Str(Day(Date)))
HoraireEnCours = Str(Time)
HeureEnCours = Left(HoraireEnCours, 2)
MinuteEnCours = Mid(HoraireEnCours, 4, 2)
SecondeEnCours = Right(HoraireEnCours, 2)
NomDuFichier = Chemin & "\" & AnneeEnCours & MoisEnCours & JourEnCours & HeureEnCours & MinuteEnCours & SecondeEnCours & " Récuperation.txt"
'Récupération des données HTML
With BinaryStream
.Type = 1 ' (Type Binary)
.Open
.Write Binary
.Position = 0
.Type = 2 ' (Type Text)
.CharSet = "us-ascii"
' Specify charset For the source text (unicode) data.
If Len(CharSet) Then .CharSet = CharSet
BinaryToString = .ReadText
.WriteText BinaryToString
'.SaveToFile FileName, 2
.SaveToFile NomDuFichier, 2
'***********************
VariableTest = .ReadText
'***********************
End With
Set BinaryStream = Nothing
End Function
Ce code fonctionne parfaitement si la page ne possède pas de frame mais renvoi le contenu du premier frame s'il y en a plusieurs.
Quelqu'un saurait-il me dire ce qui devrait être rajouter et à quel endroit pour pointer sur le frame qui m'interesse (qui n'est pas forcement le premier).
En recherchant dans ce forum j'ai vu qu'une fonction inner(0) - avec 0 => N° du frame permettrait de résoudre ce problème mais je n'arrive pas à placer correctement ce paramètres sur le code que je possède déjà.
Si quelqu'un a une idée pour résoudre ce problème ?
Dernière édition: