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