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.
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.
Unser exklusives Angebot für Dich!
(Gilt für den Abschluss eines Jahres-Abonnements im ersten Jahr, danach 189,-/Jahr)
Hier geht’s weiter →Die ersten 4 Wochen kostenlos testen – voller Zugriff auf alle Artikel, vollständigen Code und Beispieldatenbanken. Kein Risiko: Wenn es nicht passt, kündigst Du einfach innerhalb der ersten vier Wochen.
Oder hast Du eine konkrete Frage zu Deiner eigenen Access-Anwendung?
Vielleicht stellt Deine Anwendung Dich vor eine Herausforderung, zu der Du bisher keine Lösung findest. Schlechte Performance, kein ausreichender Zugriffsschutz, Du bist unsicher über Dein Datenmodell oder Dein Code liefert unerklärliche Fehler?
In unserem kostenlosen Access-Audit schaut sich André Minhorst persönlich gemeinsam mit Dir Deine Lösung per Zoom an – und zeigt Dir, wo Datenmodell, VBA-Code, Ergonomie und Sicherheit Optimierungspotenzial bieten.
Jetzt kostenloses Access-Audit anfordern →