Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Das FileSearch-Objekt

Fr die Arbeit mit Verzeichnissen stellt VBA die Dir-Funktion zur Verfgung. Mit ihr lsst sich aber nicht so besonders viel anfangen. Wesentlich vielseitiger ist das FileSearch-Objekt. Damit lsst sich beispielsweise nach Verzeichnissen und Dateien suchen und auch die Ausgabe von Detaileigenschaften dieser Objekte ist kein Problem.

Buchtipp

Dieser Beitrag stammt aus der Feder von Bernd Held, Buchautor und Microsoft-MVP. Sein aktuelles Buch mit vielen weiteren Codebeispielen fr alle Gelegenheiten finden Sie hier.

Suchen mit dem FileSearch-Objekt

VBA stellt mit dem FileSearch-Objekt ein sehr mchtiges Objekt fr Such-Funktionen zur Verfgung. Um dieses Objekt zu nutzen, binden Sie die Bibliothek MICROSOFT SCRIPTING RUNTIME in der Entwicklungsumgebung ein. Diese Bibliothek wird dazu bentigt, die Datumsinformationen von Dateien abzufragen. Das vorherige Einbinden einer Bibliothek zur Bereitstellung zustzlicher Befehle heit in der Fachsprache Early-Binding.

Beim folgenden Beispiel soll Ihre Festplatte nach Datenbanken abgesucht werden. Die Ergebnisse der Suche werden in das Direktfenster der Entwicklungsumgebung ausgegeben.

Function DB_Infos(FileName As Variant, _

DatNr As Integer) As String

    Dim fso As Scripting.FileSystemObject

    Set fso = New Scripting.FileSystemObject

    With fso.GetFile(FileName)

        If DatNr = 1 Then DB_Infos = .Name

        If DatNr = 2 Then DB_Infos = .DateCreated

        If DatNr = 3 Then DB_Infos = .DateLastModified

        If DatNr = 4 Then DB_Infos = .Size

    End With

End Function

Sub DBsSuchen()

    With Application.FileSearch

        .NewSearch

        .LookIn = "c:\Test\"

        .FileName = "*.mdb"

        .SearchSubFolders = True

        If .Execute() > 0 Then

            For Each varfile In .FoundFiles

                Debug.Print varfile

                Debug.Print DB_Infos(varfile, 1)

                Debug.Print DB_Infos(varfile, 2)

                Debug.Print DB_Infos(varfile, 3)

                Debug.Print DB_Infos(varfile, 4) & vbLf

            Next varfile

        End If

    End With

End Sub

ber die Eigenschaft Name ermitteln Sie den Namen der jeweils gefundenen Datenbank.

Mithilfe der Eigenschaft DateCreated knnen Sie das Anlagedatum einer Datenbank beziehungsweise auch eines Ordners ermitteln. Die Eigenschaft DateLastModified liefert Ihnen den genauen Zeitpunkt der letzten nderung einer Datenbank. Die Eigenschaft Size liefert Ihnen die Gre in Bytes der Datenbank.

Mithilfe des Objektes FileSearch kann nach bestimmten Dateien in Verzeichnissen gesucht werden. Dieses Objekt bietet einige Eigenschaften an, die angegeben werden knnen. ber die Eigenschaft FileName wird angegeben, nach welchen Dateien gesucht werden soll. Dabei kann die Endung von Access-Dateien (.mdb) mit einem Sternchen angegeben werden. Es knnen somit alle Access-Datenbanken gesucht und gefunden werden, egal, wie diese auch immer heien mgen. ber die Eigenschaft LookIn kann festgelegt werden, wo Access nach den Dateien suchen soll. Hier kann das Laufwerk sowie das Verzeichnis angegeben werden. Dabei darf man nicht den letzten Backslash nach dem Verzeichnisnamen vergessen, da Access hierauf empfindlich reagiert. Sollen noch darunter liegende Verzeichnisse durchsucht werden, dann kann dies ber die Eigenschaft SearchSubFolders festgelegt werden. Diese Eigenschaft wird auf den Wert True gesetzt, wenn die angegebene Suche alle Unterordner im durch die LookIn-Eigenschaft angegebenen Ordner einschlieen soll. Die Methode Execute fhrt die jetzt nher spezifizierte Suche anschlieend aus.

Nach der Suche sind alle gefundenen Dateien im Objekt FoundFiles verzeichnet. Diese gefundenen Dateien werden in einer anschlieenden Schleife nacheinander verarbeitet. Innerhalb der Schleife werden die Dateien ausgewertet, indem die Funktion DB_Info eingesetzt wird. ber den Befehl Debug.Print werden die Dateiinfos im Direktfenster der Entwicklungsumgebung ausgegeben.

© 2003-2015 André Minhorst Alle Rechte vorbehalten.