Ich möchte ein Laufwerksverzeichnis (Beispiel: H:\Programm\Druckvorlagen\... auslesen und die darin enthaltenen Dateien in einer Listbox auswählen können, um das Ergebnis in einem Makro weiter zu verarbeiten. Vielen Dank in voraus.
Option Explicit
Option Compare Text
' erstellt von Hajo.Ziplies@web.de
Private Sub CMD_Auslesen_Click()
Dim LoI As Long
For LoI = 0 To ListBox1.ListCount - 1
MsgBox ListBox1.List(LoI, 0)
Next LoI
End Sub
Private Sub UserForm_Initialize()
Dateiliste
End Sub
Sub Dateiliste()
Dim Verzeichnis() As String
Dim Anzahl As Integer
Dim I As Integer
Dim Dateiname As String
Anzahl = 0
' Liste erstellen
Dateiname = Dir("E:\Eigene Dateien\Hajo\" & "*.xls")
I = 3
Do While Dateiname <> ""
' Veränderung für DaPetra
' z.B. Verwaltung.xls und Test.xls) falls sie vorhanden sind nicht anzeigen
' und Anzeige ohne Dateityp
If Dateiname <> "Adresse.xls" And Dateiname <> "autoh.xls" Then
Anzahl = Anzahl + 1
ReDim Preserve Verzeichnis(1 To Anzahl)
' Verzeichnis(Anzahl) = Mid(Dateiname, 1, Len(Dateiname) - 4)
Verzeichnis(Anzahl) = Dateiname
End If
Dateiname = Dir
Loop
' Dateinamen sortieren
Sort_A_Z Verzeichnis, LBound(Verzeichnis), UBound(Verzeichnis) ' Lbound kleinster Wert,UBound Größter Wert
' Dateinamen in Listbox1 schreiben
For I = Anzahl To 1 Step -1
ListBox1.AddItem Verzeichnis(I)
Next I
End Sub
Public Sub Sort_Z_A(SortArray, L, R)
' sortieren von Z bis A
' von GerdZ Herber.de
Dim I, J, x, y
I = L
J = R
x = SortArray((L + R) / 2)
While (I <= J)
While (SortArray(I) < x And I < R)
I = I + 1
Wend
While (x < SortArray(J) And J > L)
J = J - 1
Wend
If (I <= J) Then
y = SortArray(I)
SortArray(I) = SortArray(J)
SortArray(J) = y
I = I + 1
J = J - 1
End If
Wend
If (L < J) Then Call Sort_Z_A(SortArray, L, J)
If (I < R) Then Call Sort_Z_A(SortArray, I, R)
End Sub
Public Sub Sort_A_Z(SortArray, L, R)
' sortieren von A bis Z
' von GerdZ Herber.de
Dim I, J, x, y
I = L
J = R
x = SortArray((L + R) / 2)
While (I <= J)
While (SortArray(I) > x And I < R)
I = I + 1
Wend
While (x > SortArray(J) And J > L)
J = J - 1
Wend
If (I <= J) Then
y = SortArray(I)
SortArray(I) = SortArray(J)
SortArray(J) = y
I = I + 1
J = J - 1
End If
Wend
If (L < J) Then Call Sort_A_Z(SortArray, L, J)
If (I < R) Then Call Sort_A_Z(SortArray, I, R)
End Sub
Sub test()
Dim gefunden
With Application.FileSearch
.NewSearch
.LookIn = "H:\Programm\Druckvorlagen"
.Filename = "*"
.Execute
For Each gefunden In .FoundFiles
ListBox1.AddItem Dir(gefunden)
Next
End With
End Sub
Um ein Laufwerksverzeichnis auszulesen und die Dateien in einer Listbox darzustellen, folge diesen Schritten:
Option Explicit
Private Sub CMD_Auslesen_Click()
Dim LoI As Long
For LoI = 0 To ListBox1.ListCount - 1
MsgBox ListBox1.List(LoI, 0)
Next LoI
End Sub
Private Sub UserForm_Initialize()
Dateiliste
End Sub
Sub Dateiliste()
Dim Verzeichnis() As String
Dim Anzahl As Integer
Dim I As Integer
Dim Dateiname As String
Anzahl = 0
' Liste erstellen
Dateiname = Dir("H:\Programm\Druckvorlagen\*.xls")
I = 3
Do While Dateiname <> ""
Anzahl = Anzahl + 1
ReDim Preserve Verzeichnis(1 To Anzahl)
Verzeichnis(Anzahl) = Dateiname
Dateiname = Dir
Loop
' Dateinamen in Listbox1 schreiben
For I = 1 To Anzahl
ListBox1.AddItem Verzeichnis(I)
Next I
End Sub
Fehler: ListBox bleibt leer
Dir("H:\Programm\Druckvorlagen\*.xls")
. Stelle sicher, dass der Pfad korrekt ist und die Dateien vorhanden sind.Fehler: Fehlermeldung beim Ausführen des Makros
Eine weitere Möglichkeit, Dateien auszulesen, ist die Verwendung von Application.FileSearch
. Hier ein Beispiel:
Sub test()
Dim gefunden
With Application.FileSearch
.NewSearch
.LookIn = "H:\Programm\Druckvorlagen"
.Filename = "*"
.Execute
For Each gefunden In .FoundFiles
ListBox1.AddItem Dir(gefunden)
Next
End With
End Sub
Diese Methode funktioniert in Excel-Versionen bis 2007. In neueren Versionen ist FileSearch
nicht mehr verfügbar, weshalb die erste Methode bevorzugt wird.
Beispiel 1: Auslesen von .xls
-Dateien
.xls
-Dateien im angegebenen Verzeichnis anzuzeigen.Beispiel 2: Auslesen von .txt
-Dateien
Dateiname = Dir("H:\Programm\Druckvorlagen\*.xls")
zu Dateiname = Dir("H:\Programm\Druckvorlagen\*.txt")
, um .txt
-Dateien auszulesen.Dir
-Funktion einfügst.1. Frage
Wie kann ich mehrere Dateitypen gleichzeitig auslesen?
Du kannst die Dir
-Funktion in einer Schleife verwenden, um verschiedene Dateitypen nacheinander auszulesen.
2. Frage
Welche Excel-Versionen unterstützen diese Methoden?
Die Methoden sind mit Excel 2003 SP2 und neueren Versionen kompatibel. Achte darauf, dass du die richtigen Bibliotheken in deinem VBA-Projekt referenzierst.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen