Wir wünschen allen Forenteilnehmern ein frohes Fest und einen guten Rutsch ins neue Jahr. x

VBA: Letzte Zeile erkennen und Werte untereinander einfügen
#1
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.

  1. Alle Beiträge sollen untereinander eingefügt werden.
  2. 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. 

Vielen Dank!


Angehängte Dateien Thumbnail(s)
   

.xlsm   IDs abrufen.xlsm (Größe: 14,79 KB / Downloads: 3)
Top
#2
Hi,

https://lmgtfy.com/?q=Excel+vba+letzte+Zeile
Herzliche Grüße aus dem Rheinland
Jörg

[Windows 10, Microsoft 365]
Top
#3
(07.05.2020, 19:48)LuckyJoe schrieb: Hi,

https://lmgtfy.com/?q=Excel+vba+letzte+Zeile
 
Hallo LuckyJoe,

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.

Code:
letztezeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row

Deshalb habe ich mein Anliegen hier gepostet.  :)

Viele Grüße
Top
#4
Hi,

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 Wink

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:
  • Bremer87
Top
#5
Hallo LuckyJoe,

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.

Vielen Dank!
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste