Hallo allemaal,
Compleet nieuw met deze materie ben ik begonnen aan VBA om informatie van een website af te halen en in een Exceldocument te krijgen met als doel ermee te gaan rekenen.
Wat ik tot nu toe heb, krijgt enkel de eerste pagina van 20 rijen als resultaat. Op de webpagina waar ik de informatie vandaan wil halen, zijn 377 pagina's met resultaten.
Dit is wat ik heb:
----------------------------------------------------------------------------------------------------------
Sub Macro3()
'
' Macro3 Macro
'
'Volgende tabblad
Sheets("Finviz_bysector").Select
Cells.Select
Selection.ClearContents
Range("A1").Select '
Web_URL = "https://finviz.com/screener.ashx?v=121&r=1"
Set HTML_Content = CreateObject("htmlfile")
With CreateObject("msxml2.xmlhttp")
.Open "GET", Web_URL, False
.send
HTML_Content.body.innerHTML = .responseText 'this is the highlighted part for the error
End With
Column_Num_To_Start = 1
iRow = 2
iCol = Column_Num_To_Start
iTable = 0
For Each Tab1 In HTML_Content.getElementsByTagName("table")
With HTML_Content.getElementsByTagName("table")(iTable)
For Each Tr In .Rows
For Each Td In Tr.Cells
Sheets("Finviz_bysector").Cells(iRow, iCol).Select
Sheets("Finviz_bysector").Cells(iRow, iCol) = Td.innerText
iCol = iCol + 1
Next Td
iCol = Column_Num_To_Start
iRow = iRow + 1
Next Tr
End With
iTable = iTable + 1
iCol = Column_Num_To_Start
iRow = iRow + 1
Next Tab1
'
End Sub
----------------------------------------------------------------------------------------
Dit geeft in het excel werkblad vanaf rij 50 de informatie die ik eigenlijk wil hebben. Echter, dit is slechts pagina 1 van de 377
In de internet browser is de eerste pagina "https://finviz.com/screener.ashx?v=121&r=1"
Als je in de browser op "next" klikt, is de volgende pagina "https://finviz.com/screener.ashx?v=121&r=21"
De daaropvolgende pagina is "https://finviz.com/screener.ashx?v=121&r=41" enz enz.
Wat ik graag zou willen bereiken is:
1) dat alle pagina's onder elkaar in mijn excel werkblad komen. Ikzelf denk aan een loop met een variabele die 1, 21,41,61,81 enz enz doet totdat het einde is bereikt.
2) indien mogelijk enkel de rijen met de data van de aandelen, dus zoals rij 50 t/m 70 en dat hij dus verder gaat met rij 51 en de informatie van elke volgende pagina netjes aansluit.
Ik hoop dat iemand met dit mooie weer zin en tijd heeft om hiernaar te kijken. Alvast heel hartelijk bedankt voor alle tips!
Groetjes,
Marty
Compleet nieuw met deze materie ben ik begonnen aan VBA om informatie van een website af te halen en in een Exceldocument te krijgen met als doel ermee te gaan rekenen.
Wat ik tot nu toe heb, krijgt enkel de eerste pagina van 20 rijen als resultaat. Op de webpagina waar ik de informatie vandaan wil halen, zijn 377 pagina's met resultaten.
Dit is wat ik heb:
----------------------------------------------------------------------------------------------------------
Sub Macro3()
'
' Macro3 Macro
'
'Volgende tabblad
Sheets("Finviz_bysector").Select
Cells.Select
Selection.ClearContents
Range("A1").Select '
Web_URL = "https://finviz.com/screener.ashx?v=121&r=1"
Set HTML_Content = CreateObject("htmlfile")
With CreateObject("msxml2.xmlhttp")
.Open "GET", Web_URL, False
.send
HTML_Content.body.innerHTML = .responseText 'this is the highlighted part for the error
End With
Column_Num_To_Start = 1
iRow = 2
iCol = Column_Num_To_Start
iTable = 0
For Each Tab1 In HTML_Content.getElementsByTagName("table")
With HTML_Content.getElementsByTagName("table")(iTable)
For Each Tr In .Rows
For Each Td In Tr.Cells
Sheets("Finviz_bysector").Cells(iRow, iCol).Select
Sheets("Finviz_bysector").Cells(iRow, iCol) = Td.innerText
iCol = iCol + 1
Next Td
iCol = Column_Num_To_Start
iRow = iRow + 1
Next Tr
End With
iTable = iTable + 1
iCol = Column_Num_To_Start
iRow = iRow + 1
Next Tab1
'
End Sub
----------------------------------------------------------------------------------------
Dit geeft in het excel werkblad vanaf rij 50 de informatie die ik eigenlijk wil hebben. Echter, dit is slechts pagina 1 van de 377
In de internet browser is de eerste pagina "https://finviz.com/screener.ashx?v=121&r=1"
Als je in de browser op "next" klikt, is de volgende pagina "https://finviz.com/screener.ashx?v=121&r=21"
De daaropvolgende pagina is "https://finviz.com/screener.ashx?v=121&r=41" enz enz.
Wat ik graag zou willen bereiken is:
1) dat alle pagina's onder elkaar in mijn excel werkblad komen. Ikzelf denk aan een loop met een variabele die 1, 21,41,61,81 enz enz doet totdat het einde is bereikt.
2) indien mogelijk enkel de rijen met de data van de aandelen, dus zoals rij 50 t/m 70 en dat hij dus verder gaat met rij 51 en de informatie van elke volgende pagina netjes aansluit.
Ik hoop dat iemand met dit mooie weer zin en tijd heeft om hiernaar te kijken. Alvast heel hartelijk bedankt voor alle tips!
Groetjes,
Marty