Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema ListBox
BildScreenshot zu ListBox ListBox-Seite mit Beispielarbeitsmappe aufrufen

Dateien aus Verzeichnis sortieren

Betrifft: Dateien aus Verzeichnis sortieren von: Berta
Geschrieben am: 19.08.2004 13:11:12

Hallo Leute,
brauche mal einen guten Tip und Rat.

Ich lese in einer Listbox die Einträge aus einem Verzeichnis ein.
Einträge = xls Dateien
z.B Apr2004.xls, Aug2004.xls
Das funktioniert auch alles wunderbar, über Dir(path ...)
Nun möchte ich aber, das die Ausgabe sortiert erfolgt!

Vielen Dank im Voraus!
Gruß Berta

  


Betrifft: AW: Dateien aus Verzeichnis sortieren von: EtoPHG
Geschrieben am: 19.08.2004 13:35:49

Hallo Berta,

Kannst Du mal den Code zum Füllen Deiner Listbox ins Forum stellen.
Dann kann man beim Füllen schon sortieren.

Gruss Hansueli


  


Betrifft: AW: Dateien aus Verzeichnis sortieren von: Berta
Geschrieben am: 19.08.2004 13:51:09

kann ich tun!
Hier mein kleiner Quellcode:

Private Sub UserForm_Initialize()
path = ThisWorkbook.path & "\AP\"

Dim Dateiname As String
Dim i As Integer
ListBox1.Clear
Dateiname = Dir(path & "*.xls")
ListBox1.AddItem Dateiname
While Dateiname <> ""
Dateiname = Dir
ListBox1.AddItem Dateiname

Wend
End Sub


Reicht das aus? Danke


  


Betrifft: AW: Dateien aus Verzeichnis sortieren von: EtoPHG
Geschrieben am: 19.08.2004 14:18:33

Hallo Berta,

Nach Deinem Code, müssten die Einträge in der Listbox in alphabetischer Reihenfolge erfolgen. Was willst Du genau für eine Sortierung ??

Gruss Hansueli


  


Betrifft: AW: Dateien aus Verzeichnis sortieren von: Berta
Geschrieben am: 19.08.2004 14:24:00

Der dateiname besteht aus den ersten drei Buchstaben des Monats und dann das Jahr.
Nun möchte ich das Jan 2004 als erstes in der Liste steht, bis zu Dez 2004 als letztes, dann müßte er wieder (wenn es dann so weit ist) mit Jan 2005 anfangen.
Ich kann mir denken, das ich dann den Dateinamen wieder wandeln muss
da fangen dann meine Probleme an.
Ich danke dir schon mal, Hansueli

Gruss berta


  


Betrifft: AW: Dateien aus Verzeichnis sortieren von: EtoPHG
Geschrieben am: 19.08.2004 15:34:29

Berta,

Ich sehe das Problem. Die Lösung verursacht ziemlichen Aufwand.
Im Moment habe ich die Zeit nicht Dier den Code zu schreiben.
Ein Ansatz wäre, die Dateiliste in das Worksheet einzulesen, zu formatieren und anschliessend zu sortieren, dann die sortierte Liste einzulesen.
Vielleicht finde ich heute Abend Zeit eine Lösung zu erarbeiten.

Gruss Hansueli


  


Betrifft: AW: Dateien aus Verzeichnis sortieren von: Berta
Geschrieben am: 20.08.2004 08:16:10

Hi Hansueli,
wäre schön wenn du mir da weiter helfen könntest.
Ich werde versuchen deinen Vorschlag umzusetzen. Mal sehen wie weit ich da komme.
Gruß Berta


  


Betrifft: AW: Dateien aus Verzeichnis sortieren von: EtoPHG
Geschrieben am: 20.08.2004 10:36:47

Hallo Berta,

Dein Problem war nicht so einfach zu lösen...

Trotzdem glaube ich Dein Problem gelöst zu haben.
Hier ist der Code für die Userform und eine zusätzliche Funktion um einen String der Form "MMM jjjj" in eine Zahl umzuwandeln und anschliessend die Listbox in der richtigen Reihenfolge zu füllen.
Eventuell musst Du in der Funktion die Monatsnamen so anpassen, dass sie Deinen abgespeicherten Dateinamen entsprechen. Also wenn Du z.B. die Datei vom März unter MAR 2004.xls abgespeichert hast, den aMonthNames(3) auf "MAR" ändern.

Private Sub UserForm_Initialize()
    
    Dim sPath As String
    Dim sFullName As String
    Dim dDateiName As Double
    Dim ix As Integer
   
    ListBox1.Clear
    sPath = "...Hier den Pfad eintragen...."
    sFullName = Dir(sPath & "*.xls")
    While sFullName <> ""
        dDateiName = getDateVal(Left(sFullName, InStr(1, sFullName, ".") - 1))
        If dDateiName > 0 Then
            For ix = 0 To ListBox1.ListCount - 1
                If getDateVal(Left(ListBox1.List(ix), InStr(1, ListBox1.List(ix), ".") - 1)) > dDateiName Then
                    ListBox1.AddItem sFullName, ix
                    Exit For
                End If
            Next ix
            If ix = ListBox1.ListCount Then ListBox1.AddItem sFullName
        End If
        sFullName = Dir
    Wend
   
End Sub


Private Function getDateVal(sMonYear As String) As Double
'
' Wandelt einen string vom typ "Mrz 2017" in eine Zahl 201703 um
' Gibt 0 zurück bei falschem string (z.B. "März 2017")
'
    Dim aMonthNames(12) As String
    Dim ix As Integer
    aMonthNames(1) = "JAN"
    aMonthNames(2) = "FEB"
    aMonthNames(3) = "MRZ"
    aMonthNames(4) = "APR"
    aMonthNames(5) = "MAI"
    aMonthNames(6) = "JUN"
    aMonthNames(7) = "JUL"
    aMonthNames(8) = "AUG"
    aMonthNames(9) = "SEP"
    aMonthNames(10) = "OKT"
    aMonthNames(11) = "NOV"
    aMonthNames(12) = "DEZ"
    
    getDateVal = Val(Right(sMonYear, 4)) * 100
    For ix = 1 To 12
        If Left(UCase(sMonYear), 3) = aMonthNames(ix) Then
            getDateVal = getDateVal + ix
            Exit Function
        End If
    Next ix
    getDateVal = 0
    Exit Function
End Function



Mir hat das Problem wieder einige Augen geöffnet, was Excel kann und was nicht.
Mailto:hgoeldi@compuserve.com

Gruss Hansueli


  


Betrifft: AW: Dateien aus Verzeichnis sortieren von: Berta
Geschrieben am: 20.08.2004 11:31:20


Danke Hansueli!!!!!!!
Werde es probieren und dir Meldung geben, ob es in meinem kleinen Programm läuft.
Excel ist ein tolles Programm, mit VB aber noch viel besser (wenn man weis wie) ;-)

Danke nochmal für die schnell Hilfe!
Gruß Berta


 

Beiträge aus den Excel-Beispielen zum Thema "Dateien aus Verzeichnis sortieren"