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