QueryTables VS IE = CreateObject("internetexplorer.application")
bonjour a tous
dans le but d'optimiser mon code vba
je cherche a remplacer mes querytables xlEntirePage par autres choses de plus rapide
lorsqu'il y a qu' une "table" a importer je me débrouille ( Merci a PatrickT. pour son outils iegetelementid ? ) tres pratique & simple
sauf que voila j'ai besoin d'autres infos " text " qui ne sont pas dans des "tables "
et plus que du sur-mesure je préfère du prêt a porter , c'est facilement modifiable et exploitable sur d'autres pages
donc je me suis dit je vais importer la page entière , ça fonctionne
il me suffira de faire quelques "split " pour exploiter mes données ensuite
Peux on importer la page entière et exploiter la table par la même occasion ( en 1 fois ) ?
j'ai fais quelques essais mais sans grande réussite
1er code pour importer text de la page - 2 imie code pour importer une table + essai avec .body.innerText sans reussite :?
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
Dim IE As InternetExplorer
Dim maPageHtml As HTMLDocument
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = False
IE.navigate "http://google.com"
Do Until IE.readyState = READYSTATE_COMPLETE
DoEvents
Loop
Text = IE.document.body.innerText |
Code:
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 43 44 45
| Sub testdt()
Columns("A:l").Clear
Dim ReQ As Object, UrL As String
UrL = "http://www.geny.com/partants-pmu/2015-05-19-longchamp-pmu-prix-des-gobelins_c714591"
Set ReQ = CreateObject("microsoft.xmlhttp")
ReQ.Open "POST", UrL, False
ReQ.setRequestHeader "Accept", "text/html, application/xhtml+xml, */*"
ReQ.setRequestHeader "Accept-Language", "fr-FR"
ReQ.setRequestHeader "User-Agent", "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)"
ReQ.setRequestHeader "Accept-Encoding", "gzip, deflate"
ReQ.setRequestHeader "Host", "www.geny.com"
ReQ.setRequestHeader "DNT", 1
ReQ.setRequestHeader "Connection", "Keep - Alive"
ReQ.setRequestHeader "Cookie", " JSESSIONID=3E554B80B1ABBC36A2C53EC91C219C77.raoul_1;"
ReQ.send
'MsgBox ReQ.responsetext
Set fauxdoc = CreateObject("htmlfile")
With fauxdoc
'''body.innerText = ReQ.responsetext ???
.body.innerhtml = ReQ.responsetext
Set grouptable = .getelementsbytagname("TABLE")
For i = 0 To grouptable.Length - 1
If grouptable(i).ParentNode.ID = "dt_partants" Then Set matable = grouptable(i)
Next
For Each elem In matable.all
If elem.tagname = "TD" Then elem.innerhtml = elem.innerText
Next
faire = .ParentWindow.clipboardData.SetData("text", matable.outerhtml)
With Sheets(1)
Set cel = .Cells(Rows.Count, 1).End(xlUp).Offset(2, 0)
cel.Select
.Paste:
End With
faire = .ParentWindow.clipboardData.ClearData("text")
End With
End Sub |