Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Prüfen Ordner mit Unterordner ob Datei existiert

Prüfen Ordner mit Unterordner ob Datei existiert
08.09.2018 07:52:09
Olga
Guten Morgen,
leider finde ich nirgendwo einen Ansatz wie ich einen Ordner mit Unterordner auf den Inhalt einer Datei prüfen kann.
z.B.
C:\Muster (Hauptordner)
In diesem Ordner können Ordner vorhanden sein oder nicht
C:\Muster\Test
Wenn ein Ordner existiert soll geprüft werden ob hier eine Datei vorhanden ist.
In diesem Ordner können wieder Unterordner vorhanden sein
C:\Muster\Test\Order1
C:\Muster\Test\Order2 usw.
C:\Muster\Test1
C:\Muster\Test1\Ordner1
C:\Muster\Test1\Ordner2 usw.
Wenn eine Datei im Hauptordner vorhanden ist , egal in welchem Ordner möchte ich nur
Wahr oder Falsch als Ausgabe.
Hoffe ich habe mich verständlich ausgedrückt.
Danke!
Gruß, Olga
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Prüfen Ordner mit Unterordner ob Datei existiert
08.09.2018 10:11:45
Olga
Hallo Hajo,
diese Lösungen findet man sehr oft im web.
Ich möchte nur wissen ob ein im Verzeichnis in allen Ordner ein Datei existiert.
Es soll nur wahr oder falsch ausgegeben werden.
Danke!
Gruß, Olga
AW: Prüfen Ordner mit Unterordner ob Datei existiert
08.09.2018 10:18:27
Hajo_Zi
Hallo Olga,
ja im Code werden alle Dateien ermittelt. Es ist wohl ein Problem den Dateinamen mit Deinem zu vergleichen. Da kann ich dann nicht helfen.
Du kennst Dich ja mit VBA aus, wenn Du solche komplizierten Sachen schon machst.
Gruß Hajo
Anzeige
AW: Prüfen Ordner mit Unterordner ob Datei existiert
08.09.2018 16:52:27
Nepumuk
Hallo Olga,
teste mal:
Option Explicit

Public Sub Olga()
    Const PARENT_FOLDER As String = "C:\Muster\" 'anpassen
    If SerarchFile(PARENT_FOLDER) Then
        Call MsgBox("Mindestens eine Datei wurde gefunden.", vbInformation, "Information")
    Else
        Call MsgBox("Keine Datei gefunden.", vbExclamation, "Hinweis")
    End If
End Sub

Private Function SerarchFile(ByVal pvstrFolder As String) As Boolean
    Dim astrFolders() As String
    Dim ialngIndex As Long
    astrFolders = GetFolders(pvstrFolder)
    For ialngIndex = LBound(astrFolders) To UBound(astrFolders)
        If Dir$(astrFolders(ialngIndex) & "*.*") <> vbNullString Then
            SerarchFile = True
            Exit For
        End If
    Next
End Function

Private Function GetFolders(ByVal pvstrPath As String) As String()
    Dim astrFolders() As String
    Dim strFolder As String, strPath As String
    Dim ialngIndex1 As Long, ialngIndex2 As Long
    Redim astrFolders(0)
    astrFolders(0) = pvstrPath
    strPath = pvstrPath
    Do
        strFolder = Dir$(strPath & "*", vbDirectory)
        Do Until strFolder = vbNullString
            If strFolder <> "." And strFolder <> ".." Then
                If GetAttr(strPath & strFolder) And vbDirectory Then
                    Redim Preserve astrFolders(0 To ialngIndex1)
                    astrFolders(ialngIndex1) = strPath & strFolder & "\"
                    ialngIndex1 = ialngIndex1 + 1
                End If
            End If
            strFolder = Dir$
        Loop
        If ialngIndex1 = ialngIndex2 Then Exit Do
        strPath = astrFolders(ialngIndex2)
        ialngIndex2 = ialngIndex2 + 1
    Loop
    GetFolders = astrFolders
End Function

Gruß
Nepumuk
Anzeige
AW: Prüfen Ordner mit Unterordner ob Datei existiert
08.09.2018 18:28:27
Olga
Hallo Nepumuk,
herzlichen Dank!
Genau so wie ich es mir vorgestellt habe.
Gruß, Olga
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Prüfen eines Ordners auf das Vorhandensein einer Datei mit VBA


Schritt-für-Schritt-Anleitung

Um zu prüfen, ob eine Datei in einem Ordner oder seinen Unterordnern vorhanden ist, kannst Du den folgenden VBA-Code verwenden:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.
  3. Kopiere den folgenden Code in das Modul:
Option Explicit

Public Sub DateiPruefen()
    Const PARENT_FOLDER As String = "C:\Muster\" ' anpassen
    If SerarchFile(PARENT_FOLDER) Then
        MsgBox "Mindestens eine Datei wurde gefunden.", vbInformation, "Information"
    Else
        MsgBox "Keine Datei gefunden.", vbExclamation, "Hinweis"
    End If
End Sub

Private Function SerarchFile(ByVal pvstrFolder As String) As Boolean
    Dim astrFolders() As String
    Dim ialngIndex As Long

    astrFolders = GetFolders(pvstrFolder)

    For ialngIndex = LBound(astrFolders) To UBound(astrFolders)
        If Dir$(astrFolders(ialngIndex) & "*.*") <> vbNullString Then
            SerarchFile = True
            Exit For
        End If
    Next
End Function

Private Function GetFolders(ByVal pvstrPath As String) As String()
    Dim astrFolders() As String
    Dim strFolder As String, strPath As String
    Dim ialngIndex1 As Long, ialngIndex2 As Long

    ReDim astrFolders(0)
    astrFolders(0) = pvstrPath
    strPath = pvstrPath

    Do
        strFolder = Dir$(strPath & "*", vbDirectory)
        Do Until strFolder = vbNullString
            If strFolder <> "." And strFolder <> ".." Then
                If GetAttr(strPath & strFolder) And vbDirectory Then
                    ReDim Preserve astrFolders(0 To ialngIndex1)
                    astrFolders(ialngIndex1) = strPath & strFolder & "\"
                    ialngIndex1 = ialngIndex1 + 1
                End If
            End If
            strFolder = Dir$
        Loop
        If ialngIndex1 = ialngIndex2 Then Exit Do
        strPath = astrFolders(ialngIndex2)
        ialngIndex2 = ialngIndex2 + 1
    Loop
    GetFolders = astrFolders
End Function
  1. Passe den PARENT_FOLDER Pfad an Deinen gewünschten Ordner an.
  2. Führe das Makro DateiPruefen aus, um zu überprüfen, ob eine Datei im angegebenen Ordner oder in seinen Unterordnern vorhanden ist.

Häufige Fehler und Lösungen

  • Fehler: Der Pfad ist ungültig.

    • Stelle sicher, dass der angegebene Pfad korrekt und vorhanden ist.
  • Fehler: Keine Ausgabe.

    • Überprüfe, ob im angegebenen Ordner tatsächlich Dateien vorhanden sind und ob der Code vollständig kopiert wurde.

Alternative Methoden

Eine einfache Möglichkeit, das Vorhandensein einer Datei zu prüfen, besteht darin, die Windows-Suchfunktion zu verwenden. Du kannst auch PowerShell-Skripte nutzen, um ähnliche Aufgaben zu erledigen, falls VBA nicht die gewünschte Flexibilität bietet.


Praktische Beispiele

Wenn Du den obigen Code anpasst, kannst Du spezifische Dateinamen oder -typen überprüfen. Ändere die Zeile:

If Dir$(astrFolders(ialngIndex) & "*.*") <> vbNullString Then

zu:

If Dir$(astrFolders(ialngIndex) & "deinDateiname.txt") <> vbNullString Then

Dadurch wird nur nach einer bestimmten Datei gesucht.


Tipps für Profis

  • Verwende Application.ScreenUpdating = False, um die Bildschirmaktualisierung während der Ausführung des Makros zu deaktivieren, was die Ausführungsgeschwindigkeit erhöht.
  • Füge Protokollierungsfunktionen hinzu, um zu sehen, welche Ordner durchsucht werden.

FAQ: Häufige Fragen

1. Wie kann ich den Code anpassen, um nur nach bestimmten Dateitypen zu suchen? Du kannst die Dir-Funktion mit einem Dateimuster anpassen, z.B. Dir$(astrFolders(ialngIndex) & "*.xlsx") für Excel-Dateien.

2. Was passiert, wenn ein Ordner leer ist? Der Code gibt in diesem Fall "Keine Datei gefunden" zurück, da er keine Dateien findet, die dem Muster entsprechen.

3. Funktioniert dieser Code in Excel 365? Ja, der Code funktioniert in Excel 365 sowie in älteren Versionen, die VBA unterstützen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige