![]() |
|
|
|||||||
| Registreer | FAQ | Gebruiksaanwijzing forum | Online excel cursus | Zoeken | Berichten van vandaag | Markeer forums als gelezen |
|
|
|
LinkBack | Discussietools | Weergave |
|
#1
|
||||
|
||||
|
importeer met internet explorer alle uitslagen van de tour de france (eigenlijk is het geen webquery omdat de code op buttons klikt en dat kan een webquery niet)
werkt voor de jaren 2007 tot en met 2011 werkt met internet explorer 8 de proloog is soms etappe 0 als het importeren niet goed verloopt kan het helpen om de vertraging hoger te zetten in de etappe's waar punten worden gehaald, moet je wel aan het eind alle punten optellen om een totaal voor die etappe te krijgen update 1: code aangepast aan de nieuwe html-opmaak van Tour de France 2011 commercieel gebruik van de gegevens van Tour de France 2011 is niet toegestaan Code:
Option Explicit
Private Sub CommandButton1_Click()
Dim clngvbNullString As Long
Dim avntJersey As Variant
Dim avntStanding As Variant
Dim avntStage As Variant
Dim iavntJersey As Long
Dim iavntStanding As Long
Dim iavntStage As Long
Dim lngCol As Long
Dim lngRow As Long
Dim objHTML1 As Object
Dim objHTML2 As Object
Dim objIE As Object
Dim objWorksheet As Object
Dim strStage As String
With Application
.Calculation = xlCalculationManual
.DisplayAlerts = False
.ScreenUpdating = False
End With
avntStanding = Array("G", "Algemeen", "E", "Etappe") 'id's in html-broncode en tab-namen
avntJersey = Array("IT", "Individueel", "IP", "Punten", "ET", "Ploegen", "IM", "Berg", "IJ", "Jongeren") 'id's in html-broncode en tab-namen
For Each objWorksheet In Worksheets 'wis alle bladen behalve "Invoer"
If objWorksheet.Name <> "Invoer" Then
objWorksheet.Delete
End If
Next
Set objIE = CreateObject("InternetExplorer.Application") 'maak verbinding met internet explorer
objIE.Navigate "http://www.letour.fr/" & CStr(Range("C2").Value) & "/TDF/LIVE/us/" & CStr(100 * Range("C3").Value) & "/classement/index.html" 'maak verbinding met website
objIE.Visible = True 'maak internet explorer zichtbaar
Do While objIE.Busy Or objIE.readyState <> 4 'wacht tot internet explorer klaar is
DoEvents
Loop
Set objHTML1 = objIE.document 'lees document
For iavntStanding = 0 To UBound(avntStanding) Step 2 'doorloop rangschikkingen
objHTML1.getElementbyid(avntStanding(iavntStanding)).Click 'klik rangschikking
Application.Wait (Now + TimeValue("0:00:0" & Range("C4").Value)) 'wacht
Set objHTML2 = objHTML1.getElementbyid("detailDiv").document 'lees document
For iavntJersey = 0 To UBound(avntJersey) Step 2 'doorloop trui
objHTML2.getElementbyid(avntJersey(iavntJersey)).Click 'klik trui
Application.Wait (Now + TimeValue("0:00:0" & Range("C4").Value)) 'wacht
Do
strStage = objHTML1.getElementbyid("contentDetailDyn").innertext 'lees text in html-broncode
Loop Until strStage <> vbNullString And strStage <> "Loading..." 'niet leeg en niet "Loading"
avntStage = Split(strStage, vbCrLf) 'opdelen
With Worksheets.Add(, Worksheets(Worksheets.Count)) 'voeg tabblad toe
.Name = avntStanding(iavntStanding + 1) & "_" & avntJersey(iavntJersey + 1) 'stel naam van tabblad in
lngRow = 1 'rij am_2011
lngCol = 0 'kolom
clngvbNullString = 0 'aantal lege regels na elkaar
For iavntStage = 0 To UBound(avntStage) 'doorloop text
Select Case avntStage(iavntStage)
Case Is = "<div class='errormess'><activez_javascript:></div>" 'einde (sub)tabel
lngRow = lngRow + 1 'volgende rij
lngCol = 0 'kolom
Case Is <> vbNullString
lngCol = lngCol + 1 'volgende kolom
.Cells(lngRow, lngCol).Value = avntStage(iavntStage) 'schrijf data
clngvbNullString = 0 'aantal lege regels na elkaar
Case Is = vbNullString
clngvbNullString = clngvbNullString + 1 'aantal lege regels na elkaar
End Select
If clngvbNullString = 3 Then 'wanneer het aantal lege regels na elkaar 3 is, is de rij kompleet
lngRow = lngRow + 1 'volgende rij
lngCol = 0 'kolom
clngvbNullString = 0 'aantal lege regels na elkaar
End If
Next
.Rows(1).Delete 'verwijder eerste rij (individual points team climber youth)
.Columns("A:F").AutoFit 'automatisch kolombreedte
End With
Next
Next
objIE.Quit
Set objWorksheet = Nothing
Set objHTML2 = Nothing
Set objHTML1 = Nothing
Set objIE = Nothing
With Application
.Calculation = xlCalculationAutomatic
.DisplayAlerts = True
.ScreenUpdating = True
End With
End Sub
Laatst gewijzigd door alphamax; 5 augustus 2011 om 20:29 |
| Sponsored Links |
|
#2
|
||||
|
||||
|
werkt ook in 2011
Laatst gewijzigd door alphamax; 10 juli 2011 om 13:14 |
|
#3
|
|||
|
|||
|
Ik probeer dit uit op mijn Mac maar ik krijg het niet aan de praat. Gaarne een oplossing
|
|
#4
|
||||
|
||||
|
ik kan de code niet verbeteren omdat ik geen mac heb
het probleem zit waarschijnlijk in de getElementbyid je mag van mij rustig de code of het bestand op een mac-forum plaatsen om je vraag alsnog beantwoordt te krijgen |
|
#5
|
||||
|
||||
|
volg eens deze discussie http://www.worksheet.nl/forumexcel/v...el-2011-a.html het omzetten van windows naar mac gaat niet altijd even vlekkeloos, voor mij is dit nieuw maar we zijn nu aan het leren
|
|
#6
|
|||
|
|||
|
Goedenavond,
wanneer ik een jaar kies en vervolgens het nummer van de etappe, wordt IE opgezocht en wordt er door de verschillende 'truien' gebladerd, maar de tabbladen in Excel worden niet gevuld. Is het mogelijk om daar de rugnummers en/of de namen van de renners te krijgen? MVG Michael |
|
#7
|
||||
|
||||
|
als alles goed werkt krijg je net zo een overzicht als wanneer je het bestand voor de eerste keer geopend hebt
afgelopen tour de france heeft het allemaal goed gewerkt Citaat:
de code leunt zwaar op de html-opbouw van de site, misschien dat daar iets veranderd is, en het daarom niet werkt |
|
#8
|
|||
|
|||
|
Hoi Alphamax,
ik begrijp je antwoord. De site van de TDF wordt ook weer netjes afgesloten en de tabbladen zijn weer toegevoegd aan de sheet. Maar ze zijn allemaal leeg. Ik had hier data (uitslagen, rugnummers, namen renners) verwacht of is dat niet de juiste verwachting? MVG Michael |
|
#9
|
||||
|
||||
|
ja, dat klopt
de code maakt eerst alle bladen leeg, voordat deze weer gevuld worden maar heb je de vertraging hoger gemaakt, hierdoor heeft programma de tijd om de gegevens binnen te halen |
|
#10
|
||||
|
||||
|
het lijkt erop dat er in de tussentijd iets op de site veranderd is, dit moet ik nog uitzoeken en aanpassen
|
![]() |
| Discussietools | |
| Weergave | |
|
|
|
|||||||
| Registreer | FAQ | Gebruiksaanwijzing forum | Online excel cursus | Zoeken | Berichten van vandaag | Markeer forums als gelezen |
Soortgelijke discussies
|
||||
| Discussie | Auteur | Forum | Reacties | Laatste bericht |
| tour de france | weert | Afgehandelde vragen | 3 | 19 maart 2011 21:28 |
| Tour de France 2010 | deneus6 | Afgehandelde vragen | 5 | 26 april 2010 08:37 |
| Tour De France 2008 | R.kwakman | Suggesties / Ideeën / Nieuwe Ontwikkelingen | 3 | 19 juli 2008 00:30 |
| Tour de france poule | theo5464 | Afgehandelde vragen | 3 | 10 juli 2008 13:39 |
| Tour de france uitslagen verwerken | rob1986 | Afgehandelde vragen | 2 | 3 juli 2007 00:01 |