Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA Ordner selektieren mit Vorschlag

VBA Ordner selektieren mit Vorschlag
22.04.2022 17:16:26
Joschi
Hallo Forum,
ich wähle mit "Application.FileDialog(msoFileDialogFolderPicker)" einen Ordner aus. Das funktioniert soweit so gut.
Aber ich möchte folgendes:
Es gibt einen Basis-Ordner, nennen wir einfach "C:\Backup". Nun möchte ich im Dialog diesen Ordner als Ausgangsbasis, und einen früher einmal ausgewählten Ordner als Default-Wert. Wenn ich dann genau diesen Unterordner haben möchte, ist der bereits "vorgemerkt". Ich möchte aber auch die Möglichkeit haben, einen anderen Unterordner von C:\Backup auswählen zu können.
Wie kann ich das erreichen.
Wenn ich ".InitialFileName = C:\Backup\OldSelect\" vorgebe. werden mir möglich Unterordner von OldSelect angeboten.
Gruß Joschi
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Ordner selektieren mit Vorschlag
22.04.2022 19:24:34
Yal
Hallo Joschi,
probiere folgendes

Dim VerzSpeicher As String
Const cVerzDefault = "C:\Backup"
Sub test()
Dim FD As FileDialog
Set FD = Application.filediaglog(msoFileDialogFolderPicker)
If VerzSpeicher = "" Then VerzSpeicher = cVerzDefault
FD.InitialFileName = VerzSpeicher
If FD.Show Then
VerzSpeicher = FD.SelectedItems(1)
'... hier dein Code
End If
End Sub
VG
Yal
Anzeige
AW: VBA Ordner selektieren mit Vorschlag
22.04.2022 20:04:19
Joschi
Hallo Yal,
Herzllichen Dank für Deinen Code-Vorschlag. Doch der löst nicht meinen Wunsch. Möglicherweise wurde der auch nicht "verständlich herübergebracht".
Im Verzeichnis C:\Backup gibt es z. B. 3 Unterordner; Sub1, Sub2 und Sub3. Sub2 wurde beim letzten Aufruf benutzt und ist deshalb Makro-intern bekannt. Nun ist mein Wunsch, dass mir das Verzeichnis C:\Backup und darunter das Verzeichnis Sub2 angeboten wird. Wenn ich nur C:\Backup vorgebe, dann sehe ich zwar auch unter anderem diesen Namen, habe aber keinen Default-Wert hinsichtlich Unterordner. Das wäre mein Wunsch gewesen - falls es machbar wäre.
Wenn ich C:\Backup\Sub2 vorgeben, sehe ich nur Unterordner von diesem Pfad.
Gruß Joschi
Anzeige
AW: VBA Ordner selektieren mit Vorschlag
22.04.2022 20:12:52
Yal
Hallo Joschi,
es ist in dieser Form nicht möglich. Nicht nur dass der FileDialog ein Standardelement wäre, das sich nicht biegen lässt, aber sowohl den Inhalt eines Verzeichnisses als auch den von einem Unterverzeichnis auf dieselbe Ebene darzustellen, widerspricht die Idee von "Unterverzeichnis".
Es ist auch nicht möglich, gezielte Inhalt von C:\backup (z.B. xlsx-Dateien) und nur den Unterverzeichnis "Sub2" daneben, ohne dass "Sub1" und "Sub3" angezeigt werden. Das kennt man auch aus dem Datei-Explorer. VBA funktioniert nicht anders.
VG
Yal
Anzeige
VBA Ordner selektieren mit Vorschlag
23.04.2022 11:34:34
Anton
Hallo Joschi,
probier sowas:

Sub ordnerauswahl()
  Dim BrowseDir As Object, sAuswahl As String, VerzSpeicher As Variant    
  Const cVerzDefault = "C:\temp"  'anpassen
  VerzSpeicher = "C:\temp\links" 'anpassen
  If VerzSpeicher = "" Then VerzSpeicher = cVerzDefault  
  Do
    Set BrowseDir = CreateObject("Shell.Application").BrowseForFolder(0, "Ordner auswählen", &H0, VerzSpeicher)    
    If Not BrowseDir Is Nothing Then    
      sAuswahl = BrowseDir.self.Path
    Else
     'bei dem Klick auf Abbrechen in cVerzDefault wechseln
      VerzSpeicher = cVerzDefault
    End If  
    Set BrowseDir = Nothing  
  Loop Until sAuswahl <> ""  
  MsgBox sAuswahl
End Sub

mfg Anton
Anzeige
AW: VBA Ordner selektieren mit Vorschlag
23.04.2022 14:12:02
Joschi
Hallo Anton.
Dein Vorschlag war gut gemeint. Allerdings besteht damit das Problem, dass ich keine Ordner außerhalb meines ehemaligen Basis-Ordners auswählen kann.
Gruß Joschi
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Ordnerwahl in Excel VBA: So wählst Du den richtigen Ordner aus


Schritt-für-Schritt-Anleitung

Um einen Ordner in Excel VBA auszuwählen und einen Standardordner festzulegen, kannst Du den Application.FileDialog(msoFileDialogFolderPicker) verwenden. Hier ist eine einfache Anleitung, wie Du dies umsetzen kannst:

  1. Öffne den VBA-Editor mit ALT + F11.
  2. Füge ein neues Modul hinzu.
  3. Kopiere den folgenden Code in das Modul:
Dim VerzSpeicher As String
Const cVerzDefault = "C:\Backup"

Sub OrdnerAuswahl()
    Dim FD As FileDialog
    Set FD = Application.FileDialog(msoFileDialogFolderPicker)

    ' Setze den Initialwert
    If VerzSpeicher = "" Then VerzSpeicher = cVerzDefault
    FD.InitialFileName = VerzSpeicher

    ' Zeige den Dialog an
    If FD.Show Then
        VerzSpeicher = FD.SelectedItems(1)
        MsgBox "Ausgewählter Ordner: " & VerzSpeicher
    End If
End Sub
  1. Führe das Makro OrdnerAuswahl aus, um den Dialog zu öffnen und einen Ordner auszuwählen.

Häufige Fehler und Lösungen

  • Fehler: "Typenübereinstimmung": Stelle sicher, dass die Variablen korrekt deklariert sind. Überprüfe die Typen und Deklarationen.

  • Fehler: Dialog öffnet nicht: Achte darauf, dass Du das richtige FileDialog-Enum verwendest. Es sollte msoFileDialogFolderPicker sein.

  • Problem mit dem Default-Pfad: Wenn der Default-Pfad nicht gesetzt wird, überprüfe, ob VerzSpeicher korrekt initialisiert ist.


Alternative Methoden

Falls Du eine alternative Methode zur Auswahl von Ordnern in Excel VBA benötigst, kannst Du die Shell-Anwendung verwenden:

Sub OrdnerAuswahlShell()
    Dim BrowseDir As Object
    Dim sAuswahl As String
    Const cVerzDefault = "C:\Backup"

    Set BrowseDir = CreateObject("Shell.Application").BrowseForFolder(0, "Ordner auswählen", &H0, cVerzDefault)

    If Not BrowseDir Is Nothing Then
        sAuswahl = BrowseDir.Self.Path
        MsgBox "Ausgewählter Ordner: " & sAuswahl
    Else
        MsgBox "Kein Ordner ausgewählt."
    End If

    Set BrowseDir = Nothing
End Sub

Diese Methode ermöglicht eine einfachere Auswahl und kann für verschiedene Pfade verwendet werden.


Praktische Beispiele

  1. Standardordner setzen:

    • Setze VerzSpeicher auf einen bestimmten Unterordner, um ihn als Default-Wert im Dialog anzubieten.
  2. Ordnerfilter:

    • Du kannst den Dialog so anpassen, dass nur bestimmte Ordner angezeigt werden, indem Du die Filter-Eigenschaft verwendest.
FD.Filters.Clear
FD.Filters.Add "Ordner", "*.folder"

Tipps für Profis

  • Verwende die Application.ScreenUpdating-Eigenschaft: Um die Performance zu verbessern, setze Application.ScreenUpdating = False vor dem Dialog und wieder True danach.

  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung mit On Error GoTo, um unerwartete Fehler abzufangen.

On Error GoTo FehlerHandler
' Dein Code hier
Exit Sub

FehlerHandler:
    MsgBox "Ein Fehler ist aufgetreten: " & Err.Description

FAQ: Häufige Fragen

1. Wie setze ich einen Standardordner in VBA? Du kannst den Standardordner mit der InitialFileName-Eigenschaft des FileDialog-Objekts setzen.

2. Kann ich mehrere Ordner gleichzeitig auswählen? Mit msoFileDialogFolderPicker ist dies nicht möglich, da nur ein Ordner ausgewählt werden kann. Für mehrere Dateien musst Du den msoFileDialogFilePicker verwenden.

3. Was ist der Unterschied zwischen FileDialog und Shell.Application? FileDialog ist spezifisch für Excel und hat eine einfachere API, während Shell.Application eine breitere Funktionalität für Windows bietet.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige