Tipp 0455 Dateien in vorgegebenen Verzeichnis ermitteln
Autor/Einsender:
Datum:
  Angie
30.07.2005
Entwicklungsumgebung:   Word 2000
Für die Dateisuche in einem vorgegebenen Verzeichnis wird die FileSearch-Methode des Application-Objekts benutzt. Mit dem Parameter
  .NewSearch werden die Suchkriterien auf die Standardeinstellungen zurückgesetzt.
(Die Eigenschaftswerte werden nach jeder durchgeführten Suche beibehalten.)
  .LookIn wird das Verzeichnis festgelegt, in dem gesucht werden soll.
  .SearchSubFolders wird festgelegt, ob auch die Unterverzeichnisse durchsucht werden sollen.
  .FileName wird die Auswahl der Dateiendung festgelegt.
  .FileType wird der Dateityp angegeben, hier Word-Dokumente.
Die Suche beginnt mit der Execute-Methode, in diesem Beispiel nach Namen sortiert. Mit der FoundFiles-Methode wird sowohl die Anzahl (.FoundFiles.Count) als auch der Dateiname inkl. Pfad (.FoundFiles(Index)) der gefundenen Dateien im angegebenen Verzeichnis zurückgegeben.
Weitere Infos zum FileSearch-Objekt können der VBA-Hilfe entnommen werden.
Die folgende Funktion gibt True zurück, wenn Word-Dokumente im vorgegebenen Verzeichnis gefunden wurden, und ein ein-dimensionales Datenfeld, das die Dateinamen inkl. Pfad beinhaltet.
 
Public Function GetWDFiles(ByRef astrWDFiles() As String, _
      ByVal strLookIn As String, Optional fSearchSubfolders _
      As Boolean = False) As Boolean

  Dim nFilesCnt   As Long
  Dim nFile       As Long
  Dim nCounter    As Long
  Dim strFileName As String
  Dim strFile     As String

  On Error Resume Next
  With Application.FileSearch
    .NewSearch
    .LookIn = strLookIn
    .SearchSubFolders = fSearchSubfolders
    .FileName = ".doc"
    .FileType = msoFileTypeWordDocuments

    If .Execute(SortBy:=msoSortByFileName, _
            SortOrder:=msoSortOrderAscending, _
            AlwaysAccurate:=True) > 0 Then

      nFilesCnt = .FoundFiles.Count
      ReDim astrWDFiles(0 To nFilesCnt - 1)

      nCounter = -1
      For nFile = 1 To nFilesCnt
        strFileName = .FoundFiles(nFile)
        strFile = Dir$(strFileName)
        If Len(strFile) > 0 And Left$(strFile, 1) <> "~" Then
          nCounter = nCounter + 1
          astrWDFiles(nCounter) = strFileName
        End If
      Next

      If nCounter > -1 Then
        ReDim Preserve astrWDFiles(0 To nCounter)
        GetWDFiles = True
      End If
    End If
  End With
  On Error GoTo 0
End Function
 
Beispiel-Aufruf
Die obige Funktion zur Ermittlung von Word-Dokumenten in einem vorgegebenen Verzeichnis kann in vielen Anwendungen eingesetzt werden, beispielsweise um die Dateinamen in einer ListBox/ComboBox aufzulisten (Excel-Beispiel), oder aber auch um Dokumente zu bearbeiten.
In folgendem Beispiel werden lediglich zur Demo die Dateinamen im Direktfenster ausgegeben.
 
Public Sub Demo()
  Dim strPath       As String
  Dim astrWDFiles() As String
  Dim nFile         As Long

  strPath = "c:\temp"

  If Len(Dir$(strPath, vbDirectory)) > 0 Then
    If GetWDFiles(astrWDFiles(), strPath, True) Then
      For nFile = 0 To UBound(astrWDFiles)
        Debug.Print astrWDFiles(nFile)
      Next
      Erase astrWDFiles

    Else
      MsgBox "Keine Word-Dokumente im Verzeichnis " & _
            vbCrLf & strPath & vbCrLf & "gefunden!", _
            vbInformation, "VB-fun-Demo"
    End If
  Else
    MsgBox "Das Verzeichnis " & vbCrLf & strPath & vbCrLf & _
          "existiert nicht!", vbInformation, "VB-fun-Demo"
  End If
End Sub
 
Weitere Links zum Thema
Dateisuche mit dem FileSearch-Objekt
Hinweis
Die im Download befindliche *.bas-Datei kann in Word im VB-Editor importiert werden.

Windows-Version
95
98
ME
NT
2000
XP
Vista
Win 7
Word-Version
95
97
2000
2002 (XP)
2003
2007
2010


Download  (2 kB) Downloads bisher: [ 553 ]

Vorheriger Tipp Zum Seitenanfang Nächster Tipp

Startseite | Projekte | Tutorials | API-Referenz | VB-/VBA-Tipps | Komponenten | Bücherecke | VB/VBA-Forum | VB.Net-Forum | DirectX-Forum | Foren-Archiv | DirectX | VB.Net-Tipps | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Samstag, 30. Juli 2011