Hallo zusammen,
ich bin absoluter Neuling in VBA und benötige daher etwas Hilfe.
Ich habe folgenden Programmcode geschrieben:
Sub Test()
'Declare row variable
a = 2
For Each Zelle In Sheets("Tabelle2").Range("A2:A50")
PLZ = Zelle.Value
For Each Zelle2 In Sheets("Tabelle3").Range("A2:A3")
Sorte = Zelle2.Value
'Declare Internet Explorer as Object
Dim IEApp As Object
Set IEApp = CreateObject("InternetExplorer.Application")
'Show Internet Explorer
IEApp.Visible = True
'Navigate to desired web page
IEApp.navigate "https://www.clever-tanken.de/tankstelle_liste?spritsorte=" & Sorte & "&r=5&lat=&lon=&ort=" & PLZ
'Wait until web page has been loaded
Do: Loop Until IEApp.Busy = False
Application.Wait (Now + TimeValue("0:00:05"))
'Declare source code as Object
Dim SourceCode As Object
Set SourceCode = IEApp.document
Debug.Print SourceCode.body.outerHTML
'Loop for Sorte, Preis, Name, ID,Adresse, Geokoordinaten, Zeit
For Each Preis In SourceCode.GetElementsByClassName("price-entry")
Debug.Print Preis.innerText
Sheets("Tabelle1").Range("A" & a) = Sorte
Sheets("Tabelle1").Range("B" & a) = Preis.GetElementsByClassName("fuel-station-price")(0).innerText
Sheets("Tabelle1").Range("C" & a) = Preis.GetElementsByClassName("row fuel-station-location-name")(0).innerText
Sheets("Tabelle1").Range("D" & a) = Preis.GetElementsByClassName("col-xs-12")(0).innerText
Sheets("Tabelle1").Range("E" & a) = Preis.GetAttribute("id")
Sheets("Tabelle1").Range("F" & a) = Preis.GetAttribute("ng-init")
Sheets("Tabelle1").Range("G" & a) = Now
a = a + 1
Next
'Close Internet Explorer
IEApp.Quit
'Clear objects to save memory
Set IEApp = Nothing
Next
Next
End Sub
Diesen möchte ich eine Woche lang stündlich ausführen lassen. Die Daten sollen nicht überschrieben werden, sondern Blockweise gespeichert werden. Damit meine ich, dass Spalte A bis G ein Block darstellt und die neu gezogenen Daten, dann von Spalte H bis N gespeichert werden sollen.
Falls jemand eine Lösung für mich hat, würde mich das sehr freuen |