Ich nutze seit langem diesen VBA Code um aus einer Spalte N (hier steht der Pfad) Bilder in die Spalte O einzufügen. Das funktioniert auch super, aber leider nur "28 Bilder auf einen Schlag". Nun muss ich aber 5000 Bilder einfügen und so ist das etwas unpraktisch. Gibt es da eine Möglichkeit um mehr Bilder in einem Rutsch einzufügen?
Private Sub Worksheet_Change(ByVal Target As Range)
'* H. Ziplies *
'* 24.11.07 *
'* erstellt von Hajo.Ziplies@web.de *
'* http://Hajo-Excel.de/
Dim StBild As String ' Variable für Bildname
Dim InI As Integer ' Schleifenvariable
Dim RaBereich As Range ' Bereich der _
Wirksamtkeit
Dim RaZelle As Range ' Zelle die in der _
Schleife bearbeitet wird
' Bereich der Wirksamkeit
Set RaBereich = Range("n2:n200000")
Set RaBereich = Intersect(RaBereich, Range(Target.Address)) ' nur die Zellen Prüfen _
_
_
die im überwachten Bereich liegen
If Not RaBereich Is Nothing Then 'falls nicht gefunden _
_
_
wird sub verlassen
For Each RaZelle In RaBereich ' Schleife über alle _
veränderten Zellen im überwachten Bereich
Application.EnableEvents = False ' Reaktion auf Eingabe _
_
_
abschalten
' Text "kein Bild" löschen
RaZelle.Offset(0, 1) = ""
Application.EnableEvents = True ' Reaktion auf Eingabe _
_
_
einschalten
StBild = "Bild " & RaZelle.Address(False, False) ' Bildname erstellen
' altes Bild löschen von jinx
For InI = ActiveSheet.Shapes.Count To 1 Step -1
If ActiveSheet.Shapes(InI).Name = StBild Then
ActiveSheet.Shapes(InI).Delete
Exit For
End If
Next
If RaZelle.Value "" Then ' es wurde ein _
Dateiname eingegeben
' Bildname
StBild = StPfad & Format(RaZelle.Value) & ""
If Dir(StBild) = "" Then ' Prüfen ob Datei _
vorhanden
Application.EnableEvents = False ' Reaktion auf Eingabe _
_
_
abschalten
Target.Offset(0, 1) = "kein Bild"
Application.EnableEvents = True ' Reaktion auf Eingabe _
_
_
einschhalten
Else
' einfügen ohne select von Bert Körn
' Ausdruck.AddPicture(FileName, Verknüpfung, in Mappe speichern,
' Pos. Links, Pos. Oben, Breite, Höhe)
' von Klausimausi64 Bildname
' erstes Offset Pos. Links 0 Zeilen und eine Spalte nach rechts
' zweites Offset Pos. Oben 0 Zeilen tiefer und 0 Spalten nach rechts
With ActiveSheet.Shapes.AddPicture(StBild, True, True, RaZelle.Offset(0, 1). _
_
_
Left + 1, _
RaZelle.Offset(0, 0).Top + 1, Width:=ActiveCell.Width - 2, Height:= _
_
_
ActiveCell.Height - 2)
.OnAction = "Bild_BeiKlick" ' Makro im Modul BeiKlick
.Name = "Bild " & RaZelle.Address(False, False) ' Bildname festlegen
.Placement = xlMoveAndSize ' von Zell-Position und -Größe abhängig
End With
End If
End If
Next RaZelle
End If
End Sub