Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1832to1836
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

Bild(er) über IE herunterladen

Bild(er) über IE herunterladen
06.06.2021 11:47:42
Jürgen
Hallo Zusammen,
meine Frau hat von Ihrem Lieferanten im Internet verschiedene Bilder zu den Kollektionen.
Nun habe ich mir schon per VBA alle wichtigen Details der Kollektionen aus den verschiedenen Seiten ausgelesen und das ganze in eine Tabelle gepackt, so dass ich Bild für Bild in einer Schleife aufrufen kann.
Jetzt hänge ich aber fest. Ich möchte das Bild herunterladen. Die komplette URL mit Bild ist mir bekannt. Das Aufrufen klappt auch, aber wie bekomme ich den Download hin?
Wie immer besten Dank und viele Grüße
Jürgen

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
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
Anzeige
AW: Bild(er) über IE herunterladen
07.06.2021 11:10:27
Jürgen
Servus Zwenn,
vielen vielen Dank! Das probiere ich heute gleich mal aus!
IE war jetzt mehr eine Krücke, weil ich damit schon ein bisschen expermimentiert habe. Über Selenium bin ich auch schon gestolpert. Aber hierzu habe ich sehr wenig Infos gefunden.
Eine Frage noch, kannst du mir sagen wo ich ein paar Anleitungen zu Selenium zusammen mit VBA finde. Ich habe gestern nur Infos zu Python und Co gefunden. Kaum etwas über VBA und Selenium.
Nochmal Dank für deine tolle Antwort.
Viele Grüße Jürgen
AW: Bild(er) über IE herunterladen
07.06.2021 12:21:02
Zwenn
Hallo Jürgen
Eine Seite mit umfangreichen Informationen zu Selenium kenne ich leider auch nicht. Ich habe aber im folgend verlinkten Beitrag, vom 18.05.2021 um 21:21:12, im unteren Bereich beschrieben, wie man SeleniumBasic (die Version für VBA) unter Excel mit Chrome zum laufen bekommt. Da findest Du auch einen Beispielcode, mit dem Du prüfen kannst, ob die Einrichtung funktioniert hat. Es sind auch die drei benötigten Downloadlinks für SeleniumBasic, Chrome und den Chrome WebDriver angegeben:
https://www.herber.de/forum/cgi-bin/callthread.pl?index=1831729#1831851
Ansonsten bin ich da selbst noch nicht viel weiter. Die bisherigen Informationen zum Thema Selenium habe ich vor allem von StackOverflow. Dort kannst Du mit den Suchbegriffen [excel] [vba] [selenium] anfangen zu recherchieren. Die eckigen Klammern gehören mit zum Suchterm. Darüber wird der seiteneigenen Suchmaschine mitgeteilt, sie soll in den Tags zu Beiträgen suchen (Suchbegriffe sind im folgenden Link schon enthalten):
https://stackoverflow.com/questions/tagged/excel+vba+selenium
Im oben verlinkten Thread findest Du auch ein paar Infos zu xhr und auch ein Makro von Anton, wie xhr grundsätzlich funktioniert. Ich verlinke Dir noch zwei Threads, die noch etwas mehr Infos zu WebScraping enthalten.
Einmal zu xhr (Threadstart 28.05.2021 um 14:52:43):
https://www.herber.de/forum/cgi-bin/callthread.pl?index=1833060
Einmal ein Beitrag mit eher allgemeinen Ausführungen (vom 18.04.2021 um 21:58:42):
https://www.herber.de/forum/cgi-bin/callthread.pl?index=1825794#1826500
Viele Grüße,
Zwenn
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige