Excel VBA Bilder auswählen

Hallo,
ich rufe ein Excel formular auf, um bis zu 4 Bilder einzufügen.
beim aufruf des Formulars wird aus Access eine Schadensnummer übergeben und in Zelle D5 abgelegt.
Über ein Macro (Anlage) kann ich Bilder einfügen, es wird der manager aufgerufen und falls ich Bilder vorab unter einem Unterverzeichnis d:\Bilder\schadensnummer schon abgelegt habe, wird dies automatisch aufgerufen, und ich muss nur noch die Bilder auswählen. Dies klappt auch alles.
jetzt mein problem:
Wenn kein Unterverzeichnis mit dieser schadensnummer angelegt ist, erscheint der Manager mit der Übersicht der verschiedenen Unterverzeichnisse, aber ich kann keine Bilder auswählen. Kann ich meinen Code so gestalten, wie bisher und zusätzlich freie Auswahl der Bildersuche.
Code:
Sub BilderEinfuegen_neu()
Dim bytBild As Byte
Dim arrBereiche()
Dim StOrdner As String
Dim SNZelle As String
Dim RaBereich As Range
Dim zeile As String

zeile = 28
StOrdner = „d:\Bilder“ & Range(„D5“) & SNZelle
Set RaBereich = Range(„D28,D52,D76,D100“)
arrBereiche = Array(„E7:G28“, „E31:G52“, „E55:G76“, „E79:G100“, „E79:G100“)
Application.ScreenUpdating = False
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = True
.InitialFileName = StOrdner
.ButtonName = „OK“
.Title = „Bilderauswahl“
.Show
If .SelectedItems.Count 0 Then
RPT:
If (a(0)(i)) = „“ Then
i = i - 1
GoTo RPT
Else
x = a(0)(i)
End If
End If

With ActiveSheet.Pictures(ActiveSheet.Pictures.Count)
.Top = Range(arrBereiche(bytBild - 1)).Top
.Left = Range(arrBereiche(bytBild - 0)).Left
.Width = Range(arrBereiche(bytBild - 1)).Width
If .Height > Range(arrBereiche(bytBild - 1)).Height Then .Height = Range(arrBereiche(bytBild - 1)).Height
End With
Range(arrBereiche(bytBild - 1)).Cells(1, 1).Offset(21, -1).Value = Split(.SelectedItems(bytBild), „“)((UBound(Split(.SelectedItems(bytBild), „“))))

ActiveSheet.Cells(zeile, 4) = x
zeile = zeile + 24
Next bytBild
Else
MsgBox „Maximal nur 4 Bilder auswählbar“
End If
End With
Application.ScreenUpdating = True
End Sub

Hallo,

Du schreibst was der Code kann.
Aber nichts davon was, das Problem ist mit dein Code

Lg fred

tut mir leid, kann nicht helfen
Gruß
Brandis

Hallo,

Deine zweite Zuweisung lautet:
StOrdner = „d:\Bilder“ & Range(„D5“) & SNZelle

SNZelle wurde aber bis dato gar nicht zugewiesen, ist also leer ("") oder sogar NULL. Kann es daran liegen?

Hallo,

sorry, aber ich der falsche Ansprechpartner.

Beste Grüße - wm1412

Hallo echojuergen,

sie in den anderen Antworten kann ich immer noch nicht hrlffen, da meine Kenntnisse sich noch nicht großartig erweitert haben.

Gruß Hugo

Hallo,

Hallo echojuergen,
bin mir nicht sicher, ob ich durch Dein Makro durchsteig. Muss ich mir mal in 'ner ruhigen Minute zu Gemüte führen.

ich rufe ein Excel formular auf, um bis zu 4 Bilder
einzufügen.
beim aufruf des Formulars wird aus Access eine Schadensnummer

Bei Access muss ich passen. Ist aber hier wohl auch nicht das Thema.

übergeben und in Zelle D5 abgelegt.
Über ein Macro (Anlage) kann ich Bilder einfügen, es wird der
manager aufgerufen und falls ich Bilder vorab unter einem
Unterverzeichnis d:\Bilder\schadensnummer schon abgelegt habe,
wird dies automatisch aufgerufen, und ich muss nur noch die
Bilder auswählen. Dies klappt auch alles.
jetzt mein problem:
Wenn kein Unterverzeichnis mit dieser schadensnummer angelegt
ist, erscheint der Manager mit der Übersicht der verschiedenen
Unterverzeichnisse, aber ich kann keine Bilder auswählen. Kann
ich meinen Code so gestalten, wie bisher und zusätzlich freie
Auswahl der Bildersuche.

Wie gesagt, dass muss ich mir erst noch richtig reinziehen.

Code:
Sub BilderEinfuegen_neu()
Dim bytBild As Byte
Dim arrBereiche()
Dim StOrdner As String
Dim SNZelle As String
Dim RaBereich As Range
Dim zeile As String

zeile = 28
StOrdner = „d:\Bilder“ & Range(„D5“) & SNZelle

Hier stolpere ich schon. StOrdner ist ein String, SNZelle ist ein String, aber Range(„D5“) ist eben ein Range. Ich würde zumindest ein .Value oder eben eine Stringvariable mit dem Wert dieser Zelle erwarten.

Set RaBereich = Range(„D28,D52,D76,D100“)

Das sind also Deine Zielbereiche für die Bilder.

arrBereiche = Array(„E7:G28“, „E31:G52“, „E55:G76“,
„E79:G100“, „E79:G100“)

Hier weiss ich leider wieder nicht was passiert.

Application.ScreenUpdating = False
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = True
.InitialFileName = StOrdner
.ButtonName = „OK“
.Title = „Bilderauswahl“
.Show
If .SelectedItems.Count 0 Then
RPT:
If (a(0)(i)) = „“ Then
i = i - 1
GoTo RPT
Else
x = a(0)(i)
End If
End If

With ActiveSheet.Pictures(ActiveSheet.Pictures.Count)
.Top = Range(arrBereiche(bytBild - 1)).Top
.Left = Range(arrBereiche(bytBild - 0)).Left
.Width = Range(arrBereiche(bytBild - 1)).Width
If .Height > Range(arrBereiche(bytBild - 1)).Height Then
.Height = Range(arrBereiche(bytBild - 1)).Height
End With
Range(arrBereiche(bytBild - 1)).Cells(1, 1).Offset(21,
-1).Value = Split(.SelectedItems(bytBild),
„“)((UBound(Split(.SelectedItems(bytBild), „“))))

ActiveSheet.Cells(zeile, 4) = x
zeile = zeile + 24
Next bytBild
Else
MsgBox „Maximal nur 4 Bilder auswählbar“
End If
End With
Application.ScreenUpdating = True
End Sub

Du hast
Application.FileDialog(msoFileDialogFilePicker)
zum Einfügen mehrerer Bilder verwendet.

Hiermit lassen sich einzelne Bilder auswählen, egal in welchem Verzeichnis:

Sub BildEinfuegen()
’ Variablen
Dim Bild As Picture, BildName As String
Dim Z As Long, S As Long
’ Bild aussuchen
BildName = Application.GetOpenFilename
Cells(Z, S).Select
On Error GoTo AbBruch
If BildName = „Falsch“ Then
Exit Sub
Else
Set Bild = ActiveSheet.Pictures.Insert(BildName)
Bild.ShapeRange.Height = 200
End If
AbBruch:
End Sub

MfG MwieMichel

Hallo
Ja das geht, nur ist die Frage etwas falsch formuliert. Der Ansatz ist anders. es geht eher um die Routine zu überprüfen ob ein Verzeichnis oder eine datei existiert oder nicht. Das ist das FileSystemObject, dass Du benötigst.

Dim Fso

StOrdner = „d:\Bilder“ & Range(„D5“) & SNZelle
Set Fso = CreateObject(„Scripting.FileSystemObject“)

if Fso.FolderExists(StOrdner)=true then
'Dateiname = „D:\Eigene Dateien\Hajo\Adresse.xls“
'If Fso.FileExists(Dateiname) = true Then
'StOrdner = „d:\Bilder“ & Range(„D5“) & SNZelle
'Der Ordner existiert

else
'Der Ordner existiert nicht
StOrdner = „d:\Bilder“

end if

Grüsse Sebastian

Sorry - da kann ich Dir leider nicht weiterhelfen.
Gruß, Ptonka

Hm, sehr komplex, da komm ich im Moment nicht zu.
Tut mir leid…
MfG
Beasley

Hallo Jürgen,

du kannst in dem angezeigten Dateiauswahldialog doch beliebig in andere Ordner wechseln und dann Bilder auswählen. Funktioniert bei mir zumndest unter Office 2010/Windows Vista.

Du brauchst am Code nichts zu ändern. Oder hab ich in deiner Frage irgendetwas übersehen?

Gruß
Franz

Hi Franz,

danke, habe ich nach längerem Suchen auch bemerkt, und zwar muss ich die datei im Suchfenster löschen.
Nochmals vielen dank,
gruss jürgen