Hallo Wissende,
mit untenstehendem Code lade ich ein zipfile aus dem Internet herunter und es klappt normalerweise perfekt. Heute gibts wohl ne Störung im Internet und das Programm bleibt beim
.send
hängen. In die dafür vorgesehene Verzweigung mit der Fehlermeldung kommt es gar nicht.
Habe mich im Netz dann schlau gemacht und gefunden, dass man
.SetTimeouts 10000, 10000, 10000, 10000für max 10 Sekunden Wartezeit nutzen kann. Allerdings bekomme ich eine Fehlermeldung ("Objekt unterstützt diese Eigenschaft oder Methode nicht"), ganz egal ob ich es vor oder nach dem. open einsetze.
Was mache ich falsch? Wie könnte ich das ggf. anders lösen?
Vielen Dank im voraus!
Hans-Jürgen
Set objWeb = CreateObject("Microsoft.XMLHTTP")
With objWeb
.Open "GET", txtURL & txtFilename, Fals
.send
If .Status = 200 Then
Set objStream = CreateObject("ADODB.Stream")
With objStream
.Open
.Type = 1
.Write objWeb.responseBody
.SaveToFile txtLocal & txtFilename, 2
.Close
End With
Else
MsgBox "No connection to " & txtURL & txtFilename
End If
End With
Set objWeb = Nothing
Einen Fehler habe ich schonmal nämlich einen Tippfehler
Das
.Open "GET", txtURL & txtFilename, Fals
muss
.Open "GET", txtURL & txtFilename, Falseso lauten.
Das
Set objWeb = CreateObject("Microsoft.XMLHTTP")
würde ich änder in
Set objWeb = CreateObject("MSXML2.XMLHTTP")
' odereventuell wenn vorhanden:
' Set objWeb = CreateObject("MSXML2.XMLHTTP60")
Und
Falscher Objekt-Typ deklariert
Achte darauf, dass im Code entweder gar nicht typisiert wird (Variant) oder korrekt, z.B.:
Dim objWeb As Object
' oder mit Verweis auf MSXML:
' Dim objWeb As MSXML2.XMLHTTP
also versuch mal so - aber ungetestet
Dim objWeb As Object
Dim objStream As Object
Set objWeb = CreateObject("MSXML2.XMLHTTP") ' oder "MSXML2.XMLHTTP60"
With objWeb
.Open "GET", txtURL & txtFilename, False
.send
If .Status = 200 Then
Set objStream = CreateObject("ADODB.Stream")
With objStream
.Open
.Type = 1 ' adTypeBinary
.Write objWeb.responseBody
.SaveToFile txtLocal & txtFilename, 2 ' adSaveCreateOverWrite
.Close
End With
Else
MsgBox "No connection to " & txtURL & txtFilename
End If
End With
Set objWeb = Nothing
Set objStream = Nothing
Falls es immer noch bei .send stehen bleibt, dann versuch es mal mit
Debug.Print TypeName(objWeb)
vor dem . send und schauen mal was da so angezeigt wird.
Holger
Zitat von: hajott am Heute um 16:19:59Habe mich im Netz dann schlau gemacht und gefunden, dass man
Code [Auswählen] Erweitern
.SetTimeouts 10000, 10000, 10000, 10000für max 10 Sekunden Wartezeit nutzen kann. Allerdings bekomme ich eine Fehlermeldung ("Objekt unterstützt diese Eigenschaft oder Methode nicht"), ganz egal ob ich es vor oder nach dem. open einsetze.
Soweit ich gerade überblicke, wird die
setTimeouts-Methode nur von der
ServerXMLHTTP60-Klasse implementiert.
Folglich für die Objekterstellung:
Set objWeb = CreateObject("MSXML2.ServerXMLHTTP60")
Das war ja auch Teil meiner Einschätzung lass man wissen ob das zieht
Holger