Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA - Laufwerk auslesen und in Listbox darstellen.

VBA - Laufwerk auslesen und in Listbox darstellen.
18.10.2005 17:58:54
Schmidt
Hallo, wer kann hier helfen?
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.
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Laufwerk auslesen und in Listbox darstellen.
18.10.2005 18:12:41
Hajo_Zi
Hallo Schmidt,

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

Bitte keine Mail, Probleme sollten im Forum gelöst werden.
Microsoft MVP für Excel
Das Forum lebt auch von den Rückmeldungen.
Betriebssystem XP Home SP2 und Excel Version 2003 SP2.


Anzeige
AW: VBA - Laufwerk auslesen und in Listbox darstellen.
18.10.2005 19:19:45
Mr.
Super vielen Dank, hat mir geholfen.
Application.FileSearch
ransi
hallo schmidt
vesuchs mal so:
Option Explicit
Public

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

ransi
Anzeige
AW: Application.FileSearch
18.10.2005 19:19:00
Mr.
Super vielen Dank, hat mir geholfen.
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Laufwerk auslesen und in Listbox darstellen mit VBA


Schritt-für-Schritt-Anleitung

Um ein Laufwerksverzeichnis auszulesen und die Dateien in einer Listbox darzustellen, folge diesen Schritten:

  1. Öffne Excel und erstelle ein neues Arbeitsblatt.
  2. Aktiviere die Entwicklertools:
    • Klicke auf "Datei" > "Optionen" > "Menüband anpassen" und aktiviere die "Entwicklertools".
  3. Füge ein UserForm hinzu:
    • Klicke auf "Entwicklertools" > "Visual Basic" > "Einfügen" > "UserForm".
  4. Füge eine Listbox und einen Button hinzu:
    • Ziehe eine Listbox (ListBox1) und einen Button (CMD_Auslesen) auf das UserForm.
  5. Kopiere den folgenden VBA-Code in das Codefenster des UserForms:
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
  1. Starte das UserForm und klicke auf den Button, um die Dateien anzuzeigen.

Häufige Fehler und Lösungen

  • Fehler: ListBox bleibt leer

    • Überprüfe den Pfad in Dir("H:\Programm\Druckvorlagen\*.xls"). Stelle sicher, dass der Pfad korrekt ist und die Dateien vorhanden sind.
  • Fehler: Fehlermeldung beim Ausführen des Makros

    • Stelle sicher, dass du die richtigen Berechtigungen für das Verzeichnis hast und dass Excel die Makros ausführen darf. Aktiviere die Makros in den Excel-Optionen.

Alternative Methoden

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.


Praktische Beispiele

  1. Beispiel 1: Auslesen von .xls-Dateien

    • Verwende den ersten VBA-Code, um alle .xls-Dateien im angegebenen Verzeichnis anzuzeigen.
  2. Beispiel 2: Auslesen von .txt-Dateien

    • Ändere die Zeile Dateiname = Dir("H:\Programm\Druckvorlagen\*.xls") zu Dateiname = Dir("H:\Programm\Druckvorlagen\*.txt"), um .txt-Dateien auszulesen.

Tipps für Profis

  • Verwende Filter: Du kannst die Dateiauswahl weiter verfeinern, indem du spezifische Dateinamen oder -typen in die Dir-Funktion einfügst.
  • Fehlerbehandlung: Implementiere Fehlerbehandlungsroutinen, um unerwartete Probleme elegant zu lösen.
  • Performance-Optimierung: Bei großen Verzeichnissen kann es hilfreich sein, die Listbox in einem Hintergrundprozess zu befüllen, um die Benutzeroberfläche nicht zu blockieren.

FAQ: Häufige Fragen

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.

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