Bilder in Zellen importieren

Per VBA lassen sich Bilder aus einem angegebenen Verzeichnis auslesen und importieren. Die vorgestellte Prozedur liest die Bilder aus dem eingestellten Verzeichnis "F:\Pic" aus. Die im Verzeichnis vorhandenen Bilder werden entsprechend der Spaltenbreite der Spalte A skaliert. Die Bilder werden vergrößert oder verkleinert, wobei die Seitenverhältnise unverändert bleiben. Damit befindet sich das Bild genau innerhalb einer Zelle.

Im vorstellten Beispiel beginnt der Import in Zeile 5 der Spalte A.

Erfassen Sie den VBA-Code in einem Code-Modulblatt.

Sub BilderImport()
 '*********************************************************************************
 '** Bilder werden in die Spalte A eingefügt. Die Bilder werden auf die  
 '** eingestellte Spaltebreite skaliert. Die Zeilenhöhe wird an die         
 '** skalierte Bildhöhe angepasst                                                     
 '*********************************************************************************
 
 '* * Dimensionierung der Variablen
 Dim strVerzeichnis$, strDatei$
 Dim pct As Picture
 Dim lngZeile As Long'Zeile zum Eintragen der Bilder
 Dim lngSpalte As Long'Spalte zum Eintragen der Bilder
 Dim varBreite As Variant'Spaltenbreite
 Dim varHoehe As Variant
 
 
 '** Verzeichnis und Dateinamen definieren und auslesen
 strVerzeichnis = "F:\Pic"
 strDatei = Dir(strVerzeichnis & "\*.jpg")
 
 '** Startzeile + Spalte festelegen
 lngZeile = 5
 lngSpalte = 1
 
 '** Ermittlung der Spaltenbreite
 varBreite = Columns("A:A").Width
 
 Cells(lngZeile, lngSpalte).Select
 Cells(lngZeile, lngSpalte + 1) = strDatei  ' schreiben Dateinamen
 Set pct = ActiveSheet.Pictures.Insert(strVerzeichnis & "\" & strDatei)
 
 With ActiveSheet.Shapes("Picture 1")
   '** Auslesen der Breite
   ActiveSheet.Shapes("Picture 1").Select
   Selection.ShapeRange.LockAspectRatio = msoTrue
   
   '** Bild auf aktuelle Spaltenbreite skalieren
   Selection.ShapeRange.Width = varBreite
   
   '** Zeilenhöhe festlegen
   varHoehe = ActiveSheet.Shapes("Picture 1").Height
   Rows(lngZeile).RowHeight = varHoehe
 End With
 
 '** Zähler für Shape definieren
 shp = 2
 
 '** Zeilenzähler erhöhen
 lngZeile = lngZeile + 1
 
 
 '** Bild 2 bis n durchlaufen
 Do While strDatei <> ""
   strDatei = Dir()
   If strDatei = "" Then Exit  Do
   Cells(lngZeile, lngSpalte).Select
   Set pct = ActiveSheet.Pictures.Insert(strVerzeichnis & "\" & strDatei)
   ActiveSheet.Shapes("Picture " & shp).Select
   Cells(lngZeile, lngSpalte + 1) = strDatei  ' schreiben Dateinamen
   Selection.ShapeRange.LockAspectRatio = msoTrue
   
   Selection.ShapeRange.Width = varBreite '* 5.355 'Bild auf Spaltenbreite skallieren
   
   '** Zeilenhöhe festlegen
   varHoehe = ActiveSheet.Shapes("Picture " & shp).Height
   Rows(lngZeile).RowHeight = varHoehe
   
   '** Zeilenzähler erhöhen
   lngZeile = lngZeile + 1
   
   '** Shape-Zahler erhöhen
   shp = shp + 1
   
 Loop
 End Sub


Partnerlinks

Relevante Artikel

  • Änderungen von Zellen dokumentieren

    Einfügen in Tabellenblatt (nicht Code-Modul) Mit diesem Code können Änderungen live in einer Spalte dokumentiert werden....

  • Letzte Zeile, letzte Spalte und letzte Zelle per VBA ermitteln

    Nachfolgend sehen Sie einige Makros, mit denen die letzte Zeile, die letzte Spalte bzw. die letzte Zelle auf einem Excel...

  • Zeilen (Einträge) abhängig vom Datum löschen

    Aus diesem Datenbestand sollen die Zeilen gelöscht werden, deren Datum in Spalte A im Monat November liegt.     A B C D 1 12.08.2002 daten daten daten 2 15.08.2002 daten daten daten 3 20.08.2002 daten daten daten 4 12.09.2002 daten daten daten 5 15.09.2002 daten daten daten 6 20.09.2002 daten daten daten 7 12.10.2002 daten daten daten 8 15.10.2002 daten daten daten 9 20.10.2002 daten daten daten 10 15.11.2002 daten daten daten 11 15.11.2002 daten daten daten 12 15.11.2002 daten daten daten 13 15.11.2002 daten daten daten 14 12.12.2002 daten daten daten 15 15.12.2002 daten daten daten 16 20.12.2002 daten daten daten Nach...

  • Anzahl der leeren Zellen innerhalb eines Bereiches ermitteln

    Mit dem Makro leere_zellen_ermitteln wird die Anzahl aller leeren Zellen im selektierten Bereich ermittelt und mittels...

  • Spaltenbeschriftung auslesen

    In diesem Beispiel zeigen wir Ihnen, wie sich die Spaltenbeschriftung, also die Buchstaben der Spalten z. B. A, B, C, etc....

Wir benutzen Cookies
Ihre Zufriedenheit ist unser Ziel, deshalb verwenden wir Cookies. Mit diesen ermöglichen wir, dass unsere Webseite zuverlässig und sicher läuft, wir die Performance im Blick behalten und Sie besser ansprechen können. Cookies werden benötigt, damit technisch alles funktioniert und Sie auch externe Inhalte lesen können. Des Weiteren sammeln wir unter anderem Daten über aufgerufene Seiten, getätigte Käufe oder geklickte Buttons, um so unser Angebot an Sie zu Verbessern. Mehr über unsere verwendeten Dienste erfahren Sie unter „Weitere Informationen“. Mit Klick auf „Akzeptieren“ erklären Sie sich mit der Verwendung dieser Dienste einverstanden. Ihre Einwilligung können Sie jederzeit mit Wirkung auf die Zukunft widerrufen oder ändern.