Hallo,
ich verstehe dich so, dass du "alles in einer Exceldatei" haben möchtest. Natürlich kannst du diese ~80 Bilder in ein Tabellenblatt ablegen und von dort ein einzelnes in einer Userform anzeigen. Du musst dich einfach ein bischen organisieren. Jeh nach Datenmenge der Bilder kann die Datei dadurch natürlich größer werden...
Ich würde dafür ein neues Tabellenblatt anlegen und in Spalte A die Pfade+Dateinamen zu den Bildern eintragen (von Hand, mit VBA, ....) und in Spalte B den Bildern einen sinnvollen Namen geben. Dieser Name muss eindeutig sein. Jetzt kannst du mit VBA die Bilder in das Tabellenblatt laden und ihnen ihren Namen aus Spalte B geben:
Sub alle_bilder_in_Tabellenblatt()
Dim Ws As Worksheet, pic
Dim i As Long, pfad As String
With ActiveSheet 'anpassen (Codename des Tabellenblattes wäre sinnvoll)
For i = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row 'Schleife über Zeile 2 bis ...
pfad = .Cells(i, 1) 'Pfad + Dateiname
Set pic = .Pictures.Insert(pfad) 'Bild in Tabellenblatt ablegen
pic.Name = .Cells(i, 2) 'dem Bild seinen _eindeutigen_ Namen geben
pic.Top = .Cells(i, 1).Top 'platzieren
pic.Left = .Cells(i, 3).Left 'platzieren
pic.Height = .Rows(i & ":" & i + 3).Height 'skalieren über die Höhe (wäre auch mit width möglich)
Next
End With
End Sub
Damit hast du bereits alle Bilder im Tabellenblatt und sie haben einen klaren Namen, über den du sie ansprechen kannst (der aus Spalte B).
Mit VBA greifst du nun auf das Bild im Tabellenblatt wie folgt zu:
msgbox activesheet.pictures(range("B2").Value).name & vblf & _
activesheet.pictures(range("B2").Value).width
oder eben auch:
UserForm1.Image1.Picture = Tabelle1.pictures("derNameDeinesBildes")
Kommst du so weiter?
Grüße, Ulrich
|