Microsoft Excel

Herbers Excel/VBA-Archiv

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

Nur Dateinamen, ohne Pfad

    Betrifft: Nur Dateinamen, ohne Pfad von: Franz W.
    Geschrieben am: 29.09.2003 13:42:34

    Hallo Forum,

    ich habe von Hans' CD einen Code, der in ein Listenfeld die Dateien eines Verzeichnisses auflistet, allerdings mit kompletten Pfad:

    Private Sub cmdList_Click()
       Dim intCounter As Integer
       With Application.FileSearch
          .LookIn = CurDir
          .FileName = "*.xls"
          .Execute
          For intCounter = 1 To .FoundFiles.Count
             lstFiles.AddItem .FoundFiles(intCounter)
          Next
       End With
    End Sub
    


    Wie bitte muss dieser Code lauten, damit er NUR DIE DATEINAMEN ins Listenfeld schreibt?

    Vielen Dank im Voraus und Grüße
    Franz
      


    Betrifft: AW: Nur Dateinamen, ohne Pfad von: Hajo_Zi
    Geschrieben am: 29.09.2003 13:52:37

    Hallo Franz

    mal in Beispiel

    Option Explicit
    Option Compare Text
    ' erstellt von Hajo.Ziplies@web.de
    ' http://home.media-n.de/ziplies/

    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("D:\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

    Grußformel

    Falls Code vorhanden wurde dieser getestet unter Betriebssystem XP Pro und Excel Version XP SBE.
    Bitte kein Mail, Probleme sollen im Forum gelöst werden.

    Microsoft MVP für Excel

    Das Forum lebt auch von den Rückmeldungen.

    Zurzeit gibt es wieder Probleme mit der E-Mail Benachrichtigung.

    Ich bekomme Mails zu Beiträgen an denen ich nicht beteiligt bin und zusätzlich noch Mails zu meinen eigenen Beiträgen.
    Das Problem mit den eigenen Benachrichtigung kann gelöst werden durch Lösche und Neuanmelden. Dieses möchte ich aber nicht jeden Tag machen.
    Um dieses Problem erstmal zu beseitigen habe ich die automatische Mailbenachrichtigung abgeschaltet.
    Aus diesem Grunde ist es dem Zufall überlassen ob auf Rückfragen Antworten von mir kommen.


    http://home.media-n.de/ziplies/



      


    Betrifft: AW: Nur Dateinamen, ohne Pfad von: Franz W.
    Geschrieben am: 29.09.2003 14:33:13

    Hallo Hajo,

    vielen Dank, ist ja riesig ausführlich!! Aber auf die Schnelle durchschaue ich das nicht, da komm ich erst später dazu. MElde mich dann wieder.

    Danke und Grüße
    Franz


      


    Betrifft: AW: Nur Dateinamen, ohne Pfad von: Franz W
    Geschrieben am: 29.09.2003 22:43:59

    Hallo Hajo,

    vielen Dank, das hat mir jetzt bei meinem Konstrukt weitergeholfen. Und wenn ich's mir genauer anschaue, werd ich wohl noch mehr aus Deinem Code übernehmen, kann ich schon was damit anfangen.


    Danke und Grüße
    Franz


      


    Betrifft: AW: Nur Dateinamen, ohne Pfad von: Veit
    Geschrieben am: 29.09.2003 14:01:33

    Hallo Franz,
    probier vielleicht das mal:

    Private Sub cmdList_Click()
       Dim intCounter As Integer
       With Application.FileSearch
          .LookIn = CurDir
          .Filename = "*.xls"
          .Execute
          For intCounter = 1 To .FoundFiles.Count
             komplett = .FoundFiles(intCounter)
             For i = 0 To Len(komplett)
                If Mid(komplett, Len(komplett) - i, 1) = "\" Then Exit For
                Name = Mid(komplett, Len(komplett) - i, 1) & Name
             Next i
             lstFiles.AddItem Name
          Next
       End With
    End Sub
    



      


    Betrifft: AW: Nur Dateinamen, ohne Pfad von: Franz W.
    Geschrieben am: 29.09.2003 14:30:43

    Hallo Veit,

    vielen Dank für Deine Hilfe. Hat noch einen kleinen Fehler, er listet auf:

    aaa.xls
    bbb.xlsaaa.xls
    ccc.xlsbbb.xlsaaa.xls
    ddd.xlsccc.xlsbbb.xlsaaa.xls
    eee.xlsddd.xlsccc.xlsbbb.xlsaaa.xls
    .
    .
    .

    aber den find ich schon raus.

    Vielen Dank und Grüße
    Franz


      


    Betrifft: AW: Nur Dateinamen, ohne Pfad von: Veit
    Geschrieben am: 29.09.2003 14:39:49

    ja ist ja klar
    ...
    For i = 0 To Len(komplett)
    If Mid(komplett, Len(komplett) - i, 1) = "\" Then Exit For
    Name = Mid(komplett, Len(komplett) - i, 1) & Name
    Next i
    lstFiles.AddItem Name
    Name=""
    ...

    Da mußt die Variable wieder leer machen.
    Hatte ich nicht drangedacht. Sorry
    So sollte es funken
    Gruß
    Ein Veit


      


    Betrifft: Ja, das isses! Perfekt! Vielen Dank, Veit! o.T. von: Franz W.
    Geschrieben am: 29.09.2003 15:01:31