07.05.2020, 18:14 (Dieser Beitrag wurde zuletzt bearbeitet: 07.05.2020, 18:14 von Bremer87.)
Hi zusammen,
ich habe ein VBA geschrieben, bei dem IDs aus einer HomePage ausgelesen werden und anschließend in ein Tabellenblatt übertragen werden. Da die IDs auf unterschiedlichen Seiten sind, blättert das Programm durch die jeweiligen Seiten.
Eigentlich würde ich gerne alle IDs untereinander in einer Spalte schreiben lassen. Ich schaffe es aber nicht, dass das Programm korrekt die letzte Zeile erkennt. Deshalb habe ich mir so beholfen, dass die IDs in Spalten nebeneinander eingefügt werden.
Alle Beiträge sollen untereinander eingefügt werden.
Wenn eine ID in Spalte A bereits existiert, soll diese nicht überschrieben werden.
Wäre super wenn ihr mich unterstützen könntet, wie ich hier am besten vorgehen muss.
natürlich habe ich vorher gegoogled und versucht es selbst umzusetzen. Habe versucht mit dem folgenden Coding die letzte Zeile anzusprechen, das ist mir aber nicht gelungen. Es wurde immer nur die Zeile 1 überschrieben.
du brauchst gar nicht die letzte Zelle erkennen lassen, sondern für die Zeile einfach einen Zähler bei jedem Schleifendurchgang erhöhen. Du hattest in deinem Code bei der Zeile mit dem "Cells(...)-Befehl die Spalte mit dem "n" erhöht
Probiere mal Folgendes:
Code:
Sub ExposeID()
Dim browser As Object 'Aufnehmen der verwendeten Instanz des Browsers (Internet Explorer) Dim knotenAst As Object 'Aufnehmen einer HTML Struktur aus dem Browser Dokument Dim n As Integer
Dim url As String 'Aufnehmen der auszulesenden Adresse Dim ExposeID As String
Dim nodeList As Object Dim i As Long Dim Zeile As Long
Set browser = CreateObject("internetexplorer.application")
For n = 0 To 2 url = "https://www.immobilienscout24.de/Suche/de/niedersachsen/oldenburg-oldenburg/haus-kaufen?pagenumber=" & n browser.Visible = False browser.navigate url Do Until browser.readyState = 4: DoEvents: Loop Set nodeList = browser.document.querySelectorAll(".result-list__listing[data-id]") For i = 0 To nodeList.Length - 1 Zeile = Zeile + 1 Debug.Print "Zeile: "; Zeile, nodeList.Item(i).getAttribute("data-id") Cells(Zeile, 1) = nodeList.Item(i).getAttribute("data-id") Next i Next n
Set nodeList = Nothing Set browser = Nothing
Debug.Print "ok"
End Sub
Ganz sauber beendest du die Routine, wenn du die beiden "Set..."-Zuweisungen wieder auf "Nothing" setzt.
Herzliche Grüße aus dem Rheinland Jörg
[Windows 10, Microsoft 365]
Folgende(r) 1 Nutzer sagt Danke an LuckyJoe für diesen Beitrag:1 Nutzer sagt Danke an LuckyJoe für diesen Beitrag 28 • Bremer87
mit deiner Unterstützung hat es geklappt. :) Der Fehler war, dass ich nicht richtig hochgezählte habe und deshalb die Werte nicht fortlaufend untereinander geschrieben wurden.
Deine "Aufräumarbeiten" habe ich soweit auch in mein Coding übernommen. Wieder was dazu gelernt.