Herbers Excel-Forum - das Archiv

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
Excel-Beispiele zum Thema "VB Verzeichnisse auslesen"
Unterverzeichnisse mit Inhalt löschen Alle Dateien eines Verzeichnisses drucken
Ordner eines Verzeichnisses in ListBox übernehmen Dateinamen eines Verzeichnisses als HTML-Datei
Ordnernamen eines Verzeichnisses in Zelle einfügen Arbeitsmappen eines Verzeichnisses ändern
Daten aus allen Dateien eines Verzeichnisses zusammenführen Alle Arbeitsmappen eines Verzeichnisses öffnen
Hyperlinks zu allen Excel-Dateien eines Verzeichnisses erstellen Dateien in einem Verzeichnis und Unterverzeichnissen suchen