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