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"