Excel ist ein leistungsstarkes und vielseitiges Tool für die Datenanalyse und -visualisierung. Es ermöglicht es den Benutzern, große Datenmengen effektiv zu verwalten und in verschiedenen Formen darzustellen. Bilder sind dabei oft eine wichtige Ergänzung, um die Analyse von Daten oder Informationen zu unterstützen. Das Einfügen von Bilddateien in Excel-Worksheets per VBA ist eine solche Aufgabe, die es Benutzern ermöglicht, Bilder in ihre Arbeitsmappen einzufügen, um die Datenanalyse und -präsentation zu verbessern. In diesem Artikel werden wir uns damit beschäftigen, wie man Bilddateien in Excel-Worksheets per VBA einfügen kann und welche Vorteile und Anwendungsfälle es gibt.
Wozu Bilder in Excel einfügen?
Für das Einfügen von Bildern in Excel-Dokumenten gibt es verschiedene Anwendungszwecke. Hier sind ein paar davon:
- Einfügen von Firmenlogos oder Produktbildern in Rechnungen oder Angebote, um sie ansprechender zu gestalten.
- Hinzufügen von Fotos von Mitarbeitern oder Teams in Organigrammen, um sie persönlicher und einladender zu gestalten.
- Einfügen von Diagrammen oder Grafiken, die auf Daten basieren, um die Visualisierung von Ergebnissen oder Trends zu verbessern.
- Hinzufügen von Screenshots oder Bildern von Webseiten, um die Analyse von Daten oder Informationen zu unterstützen.
- Einfügen von Bildern, um Anleitungen oder Arbeitsanweisungen in Excel-Tabellen zu ergänzen, um den Prozess oder das Ergebnis besser zu erklären.
Bild einfügen per Benutzeroberfläche
Wenn wir ein Bild in eine Zelle einfügen wollen, gelingt dies am einfachsten über die Benutzeroberfläche. Dazu markieren wir die Zielzelle und wähle aus dem Ribbon den Eintrag Einfügen|Illustrationen|Bilder aus und dann die Schaltfläche Dieses Gerät… (siehe Bild 1).
Bild 1: Bild einfügen per Benutzeroberfläche
Damit aktivieren wir einen Datei öffnen-Dialog, mit dem wir die einzufügende Bilddatei auswählen.
Diese erscheint anschließend in der aktuell markierten Zelle (siehe Bild 2).
Bild 2: Ein eingefügtes Bild
Klicken wir mit der rechten Maustaste auf das neu hinzugefügte Bild, finden wir im Kontextmenü beispielsweise die Befehle Größe und Eigenschaften oder Grafik formatieren… – mit Ersterem öffnen wir den Bereich aus Bild 3.
Bild 3: Einige Eigenschaften des Bildes
Damit sehen wir bereits die Optionen, die wir gegebenenfalls auch mit VBA einstellen können.
Verschiedene VBA-Methoden
Nachfolgend stellen wir zwei verschiedene Möglichkeiten vor, Bilder per VBA zu einem Excel-Worksheet hinzuzufügen:
- die Insert-Methode der Pictures-Auflistung und
- die AddPicture-Methode der Shapes-Auflistung.
Beide haben Vor- und Nachteile, die wir uns im Folgenden ansehen. Wir beginnen mit der Insert-Methode der Pictures-Auflistung.
Bilder einfügen per Pictures.Insert
Zum Einfügen von Bildern per VBA bietet das Excel-Objektmodell die Methode Insert der Pictures-Auflistung an. Diese erwartet lediglich den Pfad der einzufügenden Bilddatei als Parameter.
In folgendem Beispiel wollen wir eine Bilddatei einfügen, die sich im gleichen Verzeichnis wie das Excel-Workbook befindet, welches wir mit ThisWorkbook.Path ermitteln:
ActiveSheet.Pictures.Insert _ ThisWorkbook.Path & "\pic001.png"
Aber wo wird diese Bilddatei nun eingefügt? An der Stelle der aktuell markierten Zelle. Wir müssen also, wenn wir eine Bilddatei gezielt in einem Excel-Worksheet ablegen wollen, zuvor die Zielzelle markieren.
Handelt es sich um die Zelle B2, gelingt das wie folgt. Wir referenzieren das aktuelle Worksheet und hier die Zelle B2, dann fügen wir das Bild ein:
Public Sub BilddateiEinfuegen() Dim wsh As Worksheet Set wsh = ActiveSheet wsh.Range("B2").Select wsh.Pictures.Insert ThisWorkbook.Path & "\pic001.png" End Sub
Damit landet das Bild in Zelle B2 (siehe Bild 4).
Bild 4: Bild in Zelle B2 einfügen
Bild auswählen und in aktueller Zelle einfügen
Wir können das Bild auch zuvor per Dateiauswahl-Dialog auswählen und einfach an der aktuell markierten Zelle einfügen. Dazu verwenden wir zunächst die Methode GetOpenFilename und weisen das Ergebnis der Insert-Methode zu:
Public Sub BilddateiAuswaehlen() Dim strBild As String strBild = Application.GetOpenFilename(, , _ "Bild auswählen") ActiveSheet.Pictures.Insert strBild End Sub
Danach können wir die einzufügende Datei auswählen und diese landet mit der linken oberen Ecke in der gewünschten Zelle.
Bilder durchlaufen
In einer For Each-Schleife können wir die in einem Excel-Worksheet enthaltenen Bilder durchlaufen.
Im folgenden Beispiel geben wir den Namen des jeweils referenzierten Bildes aus:
Public Sub BilderDurchlaufen() Dim objPicture As Picture For Each objPicture In ActiveSheet.Pictures Debug.Print objPicture.Name Next objPicture End Sub
Diese werden von Excel beim Einfügen automatisch vergeben und lauten zum Beispiel Picture 8 oder Picture 12.
Eigenschaften von Bildern in Excel
Weiter oben haben wir bereits den Eigenschaften-Dialog für ein Bild in einem Excel-Worksheet angesehen. Die dort angezeigten Eigenschaften lassen sich auch per VBA einstellen.
Dazu referenzieren wir zuerst das gewünschte Bild, in diesem Fall das einzige vorhandene Bild (oder das erste, falls mehrere enthalten sind):
Dim objPicture As Picture Set objPicture = ActiveSheet.Pictures(1)
Referenzieren eines Picture-Elements
Neben dem Index können wir die Bilder in der Pictures-Auflistung auch über einen beim Einfügen automatisch vergebenen Namen referenzieren, zum Beispiel:
Set objPicture = ActiveSheet.Pictures("Picture 12")
Umbenennen von Picture-Elementen
Und wir können die Bilder auch umbenennen, indem wir der Name-Eigenschaft einen neuen Wert hinzufügen:
ActiveSheet.Pictures("Picture 21").Name = "Bild 3"
Position des Bildes ermitteln
Beim Einfügen des Bildes wurde dieses mit der linken oberen Ecke in der aktiven Zelle einfügt. Diese Position können wir abfragen – ebenso wie die Zelle, in der sich die rechte, untere Ecke des Bildes befindet. Dazu nutzen wir die beiden Eigenschaften TopLeftCell und BottomRightCell:
Debug.Print objPicture.TopLeftCell.Address Debug.Print objPicture.BottomRightCell.Address
Dass die Bilddatei beim Verwenden der Insert-Methode der Pictures-Auflistung in der linken, oberen Ecke landet, heißt nicht, dass sich die linke, obere Ecke auch immer in der linken, oberen Ecke der mit TopLeftCell ermittelten Zelle befindet.
Wir können das Bild auch so verschieben, dass sich die linke, obere Ecke mitten in einer Zelle befindet. TopLeftCell gibt dann immer noch die Zelle an, in der sich diese Ecke befindet.
Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Visual Basic Entwickler:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 200 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein: