Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Alle Dateinamen eines Ordners durchsuchen

Alle Dateinamen eines Ordners durchsuchen
04.10.2015 12:46:22
Barbara
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

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Alle Dateinamen eines Ordners durchsuchen
05.10.2015 23:26:17
Barbara
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

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

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

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

Anzeige
AW: Alle Dateinamen eines Ordners durchsuchen
09.10.2015 21:46:46
Barbara
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

AW: Alle Dateinamen eines Ordners durchsuchen
04.10.2015 14:02:42
ransi
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

Anzeige
AW: Alle Dateinamen eines Ordners durchsuchen
06.10.2015 22:25:02
Barbara
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
:)
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige