Dateidownload per API

Manchmal kommt es vor, dass man einen oder mehrere Downloads durchführen muss. Normalerweise führt man diesen Download durch einen Klick auf den entsprechenden Link durch. Die Datei landet danach üblicherweise im Download-Ordner, von wo wir ihn dann zum gewünschten Ort verschieben. Wenn wir zuvor die URL der herunterzuladenden Datei kennen und auch wissen, in welchen Ordner und unter welchem Namen die Datei im System landen soll, können wir dies auch per VBA realisieren. Dazu benötigen wir nur eine einfache API-Funktion und ihren Aufruf.

Um einen einfachen Download zu realisieren, können wir die API-Funktion URLDownloadToFile nutzen. Diese deklarieren wir wie in Listing 1. Außerdem finden wir dort eine Funktion zur Vereinfachung des Aufrufs. Dieser brauchen wir nur noch die URL zu der herunterzuladenden Datei zu übermitteln sowie den Pfad der Zieldatei.

#If VBA7 Then
     Private Declare PtrSafe Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" ( _
         ByVal pCaller As LongPtr, ByVal szURL As String, ByVal szFileName As String, _
         ByVal dwReserved As Long, ByVal lpfnCB As LongPtr) As Long
#Else
     Private Declare Function URLDownloadToFile 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
#End If
Public Sub DownloadFile(strURL As String, strPath As String)
     Dim lngResult As Long
     lngResult = URLDownloadToFile(0, strURL, strPath, 0, 0)
     If lngResult = 0 Then
         MsgBox "Download erfolgreich!", vbInformation
     Else
         MsgBox "Download fehlgeschlagen!", vbCritical
     End If
End Sub

Listing 1: Die Deklaration der API-Funktion und eine Wrapper-Funktion

Ein solcher Aufruf könnte wie folgt aussehen:

DownloadFile "https://access-im-unternehmen.de/ aiu_1533.zip", CurrentProject.Path & "\aiu_1533.zip"

Wenn der Download erfolgreich war, landet die Datei genau im angegebenen Pfad.

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

den kompletten Artikel im PDF-Format mit Beispieldatenbank

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar