Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Bild wird im kleinem Format runter geladen

Forumthread: Bild wird im kleinem Format runter geladen

Bild wird im kleinem Format runter geladen
21.07.2025 19:25:21
Daniel Schüpbach
Hallo Zusammen
Mein Marko zum runterladen von Bilder Urls und umbenennen funktioniert sehr gut.
Jetzt habe ich aber Bilder Daten eines Lieferanten erhalten die mich herausfordern.

Folgende link:
https://image.coldtec.ch/104491/p/0/big
möchte ich downloaden.
Mache ich das manuel über den Browser bekomme ich ein Bild 1000x1000 Pixel,
wenn ich das Bild speichere gibt es diesen Namen an: 104491_p_0_big.jpg

Wenn ich den gleichen Bilderlink mit meinen Marko downloade ,
bekomme ich ein Bild 300x300 Pixel
dieses Bild https://image.coldtec.ch/104491 existiert so auf dem Server von dem ich die Bilder downloade.

Wie muss die URL aussehen damit ich das 1000x1000 Pixel Bild downloaden kann?

Beispielcode
https://www.herber.de/bbs/user/178128.xlsm
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bild wird im kleinem Format runter geladen
21.07.2025 23:28:16
Zwenn
Hallo Daniel,

um Dateien direkt runterzuladen, gibt es die WIndows-API-Funktion URLDownloadToFile. Der Folgende Code wird oben in ein Modul eingefügt. Es sind sowohl die Version für Excel 64 Bit, wie auch für 32 Bit enthalten.



Option Explicit

#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 folgende Sub zeigt die exemplarische Anwendung der Funktion.



Sub BildSpeichern()

Const speicherPfad As String = "E:\" 'anpassen, muss mit \ enden
Const bildName As String = "testBildDownload.jpg"
Const bildURL As String = "https://image.coldtec.ch/104491/p/0/big"

Dim bildGespeichert As Long

bildGespeichert = URLDownloadToFile(0, bildURL, speicherPfad & bildName, 0, 0)
If bildGespeichert = 0 Then
MsgBox "Bild gespeichert"
Else
MsgBox "Bild nicht gespeichert"
End If
End Sub


Wie Du siehst, habe ich vorgesehen anzuzeigen, ob das Bild runtergeladen wurde oder nicht. Spoiler: Das funktioert nicht, denn es wird immer ein Bild runtergeladen. Folgende drei Möglichkeiten habe ich herausgefunden:
  • Ist die URL richtig geschrieben, wird das erwartete große Bild runtergeladen

  • Ist die URL nach der Nr. falsch geschrieben, wird die kleine Version des Bildes runtergeladen

  • Ist die Nr. selbst falsch geschrieben, liefert der WebServer eine Platzhaltergrafik mit der Aufschrift "Bild folgt bald" aus

  • Wie es sich verhält, wenn andere Fehler in der URL sind habe ich nicht getestet.

    Ich empfele die Verwendung der Windows-Api-Funktion. Die ist schlüsselfertig ausgeliefert und bestens von vielen Entwicklern eingesetzt. Ich habe damit millionen von Bildern aus Onlineshops runtergeladen.

    Noch eine Anmerkung:
    Vermeide die Mischung von Sprachen in Deinen Makros. Du verwendest Deutsch, Englisch und Spanisch, sofern ich es richtig gesehen habe. Für Dich selbst funktioniert das. Aber sobald jemand anders sich Deinen Quellcode anschaut, ist der ziemlich schnell genervt. Genau das hast Du mit dem Hochladen Deiner Mappe aber aktiv nachgefragt ;-)
    Anzeige
    Anzeige
    Anzeige