ChDir ("E:\daten\")
a$ = Application.GetOpenFilename("dBASE-Dateien (*.dbf), *.dbf")
scheiterte ich kläglich. Was mache ich nur falsch?
Danke,
Andreas
Um den Einstiegspfad für das Dialogfenster von Application.GetOpenFilename festzulegen, kannst Du den folgenden VBA-Code verwenden:
Sub EinstiegspfadFestlegen()
ChDrive "E:\" ' Wechsel zu Laufwerk E
ChDir "E:\daten\" ' Wechsel in das Verzeichnis "daten"
Dim a As Variant
a = Application.GetOpenFilename("dBASE-Dateien (*.dbf), *.dbf")
If a <> False Then
MsgBox "Ausgewählte Datei: " & a
Else
MsgBox "Keine Datei ausgewählt."
End If
End Sub
Hierbei wird zuerst mit ChDrive das Laufwerk und anschließend mit ChDir das Verzeichnis festgelegt. Der GetOpenFilename-Befehl öffnet dann das Dialogfeld mit dem gewünschten Filter für dBASE-Dateien.
Problem: Der Pfad wird nicht beachtet.
ChDrive und ChDir ausführst, bevor Du Application.GetOpenFilename aufrufst. Dies sorgt dafür, dass das Dialogfenster den richtigen Einstiegspfad verwendet.Problem: GetOpenFilename gibt False zurück.
Eine alternative Methode, um den Einstiegspfad festzulegen, wäre die Verwendung von Application.GetOpenFilename mit einem bestimmten Pfad direkt im Aufruf:
Dim a As Variant
a = Application.GetOpenFilename("dBASE-Dateien (*.dbf), *.dbf", , "Wähle eine Datei", , False)
Hier kann der zweite und dritte Parameter genutzt werden, um den Dialog entsprechend anzupassen, jedoch kannst Du den Pfad nicht direkt vorgeben, wenn Du diese Methode verwendest.
Ein praktisches Beispiel wäre, wenn Du eine Datei in eine Excel-Tabelle importieren möchtest. Der folgende Code öffnet das Dialogfeld zum Auswählen einer Datei und importiert die Daten:
Sub DateiImportieren()
Dim a As Variant
ChDrive "E:\"
ChDir "E:\daten\"
a = Application.GetOpenFilename("dBASE-Dateien (*.dbf), *.dbf")
If a <> False Then
' Hier kannst Du den Import der Datei vornehmen
' Beispiel: Workbooks.Open a
MsgBox "Datei wird importiert: " & a
End If
End Sub
GetOpenFilename in Kombination mit multiselect, wenn Du mehrere Dateien auswählen möchtest. Setze dazu den Parameter multiselect auf True.filefilter, um die Arten von Dateien, die angezeigt werden, spezifisch zu gestalten. Dies verbessert die Benutzererfahrung erheblich.1. Wie kann ich den Filter für die Dateiauswahl anpassen?
Du kannst den Filter im Application.GetOpenFilename-Aufruf anpassen, indem Du den ersten Parameter änderst, z.B. "Excel-Dateien (*.xlsx), *.xlsx".
2. Kann ich mehrere Dateien mit GetOpenFilename auswählen?
Ja, setze den Parameter multiselect auf True, um die Auswahl mehrerer Dateien zu ermöglichen. Beachte, dass Du dann die Rückgabewerte entsprechend behandeln musst.