ich möchte in einer ComboBox das Verzeichnis z.b. C\Excel\Gertrud\*.* einlesen
geht das ?
Gruss Walter
Private Sub UserForm_Initialize()
Dim i As Long
With Application.FileSearch
.LookIn = "C:\Excel\Gertrud\"
.FileType = msoFileTypeAllFiles
.Execute
For i = 1 To .FoundFiles.Count
ComboBox1.AddItem .FoundFiles(i)
Next i
End With
End Sub
Sub testDialog()
strPfad = Application.GetOpenFilename( _
"Exceldateien (*.xls), *.xls, Alle Dateien (*.*), *.*", 1, _
"Exceldateien auswählen...", MultiSelect:=False)
MsgBox strPfad
ChDir "C:\Excel\Getrud"
strPfad = Application.GetOpenFilename( _
"Exceldateien (*.xls), *.xls, Alle Dateien (*.*), *.*", 1, _
"Exceldateien auswählen...", MultiSelect:=False)
MsgBox strPfad
End Sub
Sub testDialog()
Dim strPfad As String
ChDir "C:\Excel\Getrud"
strPfad = Application.GetOpenFilename( _
"Exceldateien (*.xls), *.xls, Alle Dateien (*.*), *.*", 1, _
"Exceldateien auswählen...", MultiSelect:=False)
If strPfad = "Falsch" or strPfad = "False" Then Exit Sub
Workbooks.Open FileName:=strPfad
End Sub
Sub testDialog()
Application.Dialogs(xlDialogOpen).Show
End Sub
Um ein Verzeichnis in eine ComboBox in Excel einzulesen, kannst du den folgenden VBA-Code verwenden. Dieser ermöglicht es dir, alle Dateien aus einem bestimmten Verzeichnis anzuzeigen.
ALT + F11).Private Sub UserForm_Initialize()
Dim i As Long
With Application.FileSearch
.LookIn = "C:\Excel\Gertrud\"
.FileType = msoFileTypeAllFiles
.Execute
For i = 1 To .FoundFiles.Count
ComboBox1.AddItem .FoundFiles(i)
Next i
End With
End Sub
Fehler: ComboBox bleibt leer
Lösung: Überprüfe den Pfad in .LookIn. Stelle sicher, dass das Verzeichnis existiert und dass du die richtigen Berechtigungen hast.
Fehler: "FileSearch" nicht gefunden
Lösung: Diese Methode ist in neueren Excel-Versionen nicht mehr verfügbar. Verwende stattdessen die Dir-Funktion, um Dateien aufzulisten.
Fehler: Ungültige Datei ausgewählt
Lösung: Achte darauf, dass du den richtigen Dateityp im Filter angibst und dass die Datei existiert.
Eine alternative Möglichkeit, Dateien auszuwählen, besteht darin, den Öffnungsdialog zu verwenden. Hier ist ein Beispiel:
Sub testDialog()
Dim strPfad As String
strPfad = Application.GetOpenFilename( _
"Exceldateien (*.xls), *.xls, Alle Dateien (*.*), *.*", 1, _
"Exceldateien auswählen...", MultiSelect:=False)
If strPfad <> "Falsch" Then
Workbooks.Open FileName:=strPfad
End If
End Sub
Eine andere Methode ist die Verwendung von Application.Dialogs:
Sub testDialog()
Application.Dialogs(xlDialogOpen).Show
End Sub
Hier ist ein weiteres Beispiel zur Integration einer ComboBox mit der Möglichkeit, ausgewählte Dateien zu öffnen:
Private Sub CommandButton1_Click()
Dim strPfad As String
strPfad = ComboBox1.Value ' Wert aus der ComboBox
If strPfad <> "" Then
Workbooks.Open FileName:=strPfad
Else
MsgBox "Bitte wähle eine Datei aus."
End If
End Sub
In diesem Beispiel wird eine Schaltfläche erstellt, die die ausgewählte Datei öffnet, wenn sie angeklickt wird.
Verwende Dir-Funktion: Um eine Liste von Dateien in einem Verzeichnis zu erstellen, kannst du die Dir-Funktion verwenden. Diese ist effizienter und funktioniert in allen Excel-Versionen.
FileDialog verwenden: Für eine bessere Benutzererfahrung kannst du den FileDialog-Objekt verwenden, um den Benutzern die Auswahl von Dateien zu erleichtern:
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogFilePicker)
If fd.Show = -1 Then
' Datei wurde ausgewählt
MsgBox fd.SelectedItems(1)
End If
1. Wie kann ich Unterverzeichnisse einlesen?
Du kannst eine rekursive Funktion schreiben, um auch Unterverzeichnisse zu durchsuchen. Die Dir-Funktion kann in einer Schleife verwendet werden, um alle Dateien in einem Verzeichnis und dessen Unterverzeichnissen zu erfassen.
2. Funktioniert das in allen Excel-Versionen?
Die genannten Methoden funktionieren in den meisten Excel-Versionen, aber einige Funktionen wie FileSearch sind in neueren Versionen nicht mehr verfügbar. Verwende die Dir-Funktion als zuverlässige Alternative.