Microsoft Excel

Herbers Excel/VBA-Archiv

Openfilename: Nur bestimmte Ordner anzei

Betrifft: Openfilename: Nur bestimmte Ordner anzei von: Stefan K.
Geschrieben am: 09.10.2020 08:48:01

Guten Morgen zusammen,


in Spalte A meiner Datei stehen fortlaufende Auftragsnummern (z.B. 785-20). Mit einem Doppelklick in Spalte 6 wird ein Openfilename-Dialog geöffnet und es werden mir alle Dateien angezeigt, die mit der aktuelle Auftragsnummer beginnen. Zusätzlich werden mir aber auch alle Dateiordner mit angezeigt, die sich in dem aktuellen Pfad befinden. Ich möchte den Dialog nun so erweitern, dass nur die Ordner (und Dateien) angezeigt werden, die (in diesem Beispiel) mit 785-20 beginnen.

Kann mir da bitte jemand behilflich sein ? Nachfolgend der relevante Teil des Codes (den ich leider nicht wirklich verstehe)...


Vielen Dank vorab.

Gruß Stefan


Dim Filter As String

Dim OFName As OPENFILENAME

Filter = [AR1].Value 'Zwischenspeichern des durch Doppelklick ausgewählten Dateinamen Blattname = ActiveSheet.Name

OFName.lStructSize = Len(OFName)

OFName.lpstrFilter = Filter & "*.*" + Chr$(0) + Filter & "*.*" + Chr$(0)

OFName.lpstrFile = Space$(254) 'Pfad mit Dateiname

OFName.nMaxFile = 255

OFName.lpstrFileTitle = Space$(254) 'Nur der Dateiname

OFName.nMaxFileTitle = 255

OFName.lpstrInitialDir = "E:\Beschaffung\Archiv\" & Blattname & "\Aufträge\"

OFName.lpstrTitle = "Bitte wählen Sie eine Datei aus“

Betrifft: AW: Openfilename: Nur bestimmte Ordner anzei
von: Yal
Geschrieben am: 09.10.2020 15:05:28

https://docs.microsoft.com/de-de/office/vba/api/office.filedialog

Betrifft: AW: Openfilename: Nur bestimmte Ordner anzei
von: Stefan K.
Geschrieben am: 12.10.2020 08:59:33

Guten Morgen,

ich weiß gar nicht, wie ich mich für soviel Unterstützung bedanken soll...

Wie soll mir der Link jetzt weiterhelfen ?

Viele Grüße
Stefan

Betrifft: AW: Openfilename: Nur bestimmte Ordner anzei
von: Yal
Geschrieben am: 12.10.2020 11:28:16

Hallo Stefan,

sorry, ich hatte sehr wenig Zeit, sah aber dass niemand sich für dein Anliegen interessierte, also habe ich versucht auf die Schnelle eine Rettungsring zu werfen.

"Version: vor 2013"? Der von Dir aufgeführte "OPENFILENAME" ist mir nicht bekannt und im Internet gibt es nicht viel darüber. Da wird sich niemand in älteren Version einarbeiten.

Der Link führt einen Beispiel vor. Erste Schritt wäre, dieses Beispiel zu probieren. Wenn es funktioniert, muss Du nicht eine neuere Excel Version kaufen (laut Werbung ab 15€?)

In dem Beispiel sind auch einige Elemente, die Einzigartig sind, wie "msoFileDialogFilePicker". Sowas ist immer ein gute Startpunkt um weitere Internet-Forschung zu starten.


Viel Erfolg
Yal

Betrifft: AW: Openfilename: Nur bestimmte Ordner anzei
von: Stefan K.
Geschrieben am: 12.10.2020 15:12:32

Hi Yal,

OK, vielen Dank. Leider hilft mir das auch nicht weiter.
Alles Gute.

Gruß Stefan

Betrifft: AW: Openfilename: Nur bestimmte Ordner anzei
von: Yal
Geschrieben am: 12.10.2020 16:55:45

Na gut.

Probiere damit:
Sub Datei_oeffnen()
Dim FD As FileDialog
Dim D
Dim BlattName As String

    BlattName = [AR1].Value
    Set FD = Application.FileDialog(msoFileDialogFilePicker)
    FD.Filters.Add "Alle Dateien", "*.*"
    FD.InitialFileName = "C:\temp\" & BlattName & "*.*"
    If FD.Show = True Then
        For Each D In FD.SelectedItems
            Debug.Print D
        Next
    End If
End Sub
Debug.print gibt den Pfad der ausgewählten Datei(en) in dem Direktfenster aus. Das musst Du noch zu deinen Zweck rumbiegen.

Viel Erfolg
Yal

Betrifft: AW: Openfilename: Nur bestimmte Ordner anzei
von: volti
Geschrieben am: 12.10.2020 17:49:35

Hallo Stefan,

die Einschränkung der angezeigten Ordner ist hier m.W. trotz der vielen zur Verfügung stehenden Parameter leider nicht möglich.
Leider ist Dein Code ja unvollständig, ich vermute aber mal anhand der TYPE-Struktur, dass Du die API-Function GetOpenfilename verwendest und nicht die Application-Version?!

Die anzuzeigenden Dateien kannst Du ganz einfach über den Filter einschränken. Deinem Text könnte man entnehmen, dass dies schon passiert, lt. Code werden jedoch alle Dateien angezeigt bzw. die Angabe ist fehlerhaft. Leider sieht man nicht, was da in $AR$1 drin steht.

Hier ein Beispiel für den Filter (vielleicht hilft es ja):
OFName.lpstrFilter = "nur 782er Dateien & vbNullChar & "782.*" & vbNullChar & vbNullChar
Hierbei ist immer abwechselnd NullChar-getrennt der (beliebige) Filtertext und der eigentliche Filter anzugeben und am Ende zwei NullChars.


viele Grüße
Karl-Heinz