AW: Bild(er) über IE herunterladen
07.06.2021 09:49:51
Zwenn
Hallo Jürgen
Mit dem IE kannst Du nur die URLs zu den Bildern beschaffen, die Du runterladen möchtest. Das Runterladen für beliebige Dateien selbst fünktioniert über folgende API Funktion von Windows:
(Es ist zwei Mal die gleiche Funktion. Oben für 64 Bit Excel und unten für 32 Bit Excel. Du kannst den Block so einfach übernehmen)
#If Win64 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 LongPtr, 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
Die Funktion gibt eine Ganzzahl zurück. Wenn es eine 0 ist, wurde die gewünschte Datei erfolgreich runtergeladen. Der Aufruf erfolg so:
(Ich schreibe die Variablen Definitionen mit hin, damit Du die Datentypen hast)
Dim bildGespeichert As Long 'Rückgabewert der Funktion. 0 bedeutet Erfolgreich, alles andere Misserfog
Dim bildURL as String 'Eine der URLs aus dem IE
Dim speicherPfad As String 'Pfad zum Speicherort. Unbedingt mit \ abschließen
Dim bildName As String 'Unter diesem Namen wird das Bild im speicherPfad gespeichert
bildGespeichert = URLDownloadToFile(0, bildURL, speicherPfad & bildName, 0, 0)
Bei mehreren URLs zu Dateien erfolgt der Aufruf in einer Schleife, in der Du die URL und den Bildnamen dynamisch vergeben musst, damit alles klappt. Ob ein Bild erfolgreich runtergeladen wurde, kannst Du über If prüfen, falls notwendig:
If bildGespeichert = 0 Then
'hier machen was Du bei Erfolg machen willst
Else
'Hier machen, was Du bei Misserfolg machen willst, falls notwendig
End If
Wenn das Projekt längerfristig ausgelegt ist, rate ich dringend dazu, eine Alternative zur Verwendung des IE zu finden. Dieser wird zunehmend immer weniger unterstützt und wird ab Juni 2022 aus Windows verschwinden. Ob er dann noch manuell nachinstalliert werden kann oder ob es dann noch Seiten gibt, die ihn unterstützen, weiß ich nicht. Auf jeden Fall ist er ein Auslaufmodell, welches schon heute mitunter nicht mehr funktioniert.
Alternativen sind xhr (XML HTTP Request), sofern keine dynamischen Inhalte berücksichtigt werden müssen. Oder Selenium, womit auch andere Browser gesteuert werden können. Ich gebe diese beiden Begriffe erstmal für "den Hinterkopf" mit.
Viele Grüße,
Zwenn