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