Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Auslesen eines Werts von einer Inetseite geht nicht mehr

Forumthread: Auslesen eines Werts von einer Inetseite geht nicht mehr

Auslesen eines Werts von einer Inetseite geht nicht mehr
13.11.2025 16:51:27
Christian
Hallo,

schaut mal bitte diese Seite an

https://www.imdb.com/de/search/name/?gender=female&count=250

da steht oben in der Mitte 1-250 von 2.910.983 (Zahl kann sich bis ihr es ausführt ändern)


https://www.herber.de/bbs/user/179625.xlsm

In dieser Mappe gibt es ein Makro, dass diese Zahl 2910983 von dieser Seite auslesen soll und in 1P!AM5 schreiben soll, tut es aber nicht mehr (ich habe es die letzte Zeit wöchentlich genutzt und es hat immer funktioniert).
Hat einer von euch eine Idee, was sich (vermutlich) an ander Internetseite geändert haben könnte, bzw. wie ich das Makro anpassen muss, damit es wieder funktioniert?

Danke
Christian
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Bei mir klappt...
13.11.2025 17:28:03
Case
Moin, :-)

... es so: ;-)

Set objXML = CreateObject("MSXML2.ServerXMLHTTP.6.0")

With objXML
.Open "GET", url, False
.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:145.0) Gecko/20100101 Firefox/145.0"
.Send
Debug.Print .Status, .statusText
strText = .responseText
End With


Die Zahl "2910985" wird ausgegeben. ;-)

Suche in einer Suchmaschine deiner Wahl mal nach MSXML2.ServerXMLHTTP.6.0.
https://learn.microsoft.com/en-us/previous-versions/windows/desktop/ms766431(v=vs.85)

Und verwende lieber als User-Agent - statt "Mozilla/5.0" - einen aktuellen echten Browser-String. ;-)

Das "Debug.Print .Status, .statusText" kannst du dann rausnehmen (ergab bei mir 200 OK). ;-)

Servus
Case
Anzeige
AW: Bei mir klappt...
13.11.2025 18:36:42
Christian
Hallo Case,

vielen lieben Dank für deine Mühe.

Habe jetzt den Code der Originaldatei geändert zu


'========================
' 15b. Daten aus URLs abrufen (ServerXMLHTTP)
'========================
Set objRegEx = CreateObject("VBScript.RegExp")
With objRegEx
.Pattern = "von ([\d\.,]+)"
.IgnoreCase = True
.Global = False
End With

For j = 1 To 3
Set objXML = CreateObject("MSXML2.ServerXMLHTTP.6.0") ' -- Case Vorschlag
With objXML
.Open "GET", urls(j), False
.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:145.0) Gecko/20100101 Firefox/145.0"
.Send
'Optional: Status prüfen
Debug.Print urls(j), .Status, .statusText
strText = .responseText
End With

Set objMatch = objRegEx.Execute(strText)
If objMatch.count > 0 Then
results(j) = CLng(Replace(Replace(objMatch(0).SubMatches(0), ",", ""), ".", ""))
Else
results(j) = ""
Debug.Print "Keine Zahl gefunden bei URL: " & urls(j)
End If
Next j

For j = 1 To 3
ws.Cells(nextRow, 37 + j).Value = results(j)
Next j


funktioniert.

Zu deinem Link, ich hoffe ich verstehe richtig:

ServerXMLHTTP ist viel leistungsfähiger als die Standard-XMLHTTP-Objekte oder die setProperty-Methoden von DOMDocument.

Ich bekomme mehr Kontrolle über den HTTP-Ablauf:
GET und POST Requests
Custom Headers
Timeout-Einstellungen
Authentifizierung (Basic, NTLM, etc.)

Es wurde ursprünglich für serverseitige Anwendungen gedacht, funktioniert aber auch in VBA, um stabil HTTP-Anfragen zu Webseiten zu senden.

Für mein Makro bedeutet das

Mein ursprüngliches Makro wollte nur eine Zahl aus einer Webseite lesen, reicht ein GET.
Aber manche Seiten liefern mit XMLHTTP nur Platzhalter, weil sie „Bots“ erkennen.
Mit ServerXMLHTTP + aktuellem User-Agent bekomme ich:
Stabile Anfragen
Genaue HTML-Inhalte
Möglichkeit, später POST, Authentifizierung oder XML-Verarbeitung zu nutzen

Du wolltest mir also damit sagen: "Verwende ServerXMLHTTP direkt, weil du damit die volle Kontrolle über HTTP-Anfragen bekommst, und lies dir die Doku dazu durch, um zu verstehen, wie es richtig funktioniert.“

Auf jeden Fall vielen Dank und noch einen schönen Abend
Christian
Anzeige
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18