Zum vorherigen AbschnittZum nächsten Abschnitt Ein Verzeichnis mit allen Unterverzeichnissen scannen
Wenn man in VB komplexe Verzeichnisbäume auslesen will, ist man oft schlecht bedient. Wenn Sie beispielsweise alle Dateien eines Verzeichnisses und seinen Unterverzeichnissen das Attribut "Versteckt" zuweisen wollen, müssen Sie standardmäßig die genauen Namen der Verzeichnisse wissen. Doch mit Hilfe dieser Funktion können Sie alle Dateien und Verzeichnisse eines Überverzeichnisses scannen und verarbeiten. Ganz ohne API.
Ihre Bewertung:
 12345
    

Bewertung dieses Tipps:  (bewertet von insgesamt 40 Besuchern)

 Zum vorherigen AbschnittZum nächsten Abschnitt Die Funktion
Die folgende Funktion ist recht simpel aufgebaut und kann ganz nach Belieben verändert und angepasst werden. Weiter unten finden Sie Informationen zu den farblich hervorgehobenen Elementen. Diese Subroutine kann sowohl in eine Form als auch in ein Modul, ein Klassenmodul oder jedes andere Objekt gesetzt werden:

Sub ForEachSubPath(StartFolder As String)
   Dim sName As String
   Dim FileName As String
   Dim FolderName As String
   Dim Dirs() As String
   Dim DirsNo As Integer
   Dim i As Integer

   'Eventuell Backslash anhängen
   If Right(StartFolder, 1) <> "\" Then StartFolder = StartFolder & "\"

   'Alle Dateien des Verzeichnisses auflisten
   sName = Dir(StartFolder & "*.*")

   While Len(sName) > 0
      FileName = StartFolder & sName 'Filename enthält dann die aktuelle Datei

      'Hier Ihren Code für jede Datei einsetzen...

      sName = Dir
   Wend

   'Alle Unterverzeichnisse in Array einlesen
   DirsNo = 0
   sName = Dir(StartFolder, vbDirectory)
   While Len(sName) > 0
      If sName <> "." And sName <> ".." Then
         DirsNo = DirsNo + 1
         ReDim Preserve Dirs(DirsNo) As String
         Dirs(DirsNo - 1) = sName
      End If
      sName = Dir
   Wend

   For i = 0 To DirsNo - 1
      FolderName = StartFolder & Dirs(i) & "\"
      ForEachSubPath (FolderName)

      'Hier Ihren Code für jedes Verzeichnis einsetzen...
   Next
End Sub

Hier Ihren Code... =
Hier können Sie Ihren Code einsetzen, der für jede Datei bzw. jedes Verzeichnis einmal aufgerufen wird. Dabei enthält die Variable "FileName" bzw. "FolderName" den Pfad- bzw. Dateinamen der aktuellen Datei oder des aktuellen Verzeichnisses.
ForEachSubPath     =
Wenn Sie die Prozedur umbenennen wollen, müssen Sie diese beiden Werte umbenennen, damit es weiterhin funktioniert.

 Zum vorherigen AbschnittZum nächsten Abschnitt Aufruf
Der Aufruf der Funktion ist ganz simpel:

ForEachSubPath "C:\Programme"

Dieser Aufruf würde bewirken, dass alle Dateien und Unterverzeichnisse des Verzeichnisses "Programme" gescannt werden.



Quellen: SHADOWare.de
©2000 by SHADOWare, Thomas Bachem