Bilder mit Excel VBA in Zelle einfügen (und formatieren)
Ich zeige dir Schritt für Schritt wie du ein Tool erstellst, das automatisiert Bilder aus einem Ordner in eine Excel Zelle einfügt.
Schritt 1: Excel Tabelle vorbereiten
Um Bilder in Excel einzufügen, musst du eine Spalte in deiner Tabelle mit den Bildlinks einfügen. Diese Links entsprechen dem Pfad des jeweiligen Bildes, den du am einfachsten per Shift + Rechtsklick erhältst.
Schritt 2: Einfügen eines Bildes
Den Bildpfad der jeweils aktiven Zeile speicherst du per VBA in eine Variable und prüfst mit der Dir() Funktion, ob das Bild tatsächlich vorhanden ist. Das Bild kannst du dann mit der Pictures.Insert Methode auf dem Tabellenblatt einfügen.
Sub Bild_Einfuegen()
Dim Bildpfad As String
'Bildpfad auslesen
Bildpfad = Tabelle1.Range("G" & ActiveCell.Row).Value
'Existiert die Bilddatei?
If Dir(Bildpfad) <> "" Then
'Bild einfügen
Tabelle1.Pictures.Insert(Bildpfad)
End If
End Sub
Schritt 3: Bild Name, Größe und Position anpassen
Jetzt geht es darum das Bild per Code zu benennen, sodass du in weiterer Folge einfach per Name darauf zugreifen kannst.
Dann legst du die Größe und Position des Bildes fest, sodass es genau da angezeigt wird, wo du es haben möchtest. In diesem Beispiel soll das Bild „Teppich“ heißen, 85 Pixel hoch sein und in Zelle G2 eingefügt werden.
Sub Bild_Einfuegen()
Dim Bildpfad As String
'Bildpfad auslesen
Bildpfad = Tabelle1.Range("G" & ActiveCell.Row).Value
'Existiert die Bilddatei?
If Dir(Bildpfad) <> "" Then
'Bild einfügen
With Tabelle1.Pictures.Insert(Bildpfad)
.Height = 85 'Tabelle1.Range("G2").Height
.Name = "Teppich"
End With
With Tabelle1.Shapes("Teppich")
.Top = Tabelle1.Range("G2").Top
.Left = Tabelle1.Range("G2").Left
End With
End If
End Sub
Schritt 4: Löschen eventuell vorhandener Bilder
Um sicherzustellen, dass eventuell bestehende Bilder mit der Bezeichnung Teppich gelöscht werden, musst du eine Löschfunktion zu Beginn der Prozedur einfügen. Da diese einen Fehler geben würde, wenn kein Bild vorhanden ist, lässt du die Codezeile mit dem Error Handler überspringen.
'Bild löschen, falls vorhanden
On Error Resume Next
Tabelle1.Shapes("Teppich").Delete
On Error GoTo 0
Schritt 5: Makro ausführen bei Klick in die Tabellenzeile
Das Makro kannst du automatisiert ausführen lassen, sobald in eine Zelle der Tabelle geklickt wird.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Tabelle1.ListObjects("Produkte").DataBodyRange) Is Nothing Then
Call Bild_Einfuegen
End If
End Sub
Um VBA zu lernen und besser zu verstehen, empfehle ich dir mein kostenloses Grundlagentraining, in dem ich dir die ersten Schritt in Excel-VBA zeige.
Ich hoffe dieses Tutorial hilft dir dabei, deine Anwendungen professionell und benutzerfreundlich zu gestalten.