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

Forumthread: Bilder komprimieren

Bilder komprimieren
10.09.2022 19:52:55
Andy
Hallo alle zusammen,
ich habe heute eine Frage bezüglich dem Komprimieren von Bildern. Gibt es eine Möglichkeit mit VBA Bilddateien zu komprimieren, die in einem Ordner vorliegen (jpeg). Leider sind diese in ihrem Ursprung zu groß und müssten daher komprimiert werden.
Ist sowas mit Excel möglich?
LG und Dank
Andy
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bilder komprimieren
10.09.2022 20:39:11
Oberschlumpf
Hi Andy,
Was genau meinst du mit "komprimieren"?
a) Soll die Auflösung verringert werden, was definitiv zu weniger Speicherbedarf führen würde und somit dein Problem gelöst wäre?
Aber wenn Auflösung verringert wird, kannst du nicht mehr so gut zoomen wie mit der Originalauflösung
b) Oder meinst du: Einfach nur per VBA alle Dateien z Bsp mit 7Zip verkleinern - OHNE die Auflösung zu verringern?
Ich hatte gerad mal 50 JPG-Dateien (170 MB) mit 7ZIP komprimiert - Ergebnis = nur 150 MB
Bin auf dein Feedback neugierig.
Ciao
Thorsten
Anzeige
AW: Bilder komprimieren
11.09.2022 08:52:04
Andy
Hallo Thorsten,
Ich meine die Auflösung zu verringern, ohne dass das Bild in excel auf einem Worksheet hinterlegt ist. Es liegen also nur mehrere Bilder auf dem Laufwerk vor. Dass dann nicht mehr so gut gezoomt werden kann ist mir bewusst.
AW: dafür gibt es spez. Software ...
11.09.2022 09:22:56
neopa
Hallo Andy,
... ich nutze z.B. IrfanView (Freeware !). Dazu sieh mal hier: https://www.irfanview.com/main_what_is_ger.htm
Gruß Werner
.. , - ...
Anzeige
AW: dafür gibt es spez. Software ...
11.09.2022 09:33:33
Andy
Hallo Werner,
Das Programm ist mir bekannt, wird derzeit auch bei uns so verwendet.
Ich brauch aber leider eine Lösung für excel, da ich das ganze vereinfachen möchte und nicht x verschiedene Programme heranziehen will.
Bei Word hab ich sowas schon mal als Funktion gesehen, allerdings weiß ich nicht, ob das auch in excel und in einem Ordner funktioniert
Anzeige
AW: Bilder komprimieren
11.09.2022 12:01:27
Nepumuk
Hallo Andy,
teste mal:

Option Explicit
Public Sub Test()
Dim objImageFile As Object, objImageProcess As Object
Dim strPath As String
strPath = "H:\Testbild.jpg" ' Anpassen !!!
Set objImageFile = CreateObject(Class:="WIA.ImageFile")
Call objImageFile.LoadFile(Filename:=strPath)
Set objImageProcess = CreateObject(Class:="WIA.ImageProcess")
With objImageProcess
Call .Filters.Add(FilterID:=.FilterInfos("Convert").FilterID)
.Filters.Item(1).Properties("FormatID") = "{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}"
.Filters.Item(1).Properties("Quality") = 10 ' Anpassen !!!
Set objImageFile = .Apply(Source:=objImageFile)
End With
If Dir$(PathName:=strPath)  vbNullString Then Call Kill(PathName:=strPath)
Call objImageFile.SaveFile(Filename:=strPath)
Set objImageProcess = Nothing
Set objImageFile = Nothing
End Sub
Gruß
Nepumuk
Anzeige
AW: Bilder komprimieren
13.09.2022 07:57:36
Andy
Nepumuk,
Das ist genial - das funktioniert bestens… mega! Das müsste heißen, eine Schleife um ein Verzeichnis und dann kann er jedes file damit komprimieren ? Toll wäre, wenn er anstatt das file zu löschen einfach die neuen Files in einen anderen Ordner kopiert und dabei jedes jpg file eines Ordners berücksichtigt.
Zb: D:\Original\*.jpg nach D:\Kompromiert\Komprimiert(*).jpg
Kann mir dabei noch jemand helfen? Vielen lieben Dank
Lg Andy
Anzeige
AW: Bilder komprimieren
13.09.2022 10:40:10
Nepumuk
Hallo Andy,
so:

Option Explicit
Public Sub Test()
Const INPUT_FOLDER As String = "D:\Original\" ' Anpassen, Backslash am ende nicht loeschen !!!
Const OUTPUT_FOLDER As String = "D:\Kompromiert\" ' Anpassen, Backslash am ende nicht loeschen !!!
Dim objImageFile As Object, objImageProcess As Object
Dim strFilename As String
Set objImageFile = CreateObject(Class:="WIA.ImageFile")
Set objImageProcess = CreateObject(Class:="WIA.ImageProcess")
With objImageProcess
Call .Filters.Add(FilterID:=.FilterInfos("Convert").FilterID)
.Filters.Item(1).Properties("FormatID") = "{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}"
.Filters.Item(1).Properties("Quality") = 10 ' Anpassen !!!
End With
strFilename = Dir$(INPUT_FOLDER & "*.jpg")
Do Until strFilename = vbNullString
Call objImageFile.LoadFile(Filename:=INPUT_FOLDER & strFilename)
Set objImageFile = objImageProcess.Apply(Source:=objImageFile)
Call objImageFile.SaveFile(Filename:=OUTPUT_FOLDER & "Komprimiert_" & strFilename)
strFilename = Dir$
Loop
Set objImageProcess = Nothing
Set objImageFile = Nothing
End Sub
Bei "Quality" kannst du ganze Werte von 1 bis 100 eintragen.
Gruß
Nepumukl
Anzeige
AW: Bilder komprimieren
14.09.2022 08:23:45
Andx
Hey Nepumuk,
ganz vielen Dank. So funktioniert es bestens. Eine Kleinigkeit ist mir aber noch aufgefallen:
Die Prozedur bricht hier bei der Komprimierung ab, wenn der Ordner bereits exisitert. Kann man das noch irgendwie bereinigen, dass er die Dateien einfach überschreibt?
Call objImageFile.SaveFile(Filename:=OUTPUT_FOLDER & "Komprimiert_" & strFilename)
Anzeige
AW: Bilder komprimieren
14.09.2022 10:24:24
Nepumuk
Hallo Andy,
dann so:

Option Explicit
Public Sub Test()
Const INPUT_FOLDER As String = "D:\Original\" ' Anpassen, Backslash am ende nicht loeschen !!!
Const OUTPUT_FOLDER As String = "D:\Kompromiert\" ' Anpassen, Backslash am ende nicht loeschen !!!
Dim objImageFile As Object, objImageProcess As Object
Dim objFileSystemObject As Object
Dim strFilename As String, strOutputPath As String
Set objImageFile = CreateObject(Class:="WIA.ImageFile")
Set objImageProcess = CreateObject(Class:="WIA.ImageProcess")
Set objFileSystemObject = CreateObject(Class:="Scripting.FileSystemObject")
With objImageProcess
Call .Filters.Add(FilterID:=.FilterInfos("Convert").FilterID)
.Filters.Item(1).Properties("FormatID") = "{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}"
.Filters.Item(1).Properties("Quality") = 10 ' Anpassen !!!
End With
strFilename = Dir$(INPUT_FOLDER & "*.jpg")
Do Until strFilename = vbNullString
Call objImageFile.LoadFile(Filename:=INPUT_FOLDER & strFilename)
Set objImageFile = objImageProcess.Apply(Source:=objImageFile)
strOutputPath = OUTPUT_FOLDER & "Komprimiert_" & strFilename
If objFileSystemObject.FileExists(strOutputPath) Then Call Kill(strOutputPath)
Call objImageFile.SaveFile(Filename:=strOutputPath)
strFilename = Dir$
Loop
Set objFileSystemObject = Nothing
Set objImageProcess = Nothing
Set objImageFile = Nothing
End Sub
Gruß
Nepumuk
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Bilder komprimieren in Excel


Schritt-für-Schritt-Anleitung

Um Bilder in Excel zu komprimieren, insbesondere wenn sie in einem Ordner gespeichert sind, kannst Du den folgenden VBA-Code verwenden. Dieser Code verringert die Bildauflösung und speichert die komprimierten Bilder in einem anderen Ordner.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.
  3. Füge den folgenden Code in das Modul ein:
Option Explicit
Public Sub KomprimiereBilder()
    Const INPUT_FOLDER As String = "D:\Original\" ' Anpassen
    Const OUTPUT_FOLDER As String = "D:\Kompromiert\" ' Anpassen
    Dim objImageFile As Object, objImageProcess As Object
    Dim strFilename As String
    Set objImageFile = CreateObject(Class:="WIA.ImageFile")
    Set objImageProcess = CreateObject(Class:="WIA.ImageProcess")

    With objImageProcess
        Call .Filters.Add(FilterID:=.FilterInfos("Convert").FilterID)
        .Filters.Item(1).Properties("FormatID") = "{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}"
        .Filters.Item(1).Properties("Quality") = 10 ' Anpassen
    End With

    strFilename = Dir$(INPUT_FOLDER & "*.jpg")
    Do Until strFilename = vbNullString
        Call objImageFile.LoadFile(Filename:=INPUT_FOLDER & strFilename)
        Set objImageFile = objImageProcess.Apply(Source:=objImageFile)
        Call objImageFile.SaveFile(Filename:=OUTPUT_FOLDER & "Komprimiert_" & strFilename)
        strFilename = Dir$
    Loop
    Set objImageProcess = Nothing
    Set objImageFile = Nothing
End Sub
  1. Passe die Pfade INPUT_FOLDER und OUTPUT_FOLDER entsprechend an.
  2. Schließe den VBA-Editor und führe das Makro aus.

Häufige Fehler und Lösungen

  • Fehler: "Excel Bilder komprimieren geht nicht"

    • Lösung: Stelle sicher, dass die WIA-Bibliothek in Deinen Verweisen aktiviert ist. Gehe zu Extras > Verweise und aktiviere Microsoft Windows Image Acquisition Library v2.0.
  • Fehler: "Das Bild wird nicht geladen"

    • Lösung: Überprüfe, ob der Pfad zu den Bilddateien korrekt ist und die Dateien im angegebenen Format vorliegen.

Alternative Methoden

Wenn Du keine VBA-Lösungen verwenden möchtest, kannst Du auch Software wie IrfanView nutzen. Dieses kostenlose Tool kann mehrere Bilder komprimieren und die Auflösung verringern, ohne dass Du Excel öffnen musst.

  1. Lade IrfanView herunter und installiere es.
  2. Öffne IrfanView und gehe zu Datei > Batch-Konvertierung.
  3. Wähle den Ausgangsordner und die gewünschten Bildformate aus.
  4. Setze die Komprimierungsoptionen, um die Bildgröße zu verringern.

Praktische Beispiele

Beispiel 1: Komprimieren von Bildern in einem Ordner

Verwende den oben genannten VBA-Code, um alle .jpg-Dateien im Ordner D:\Original\ zu komprimieren und im Ordner D:\Kompromiert\ zu speichern.

Beispiel 2: Komprimieren von Bildern in Word

In Microsoft Word kannst Du Bilder ebenfalls komprimieren. Gehe zu Bildtools > Format > Bilder komprimieren, um die Qualität und die Auflösung der Bilder zu ändern.


Tipps für Profis

  • Qualität anpassen: Experimentiere mit dem Quality-Parameter im VBA-Code, um die perfekte Balance zwischen Bildqualität und Dateigröße zu finden.
  • Batch-Prozesse: Du kannst den VBA-Code erweitern, um auch andere Bildformate wie .png oder .bmp zu unterstützen.
  • Regelmäßige Sicherung: Erstelle regelmäßig Sicherungen Deiner Originalbilder, bevor Du sie komprimierst, um Datenverlust zu vermeiden.

FAQ: Häufige Fragen

1. Kann ich auch andere Bildformate komprimieren? Ja, Du kannst den VBA-Code anpassen, um andere Formate wie .png oder .bmp zu unterstützen.

2. Wie kann ich die Bildgröße komprimieren, ohne die Auflösung zu verringern? Verwende Software wie 7-Zip, um die Dateigröße ohne Qualitätsverlust zu reduzieren. Die Komprimierung von .jpg-Dateien kann jedoch zu einem geringen Speichervorteil führen.

3. Gibt es eine einfache Möglichkeit, Bilder in Excel zu komprimieren? Ja, Du kannst die Funktion "Bilder komprimieren" in Excel verwenden, die jedoch nur für Bilder gilt, die in Excel-Dokumente eingefügt sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige