Alle Dateinamen eines Ordners durchsuchen

Bild

Betrifft: Alle Dateinamen eines Ordners durchsuchen
von: Barbara
Geschrieben am: 04.10.2015 12:46:22

Hallo
eine vielleicht ungewöhnliche Frage:
Wie kann man alle Ordner eines ausgewählten Ordners durchgehen und nach Dateinamen auf eine bestimmte Eigenschaft untersuchen und diese dann in einer Tabelle auflisten?
Zuerst soll der Anwender ein Verzeichnis auswählen. (Das ist schon mal die erste Hürde für mich)
Dann soll das Makro für jeden darin enthaltenen Ordner (=Kundenordner)
(Diese einzeln durchgehen ist schon die nächste Hürde)
alle darin enthaltenen Dateinamen nach 6-stelligen Zahlen (=Artikelnummern), die mit "25" beginnen, durchsuchen und diese Zahlen in einer zweispaltigen Tabelle auflisten, also für jede gefundene Artikelnummer eine neue Zeile.
Erste Spalte: Kundenordnername
Zweite Spalte: gefundene Artikelnummer ("25...")
Uff.
Könnt Ihr mir bitte helfen?
LG,
Barbara

Bild

Betrifft: AW: Alle Dateinamen eines Ordners durchsuchen
von: Hajo_Zi
Geschrieben am: 04.10.2015 13:02:11
Hallo Babara,
mal ein Ansatz, der Deinen Bedingungen noch angepasst werden muss.
http://hajo-excel.de/chCounter3/getfile.php?id=21


Bild

Betrifft: AW: Alle Dateinamen eines Ordners durchsuchen
von: Barbara
Geschrieben am: 05.10.2015 23:26:17
Hallo,
bin überwältigt von Euren interessanten Antworten, die ich aber leider nicht auf Anhieb verstehe, weil meine VBA-Kenntnisse nicht so gut sind.
Danke sehr.
Sitze schon einige Stunden beim Durcharbeiten und deshalb antworte ich erst jetzt.
Hajo,
Dein Beispiel kann ich einigermaßen nachvollziehen. Doch eine Frage hätte ich mal vorerst:
Datei "ordner_auslesen_hyperlink2007_64.xlsm"
Formular "frm_Verzeichnis_auslesen"
programm "Private Sub SearchInFolder"
Da kommt "DoEvents" zwei Mal vor.
Was bedeutet das? Was wird damit bewirkt? Was, wenn das nicht da steht?
Mit der Hilfe komme ich da nicht weiter.
LG,
Barbara

Bild

Betrifft: AW: Alle Dateinamen eines Ordners durchsuchen
von: Hajo_Zi
Geschrieben am: 06.10.2015 06:04:02
Hallo Babara,
DoEvents ist Aktualisierung Bildschirm.
Gruß Hajo

Bild

Betrifft: AW: Alle Dateinamen eines Ordners durchsuchen
von: Barbara
Geschrieben am: 06.10.2015 22:28:23
Ok, danke, Hajo

Bild

Betrifft: AW: Alle Dateinamen eines Ordners durchsuchen
von: Sepp
Geschrieben am: 04.10.2015 13:23:42
Hallo Barbara,
ein Beispiel.
https://www.herber.de/bbs/user/100577.xlsm

Gruß Sepp


Bild

Betrifft: AW: Alle Dateinamen eines Ordners durchsuchen
von: Barbara
Geschrieben am: 09.10.2015 21:46:46
Auch Dir, vielen Dank, Sepp.
Wenn auch etwas umfangreich und kompliziert das ganze Beispiel, aber die Anpassung an meine Ausgangssituation hat mir geholfen.
Danke und LG

Bild

Betrifft: AW: Alle Dateinamen eines Ordners durchsuchen
von: ransi
Geschrieben am: 04.10.2015 14:02:42
Hallo Barabara,
Gibt die gefundenen Dateien in A1:B? aus.
Zum Testen:

Option Explicit



Public Sub MACHS()
    Dim Verz
    Dim objFileDialog As Object
    Dim WSHShell As Object
    Dim arr As Variant
    Dim L As Long
    Dim out As Variant
    Dim objExec As Object
    Dim Datei As Object
    Dim Element As Variant
    Dim FSO As Object
    Set objFileDialog = Application.FileDialog(msoFileDialogFolderPicker)
    With objFileDialog 'Verzeichnisauswahl
        .Title = "Irgendwas...."
        .InitialFileName = "C:\" 'oder was auch immer
        If .Show = -1 Then 'es wurde ein Verzeichniss ausgewählt
            Verz = .SelectedItems(1) 'Zur weiteren Verwendung
            Set FSO = CreateObject("Scripting.FilesystemObject")
            Set WSHShell = CreateObject("WScript.Shell")
            Set objExec = WSHShell.Exec("Where /R " & Verz & " *25*.xls") 'Findet alle .xls* in verz und Unterverzeichnissen..die mit "25" beginnen
            arr = Split(objExec.stdout.readall, vbCrLf)
            Redim out(1 To UBound(arr), 1 To 2)
            Set objExec = Nothing
            For Each Element In arr
                If Element <> "" Then
                    Set Datei = FSO.getfile(Element)
                    If Datei Like "*25####*.xls*" Then 'nach 6-stelligen Zahlen (=Artikelnummern), die mit "25" beginnen
                        L = L + 1
                        out(L, 1) = Datei.parentfolder.Name
                        out(L, 2) = Datei.Name
                    End If
                End If
            Next
            If L >= 1 Then Range("A1:B" & L) = out 'ausgeben
        End If
    End With
End Sub


ransi

Bild

Betrifft: AW: Alle Dateinamen eines Ordners durchsuchen
von: Barbara
Geschrieben am: 06.10.2015 22:25:02
Hi ransi:
Zum Testen komme ich leider nicht, wegen Felhermeldung:
'Hier hakt es "Laufzeitfehler 7: Nicht genügend Speicher"
ReDim out(1 To UBound(arr), 1 To 2)
LG,
Barbara
:)

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Alle Dateinamen eines Ordners durchsuchen"