VB Verzeichnisse auslesen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: VB Verzeichnisse auslesen
von: Slugger
Geschrieben am: 02.03.2005 08:47:29
Hallo,
ich hab hier einen VB Code, der mir alle Dateien in Verzeichnissen ausließt und sie mir in eine Spalte untereinander schreibt. Nur steht dann dort der komplette Pfad. Wie stelle ich es an, das mir Excel nur die XLS.Datei reinschreibt, ohne den Pfad. Mit der Dir() Funktion möchte ich es nicht lösen, da ich sonst ja zuviele Pfade angeben müsste.


Private Sub CommandButton1_Click() 'Dateien überprüfen
    Dim I As Long
    Range("a6:A65536").Clear
    With Application.FileSearch
    .LookIn = "H:\test"
    .SearchSubFolders = True
    .Filename = "*.xls"
    If .Execute() > 0 Then
    For I = 1 To .FoundFiles.Count
    Sheets(1).Cells(65536, 1).End(xlUp).Offset(5, 0) = .FoundFiles(I)
    Next I
    End If
    End With
End Sub

Wer weiß hier Rat?
Gruß Marti
Bild

Betrifft: AW: VB Verzeichnisse auslesen
von: Volker
Geschrieben am: 02.03.2005 09:16:18
Hallo Marti,
du kannst den gefundenen Sting ab dem letzten "\" abschneiden.
Der entspr. Befehl lautet InStrRev und zählt die Position eines Zeichens in einem String von hinten. (vergl. InStr)
Mid gibt den Teilstring ab einer bestimmten Postion, in bestimmter Länge wieder.

Dim I As Long
Dim datei As String
Range("a6:A65536").Clear
With Application.FileSearch
.LookIn = "D:\_AAA\Bilder"
.SearchSubFolders = True
.Filename = "*.xls"
If .Execute() > 0 Then
For I = 1 To .FoundFiles.Count
datei = Mid(.FoundFiles(I), InStrRev(.FoundFiles(I), "\") + 1)
Sheets(1).Cells(65536, 1).End(xlUp).Offset(5, 0) = .FoundFiles(I)
Next I
End If
End With
Gruß
Volker
Bild

Betrifft: AW: VB Verzeichnisse auslesen
von: OttoH
Geschrieben am: 02.03.2005 09:16:40
Hi Marti,
ich habe hier Dein Makro ein wenig ergänzt: nach Deinem MAkro wird die ganze Liste nocheinmal durchlaufen. Der letzte Backslash wird gesucht und der davoriegende Teil abgeschnitten.

Sub xxx()
Dim I As Long
    
Range("a2:A65536").Clear
    
With Application.FileSearch
    .LookIn = "c:\murks"
    .SearchSubFolders = True
    .Filename = "*.*"
    If .Execute() > 0 Then
        For I = 1 To .FoundFiles.Count
            Sheets(1).Cells(65536, 1).End(xlUp).Offset(1, 0) = .FoundFiles(I)
        Next I
    End If
End With
For I = 2 To Application.FileSearch.FoundFiles.Count + 1
    Cells(I, 1) = Dateiname(Cells(I, 1))
Next I
End Sub


Function Dateiname(pfad As String)
Dim position As Long
position = WorksheetFunction.Find("#", WorksheetFunction.Substitute(pfad, "\", "#", Len(pfad) - Len(WorksheetFunction.Substitute(pfad, "\", ""))))
Dateiname = Right(pfad, Len(pfad) - position)
End Function


Gruß OttoH
Bild

Betrifft: AW: VB Verzeichnisse auslesen
von: MichaV
Geschrieben am: 02.03.2005 09:16:56
Hi,
z.B. Dateiname=Right(.FoundFiles(I), Len(.FoundFiles(I)) - Len(.LookIn) - 1)
Gruß! Micha
Bild

Betrifft: AW: VB Verzeichnisse auslesen
von: Slugger
Geschrieben am: 02.03.2005 10:07:08
Hallo, Schonmal vielen Danke für die Hilfe
aus irgeneinem Grund jedoch will das nicht gehen. Ich habe es mit allen 3 vorschlägen probiert. Beim ersten steht es noch alles so das wie es war, beim zweiten bekomme ich eine Debugger Meldung.
Weiß nicht worans liegt.....
gruß
Bild

Betrifft: AW: VB Verzeichnisse auslesen
von: MichaV
Geschrieben am: 02.03.2005 10:10:43
und beim dritten?
Bild

Betrifft: AW: VB Verzeichnisse auslesen
von: Slugger
Geschrieben am: 02.03.2005 10:13:14
Hallo, leider auch nicht. Hier nochmal mit dem 1sten und dritten Vorschlag. Den zweiten hab ich erst grad rausgenommen. Ich habs natürlich nicht mit den Strichen gelassen. Die hab ich schon rausgemacht.

Private Sub CommandButton1_Click() 'Dateien überprüfen
    Dim I As Long
    Dim datei As String
    Range("a6:A65536").Clear
    With Application.FileSearch
    .LookIn = "H:\FT13\BERICHTE\Artikeldatenbank\"
    .SearchSubFolders = True
    .Filename = "*.xls"
    If .Execute() > 0 Then
    For I = 1 To .FoundFiles.Count
    'datei = Mid(.FoundFiles(I), InStrRev(.FoundFiles(I), "\") - 1)         1ster
    'datei = Right(.FoundFiles(I), Len(.FoundFiles(I)) - Len(.LookIn) - 1)  2ter
    Sheets(1).Cells(65536, 1).End(xlUp).Offset(5, 0) = .FoundFiles(I)
    Next I
    End If
    End With
End Sub

Bild

Betrifft: Bitte nochmals um Hilfe o. T.
von: Slugger
Geschrieben am: 02.03.2005 12:27:37
-
Bild

Betrifft: AW: Bitte nochmals um Hilfe o. T.
von: Volker
Geschrieben am: 02.03.2005 12:33:13
Schau Dir noch mal meinen 1. Thread an.
Bild

Betrifft: AW: Bitte nochmals um Hilfe o. T.
von: Slugger
Geschrieben am: 02.03.2005 12:37:02
Hallo,
hab ich ja, funktioniert aber net. Siehe meinen 2 Thread. Ich hab da nen Fehler drin und find den net. Es steht immer noch alles so da wie es war.
Bild

Betrifft: AW: Bitte nochmals um Hilfe o. T.
von: MichaV
Geschrieben am: 02.03.2005 13:07:24
Hi,
sorry, aber
Sheets(1).Cells(65536, 1).End(xlUp).Offset(5, 0) = Right(.FoundFiles(I), Len(.FoundFiles(I)) - Len(.LookIn) - 1)
klappt bei mir 100% ig. Vielleicht hast Du das mit dem datei= falsch verstanden?
Gruß!
Bild

Betrifft: Klappt
von: Slugger
Geschrieben am: 02.03.2005 13:52:03
Hallo,
ja es hat geklappt. Ich hab nicht gecheckt, das ich das hinter dem Sheets Befehl schreiben muss. Ich hab das eine Zeile weiter oben reingeschrieben.
Vielen Dank an MichaV und alle die geholfen haben.
Gruß Slugger
 Bild

Beiträge aus den Excel-Beispielen zum Thema "VB Verzeichnisse auslesen"