Datei-Suche mit WSH
Dateien mithilfe des WSH suchen
Im Rahmen des Windows Scripting Hosts benötigen wir ein paar Objekte aus dem WSH. Das Erfragen des Windows-Ordners erfolgt sinnvollerweisen direkt in der Funktion, da wir eh auf das WSH zugreifen.
Beispiel:
' Einsatz mit WSH Sub WSH_GetINIFiles() Dim objFso As Scripting.FileSystemObject Dim objFld As Scripting.Folder Dim objFile As Scripting.File Dim asFiles() As String 'Datenfeld für die Ergebnisdateien Dim lCounter As Long 'Zählervariable Set objFso = New Scripting.FileSystemObject Set objFld = objFso.GetSpecialFolder(WindowsFolder) For Each objFile In objFld.Files '// -------------------------------------------------------------------------------- '// Die Funktion GetExtensionName gibt uns die Dateierweiterung zurück, nur kann '// diese mal ini und mal INI sein. Ein direkter Vergleich kann also fehlschlagen! '// Daher nutzen wir die VBA-Funktion StrComp, um ein korrektes Ergebnis zu erhalten '// -------------------------------------------------------------------------------- If StrComp(objFso.GetExtensionName(objFile.Path), "ini", vbTextCompare) = 0 Then '// ---------------------------------------------------------------------------- '// Bei einem Treffer inkrementieren wir die Zählervariable, re-dimensionieren '// das Datenfeld um einen weiteren Eintrag und beschreiben diesen mit dem '// aktuell gefundenen Wert (INI-Datei). '// ---------------------------------------------------------------------------- lCounter = lCounter + 1 ReDim Preserve asFiles(lCounter) asFiles(lCounter - 1) = objFile.Name End If Next 'Ergebnistest - alle Array-Einträge im Direktfenster ausgeben For lCounter = LBound(asFiles) To UBound(asFiles) If Len(asFiles(lCounter)) > 0 Then Debug.Print "Eintrag"; lCounter; ": "; asFiles(lCounter) End If Next End Sub
Diese Variante ist schon deutlich schlanker als die Dir()-Variante. Ein Nachteil ist, dass wir sämtliche Dateien im Windows-Ordner nach deren Endung untersuchen müssen. Der Dir() Befehl nimmt uns diese Arbeit ab – und ist daher in der Regel auch langsamer.