VBA Makro soll im IE gezeigte Bilder speichern

Hallo,
In einem VBA-Makro steuere ich den Internet Explorer (IE = CreateObject(„InternetExplorer.Application“) … IE.Navigate …). Nun möchte ich ALLE Bilder, die im IE gerade gezeigt werden irgendwie auf Festplatte speichern. Wie geht das ?

Wenn ich im IE Datei->Speichern unter… wähle und so versuche, die Webseite KOMPLETT runterzuladen, dann speichert er mir NICHT alle Bilder, da fehlen manche!

Wenn ich die Maus auf ein bestimmtes Bild bewege und rechte
Maustaste -> Bild speichern unter… wähle, dann kann jedes beliebige Bild problemlos gespeichert werden. Diese Vorgehensweise ist beim automatischen Steuern des IE mit VBA-Makro aber schwierig und fehleranfällig, deshalb nicht zielführend.

Könnte Screenshot von der ganzen Seite machen, dann hab’ ich aber nur ein großes Bild und kann nicht so leicht die einzelnen Elemente rausschneiden und darauf zugreifen, dieser Weg ist also auch nicht zielführend.

Wer hat eine bessere Idee, wie ich alle Bilder (so wie ich sie vor mir sehe) mit VBA-Makro automatisiert speichern könnte, ohne irgendwie
erneut die Webseite abrufen zu müssen? Also Wget-Tools nicht verwendbar und HTML-Code paring mit erneutem Aufruf eines bestimmten Links auf das Bitmap auch nicht verwendbar.

Danke im Voraus für Eure Hilfe !

hallo Ursula,

In einem VBA-Makro steuere ich den Internet Explorer

welches Programm?

Nun möchte ich ALLE Bilder, die im IE gerade gezeigt
werden irgendwie auf Festplatte speichern. Wie geht das ?

(@Rainer, ist doch 'ne nette regexp Aufgabe alle Bildpfade auszufiltern *gg*)

Teste mal dieses (für Excel):

Sub test()
Dim appIE, Inhalt As String, Bild, B, posKL, posAZ, pos, Anz
Dim Endg, E
Endg = Array(".gif", ".jpg")
Const Url As String = "http://www.google.de"
Set appIE = CreateObject("InternetExplorer.Application")
With appIE
 .Visible = True
 .Navigate Url
 While .Busy
 Wend
 Inhalt = .Document.DocumentElement.innerhtml
 appIE.Quit
 Columns(1).ClearContents
 For E = 0 To UBound(Endg)
 Bild = Split(Inhalt, Endg(E))
 For B = 0 To UBound(Bild)
 If Right(Bild(B), 1) "\>" Then
 posKL = InStrRev(Bild(B), "(") 'Klammer
 posAZ = InStrRev(Bild(B), Chr(34)) 'Anführungszeichen
 pos = IIf(posKL \> posAZ, posKL, posAZ)
 ActiveSheet.Hyperlinks.Add Anchor:=Cells(Anz + 1, 1), Address:= \_
 Url & Mid(Bild(B), pos + 1) & Endg(E), TextToDisplay:= \_
 Url & Mid(Bild(B), pos + 1) & Endg(E)
 Anz = Anz + 1
 End If
 Next B
 Next E
End With
Set appIE = Nothing
End Sub

Gruß
Reinhard

Vielen Dank Reinhard für die rasche und detaillierte Antwort!

Ja, ich mach das ganze auch mit Hilfe von Excel-VBA-Makro. Leider macht dein Script genau das, was ich vermeiden wollte, es liefert die Links auf die Bilddateien, um die Bilder dann mit einem erneuten Zugriff auf das Web herunterzuladen.

Wie von mir beschrieben: „… ich alle Bilder (so wie ich sie vor mir sehe) mit VBA-Makro automatisiert speichern könnte, ohne irgendwie
erneut die Webseite abrufen zu müssen? …“ kann ich die Seite nur einmal aufrufen, sehe dann die Bilder vor mir und dann möchte ich diese Bilder auf Festplatte speichern, ohne nochmals einen request absetzten zu müssen, also keine links auf Bilder ! Ich bräuchte also so was wie rechte Maustaste auf Bild bewegen und dann Bild speichern unter … Das mit dem automatischen Bewegen der Maus ist aber fehleranfällig und schwer machbar. Wer hat eine bessere Idee?

Liebe Grüße,
Ursula