Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1752to1756
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Datei herunter laden WinHttpReq

VBA Datei herunter laden WinHttpReq
23.04.2020 13:42:05
stefan
Hallo, ich habe gerade Probleme, wenn ich mit einem WinHttpReq/ADODB-Stream eine Datei herunter laden möchte mittels VBA. Ich habe dazu folgende Funktion:
Public Function DownloadCSVFile(ByVal URL As String, ByVal DownloadPath As String, Optional  _
Overwrite As Boolean = True) As Boolean
On Error GoTo Failed
Dim WinHttpReq          As Object: Set WinHttpReq = CreateObject("Microsoft.XMLHTTP")
WinHttpReq.Open "GET", URL
WinHttpReq.send
'Application.Wait (Now + TimeValue("0:00:20"))
Debug.Print "Status: " & WinHttpReq.Status
If WinHttpReq.Status = 200 Then
Dim oStream         As Object: Set oStream = CreateObject("ADODB.Stream")
oStream.Open
oStream.Type = 1
oStream.Write WinHttpReq.responseBody
Debug.Print "Punkt 3"
oStream.SaveToFile DownloadPath, Abs(CInt(Overwrite)) + 1
oStream.Close
DownloadCSVFile = Len(Dir(DownloadPath)) > 0
Exit Function
End If
Failed:
DownloadCSVFile = False
Debug.Print "Status: " & WinHttpReq.Status
Debug.Print "Fehler in Sub Fehler0" & vbCrLf & "Fehlernummer: " & Err.Number & _
vbCrLf & "Fehlerbeschreibung: " & Err.Description
End Function

Wenn ich nun die Funktion aufrufe, z.B.:
?DownloadCSVFile("https://www.ariva.de/quote/historic/historic.csv?secu=320&boerse_id=1&clean_split=1&clean_payout=0&clean_bezug=1&min_time=1.1.2000&max_time=21.4.2020&trenner=%3B&go=Download", Application.ActiveWorkbook.Path & "\test.csv", True)
Dann habe ich immer das Problem, dass beim ersten Mal herunterladen der Fehler -2147467259 (unbekanter Fehler, der wohl mit dem Schreiben der Datei zu tun hat) auftaucht. Führe ich die Fuunktion kurz danach wieder aus, dann wird die Datei ohne Fehler herunter geladen. Immer wieder das gleiche Muster - wenn ich die Datei bereits einmal herunter geladen habe, dann geht es ohne Probleme, aber auf Anhieb bekomme ich es nicht herunter geladen. Ich hatte gedacht, dass ich mit Application.Wait das Warten auf eine Antwort steuern kann, aber das funktioniert auch nicht zuverlässig. Außerdem hatte ich an der gleichen Stelle schon WinHttpReq.WaitforResponse probiert, allerdings scheint diese Methode im VBA nicht zu existieren. Und ich möchte auch ungern immer 20s warten, bis ich die Datei herunter laden kann, da es bei mehreren Dateien dann doch recht lang dauert.
Kennt hier jemand eine zuverlässige Methode, dass ich die Datei direkt herunterladen kann?
Viele Grüße
Stefan

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: UrlMon
23.04.2020 17:42:27
Fennek
Hallo,
ich habe schon mehrere Wege gesehen, eine Datei down-zu-load-en, aber ADO war noc nicht dabei.
Nutze eine Suchmaschine deiner Wahl nach "VBA UrlMon".
mfg
Archiv-Code:

' 64-bit
Private Declare PtrSafe Function iDownLoad Lib "urlmon" Alias "URLDownloadToFileA" (ByVal  _
pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
Sub DownLoad_Test()
Dim iLng As Long
const iPath as string = "c:\user\user\download\"
iURL = "http://www.herber.de/bbs/user/113848.xlsx"
jFile = iPath & "DownLoad1.xlsx"
iLng = iDownLoad(0, iURL, jFile, 0, 0)
End Sub
Speichert die Datei aus Herber in /Download
Anzeige

308 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige