![]() |
Tipp 0449
|
Dateien in vorgegebenen Verzeichnis ermitteln
|
 |
|
Autor/Einsender: Datum: |
|
Angie 11.05.2005 |
|
Entwicklungsumgebung: |
|
Excel 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 Excel-Arbeitsmappen.
|
|
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 Excel-Arbeitsmappen im vorgegebenen Verzeichnis
gefunden wurden, und ein ein-dimensionales Datenfeld, das die Dateinamen inkl. Pfad beinhaltet.
|
|
|
Public Function GetXLFiles(ByRef astrXLFiles() 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
On Error Resume Next
With Application.FileSearch
.NewSearch
.LookIn = strLookIn
.SearchSubFolders = fSearchSubfolders
.FileName = ".xls"
.FileType = msoFileTypeExcelWorkbooks
If .Execute(SortBy:=msoSortByFileName, SortOrder:= _
msoSortOrderAscending, AlwaysAccurate:=True) > 0 Then
nFilesCnt = .FoundFiles.Count
ReDim astrXLFiles(0 To nFilesCnt - 1)
nCounter = -1
For nFile = 1 To nFilesCnt
strFileName = .FoundFiles(nFile)
If Len(Dir$(strFileName)) > 0 Then
nCounter = nCounter + 1
astrXLFiles(nCounter) = strFileName
End If
Next
If nCounter > -1 Then
ReDim Preserve astrXLFiles(0 To nCounter)
GetXLFiles = True
End If
End If
End With
On Error GoTo 0
End Function
|
|
|
|
|
|
Public Sub Demo()
Dim strPath As String
Dim astrXLFiles() As String
Dim nFile As Long
strPath = ThisWorkbook.Path
If Len(Dir$(strPath, vbDirectory)) > 0 Then
If GetXLFiles(astrXLFiles(), strPath, True) Then
For nFile = 0 To UBound(astrXLFiles)
Debug.Print astrXLFiles(nFile)
Next
Erase astrXLFiles
Else
MsgBox "Keine Excel-Arbeitsmappen 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 Excel (auch in Word und PowerPoint)
im VB-Editor importiert werden.
|
|
Windows-Version |
95 |
 |
|
98 |
 |
|
ME |
 |
|
NT |
 |
|
2000 |
 |
|
XP |
 |
|
Vista |
 |
|
Win
7 |
 |
|
|
Excel-Version |
95 |
 |
|
97 |
 |
|
2000 |
 |
|
2002
(XP) |
 |
|
2003 |
 |
|
2007 |
 |
|
2010 |
 |
|
|
|
Download (2
kB)
|
Downloads bisher: [ 1199 ]
|
|
|