![]() |
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
|
|
|
|
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
|
|
|
|
|
|
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: [ 549 ]
|
|
|