Значения, распознанные как текст
Вы можете использовать функцию Match для сравнения значений, как написано в комментариях:
If IsError(Application.Match(nodeList.Item(i).getAttribute("data-id"), Cells.Range("A:A"), 0)) Then
Проблема в том, что данные распознаются как текст , а при записи на лист преобразуется в целое число. Вы можете преобразовать текст в число с помощью функции Val
. Посмотрите на критическую строку в коде:
Option Explicit
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 letztezeile As Integer
Dim nodeList As Object, i As Long
Set browser = CreateObject("internetexplorer.application")
browser.Visible = False
For n = 0 To 1
url = "https://www.immobilienscout24.de/Suche/de/niedersachsen/" _
& "oldenburg-oldenburg/haus-kaufen?pagenumber=" & n + 1
browser.navigate url
Do Until browser.readyState = 4: DoEvents: Loop
letztezeile = Cells(Rows.Count, 1).End(xlUp).Row
Set nodeList = browser.document.querySelectorAll( _
".result-list__listing[data-id]")
For i = 0 To nodeList.Length - 1
If IsError(Application.Match(Val(nodeList.Item(i) _
.getAttribute("data-id")), Cells.Range("A:A"), 0)).Value Then
Cells(letztezeile + i + 1, 1).Value = nodeList.Item(i) _
.getAttribute("data-id")
Else
End If
Next i
Next n
Set nodeList = Nothing
browser.Quit
End Sub
Я думаю, что эта версия Inte rnet Explorer слишком медленная, поэтому вы можете задать другой вопрос, как решить эту проблему с помощью xhr (XML HTTP запрос).