Excel Bild einfügen, aber mit Explorer

ich habe ein Excel Formular erstellt, und gebe in Zelle D28, D52, D76 und D100 einen Bildernamen ein, das bild wird dann automatisch eingefügt. Beim Klich auf die zelle D28… etc möchte ich aber nicht den namen eingeben, sondern der Explorer/dateimanager sollte aufgerufen werden, damit ich den namen direkt anklicken kann.
Hier nun mein Code:
Dim SNZelle As String
Dim StOrdner As String ’ Variable Ordner Bildablage
Dim StBild As String ’ Variable Bildname
Dim InI As Integer ’ Variable Schleifenzähler
Dim RaBereich As Range ’ Variable Bereich der Gültigkeit
Dim RaZelle As Range ’ Variable bearbeitete Zelle
Dim LoBreite As Long ’ Variable Bildbreite
Dim LoHoehe As Long ’ Variable Bildhöhe
SNZelle = „“

’ Ordner Bildablage
StOrdner = „d:\Bilder“ & Range(„D5“) & SNZelle ’ Verzeichnis "D:\Bilder+„Schadensnummer“ aus Zelle D5+ „“

Set RaBereich = Range(„D28,D52,D76,D100“) ’ Bereich der Wirksamkeit

Set RaBereich = Intersect(RaBereich, Range(Target.Address))
If Not RaBereich Is Nothing Then ’ falls nicht gefunden wird sub verlassen
For Each RaZelle In RaBereich ’ Schleife über alle veränderten Zellen
Application.EnableEvents = False ’ Reaktion auf Zellveränderung abschalten
RaZelle.Offset(0, 1) = „“ ’ Inhalt der Zelle neben Bildnamen löschen
Application.EnableEvents = True ’ Reaktion auf Zellveränderung einschalten
’ Bildname erstellen
StBild = "Bild " & RaZelle.Address(False, False)
’ 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 ’ eine Eingabe ist vorhanden
’ Bildname einschl. Ordner erstellen

StBild = StOrdner & Format(RaZelle.Value, „“) & „.jpg“
If Dir(StBild) = „“ Then ’ Prüfung ob Bild vorhanden
Application.EnableEvents = False ’ Reaktion auf Zellveränderung abschalten
’ Bild nicht vorhanden
Target.Offset(0, 4) = „Kein Bild vorhanden!“
Application.EnableEvents = True ’ Reaktion auf Zellverändeung einschalten
Else ’ Bild vorhanden
’ Bildgröße und Bild bei Position einfügen
Select Case Target.Address(False, False)
Case „D28“
LoBreite = 635
LoHoehe = 395
’ einfügen ohne select
’ Ausdruck.AddPicture(FileName, Verknüpfung,in Mappe speichern,
’ Pos. Links, Pos. Oben, Breite, Höhe)
’ von Jürgen Nagel
’ erstes Offset Pos. Links 0 Zeilen und eine Spalte nach rechts
’ zweites Offset Pos. Oben 0 Zeilen tiefer und 0 Spalten nach rechts
ActiveSheet.Shapes.AddPicture(StBild, True, True, _
RaZelle.Offset(1, 4).Left - LoBreite, _
RaZelle.Offset(1, 4).Top - LoHoehe, LoBreite, _
LoHoehe).Name = "Bild " _
& RaZelle.Address(False, False)
’ ********
Case „D52“
LoBreite = 635
LoHoehe = 395
ActiveSheet.Shapes.AddPicture(StBild, True, True, _
RaZelle.Offset(1, 4).Left - LoBreite, _
RaZelle.Offset(1, 4).Top - LoHoehe, LoBreite, _
LoHoehe).Name = "Bild " _
& RaZelle.Address(False, False)
Case „D76“
LoBreite = 635
LoHoehe = 395
ActiveSheet.Shapes.AddPicture(StBild, True, True, _
RaZelle.Offset(1, 4).Left - LoBreite, _
RaZelle.Offset(1, 4).Top - LoHoehe, LoBreite, _
LoHoehe).Name = "Bild " _
& RaZelle.Address(False, False)
Case „D100“
LoBreite = 635
LoHoehe = 395
ActiveSheet.Shapes.AddPicture(StBild, True, True, _
RaZelle.Offset(1, 4).Left - LoBreite, _
RaZelle.Offset(1, 4).Top - LoHoehe, LoBreite, _
LoHoehe).Name = "Bild " _
& RaZelle.Address(False, False)
End Select
End If
End If
Next RaZelle
End If
Set RaBereich = Nothing ’ Variable leeren
End Sub

Hallo echojuergen,

ich habe den Code mal ausprobiert, aber da meckert VBA über eine nicht deklarierte Variable Target.
Mehr kann ich dazu nicht sagen

Gruß Hugo

Hallo echojuergen,
ich hatte zwar vorhin die Beantwortung Diner Anfrage abgelehnt, da ich mit Deinem VBA-Code nicht viel anfangen konnte. Habe mir aber dennoch Gedanken gemacht.
Vielleicht hilft Dir der nachfolgende Code weiter.

Sub BilderEinfuegen()
Dim bytBild As Byte
Dim arrBereiche()
'Der Bereich für die Bilder muss angepasst werden
arrBereiche = Array(„C15:F25“, „C30:F40“, „C45:F55“, „G15:J25“, „G30:J40“, „G45:J55“)
Application.ScreenUpdating = False
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = True
.InitialFileName = „C:“ 'Pfad Deiner Bilder
.ButtonName = „OK“
.Title = „Bilderauswahl“
.Show
If .SelectedItems.Count

Hallo Jürgen,

nachfolgen ein Beispiel-Code für die Anzeige eines Dateiauswahldialogs in Excel. Diesen muss an der passenden Stelle in deinne Makros einbauen.

Der Weg über den Explorer per Datenaustausch scheint mir hier deutlich zu kompliziert.

Gruß
Farnz

Public Sub Test\_Dateiauswahl()
 Dim Dateiauswahl As Variant, strVerzeichnis As String, strDatei As String
 VBA.ChDir "C:\Users\Public\Test" 'ggf. Startverzeichnis für Dateiauswahl vorgeben
 Dateiauswahl = Application.GetOpenFilename(FileFilter:="Bilder (\*.jpg),\*.jpg", \_
 Title:="Bitte Bild-Dateinamen auswählen", ButtonText:="Auswahlen")
 If Dateiauswahl = False Then
 MsgBox "keine Datei gewählt"
 Else
 strVerzeichnis = Left(Dateiauswahl, InStrRev(Dateiauswahl, "\"))
 strDatei = Mid(Dateiauswahl, InStrRev(Dateiauswahl, "\") + 1)
 MsgBox "gewählte Datei: " & vbLf & strVerzeichnis & vbLf & strDatei

 End If
End Sub

Hallo Franz,

vielen Dank für das Makro.
Ich bin nicht so ganz fit, daher noch eine Zusatzfrage:
Die Stelle von da aus das Makro aufgerufen werden muss, kenne ich, nur mit welchem befehl, bzw. wie lautet der Verweis ?
Vielen Dank
Gruss Jürgen

Hi Franz,
kommando zurück, stand grad auf der leitung, muss das makro zuweisen.
klappt auch, er nimmt zwar nicht das richtige Unterverzeichnis, das bekomme ich aber hin.
Was nicht funktioniert, ist dass er das bild nicht in das feld druckt.
Gruss Jürgen

Hallo echojuergen,
liest du Antworten auf deine Anfragen?
Was ist denn die eigentliche Frage bei dem Ganzen. In Meiner Antwort auf deine Frage vom 13.01.2013 steht es schwarz auf weiß, lese es einfach hach.
Falls es nicht das ist, was du suchst, Formuliere deine Frage verständlicher(genauer).
MfG
W.W.

Hi Renate,
vielen Dank klappt so wie ich mir das wünsche.
Lediglich das Bild eingefügte Bild ist zu lang.
Ansatzpunkt und Breite stimmen, lediglich in der Länge geht es über meine ausgewählten zellen (nach unten)
oben links und rechts passen.
Gibt es noch eine Möglichkeit, die dateinnamen der Bilder in eine zelle zu schreiben, z.B. in zelle D28 die 1. ausgewählte Bilddatei.
Gruss Jürgen

Hallo echojuergen
leider kann ich Dir zu diesem Problem keine Hilfe anbieten.
MfG lefrie

Hallo,

es könnte über ein userForm funktionieren

Gruss

Hallo,
leider kann ich Dir nicht mehr weiterhelfen, da ich mich nicht mehr mit VBA beschäftigt habe und im Moment wenige Zeit. Tut mir leid.
Renate

Hallo,
sorry mit VBA kenne ich mich nicht so aus.
LG
Tom

Hier ein paar Zeilen, mithilfe derer du eine JPEG-Datei auswählen kannst. Musst den Pfad dann an entsprechender Stelle bei dir einbauen.

 Dim Pfad As Variant
 Pfad = Application.GetOpenFilename("Bild (JPEG) (\*.jpeg),\*.jpeg,", MultiSelect:=False)
 Range("A1").Value = Pfad

Gruß, BellHouse

Neuerer Thread beachten…

Hi,

dem Explorer öffnest Du mit

Application.FindFile

Gruß,
Ptonka