Объект FileSearch
Объект FileSearch обладает функциональными возможностями диалогового окна Открытие документа (Open), отображаемого на экране_посредством выбора команды Файл, Открыть (File, Open). Объект FileSearch входит в объект Application и иерархически включает в себя (рис. 13.1):
Рис. 13.1. Иерархическая структура объекта FileSearch
Объект FileSearch возвращается свойством FileSearch объекта Application.
Объект FileSearch имеет следующие два метода.
Execute |
Поиск специфицированных файлов. Синтаксис: Execute (SortBy, SortOrder, AlwaysAccurate) Аргументы: Допустимые значения: msoSortOrderAscending и msoSort Order Descending AiwaysAccurate — допустимые значения: True (поиск среди измененных файлов) и False (в противном случае) |
| |||
NewSearch |
Устанавливает критерии, используемые при поиске по умолчанию | ||||
Приведем наиболее часто применяемые свойства объекта FileSearch.
FileName |
Устанавливает имя файла для поиска. Допустимо использование символов (*) и (?) | ||||
FileType |
Задает тип файла для поиска. Допустимые значения: msoFileTypeAHFiles, msoFileTypeBinders, msoFile-TypeDatabases, msoFileTypeExcelWorkbooks, msoFi-leTypeOff ice Files, ms о FileType Power Point Presentations, msoFileTypeTemplates И msoFileTypeWordDocuments | ||||
Lookln |
Задает папку для поиска файла | ||||
SearchSubFolders |
Допустимые значения: True (поиск также проводить в поддиректориях) и False (в противном случае) | ||||
Следующий пример позволяет в поле со списком диалогового окна вывести список всех файлов текущей папки:
Private Sub UserForm_Initialize()
ComboBoxl.Clear With Application.FileSearch
.FileName = "*.xls" .SearchSubFolders = False
If .Execute(SortBy:=msoSortByFileName,
sortorder:=msoSortOrderAscending) > 0 Then
For i = 1 To .FoundFiles.Count
ComboBoxl.Addltem .FoundFiles(i)
Next i
End If
End With
End Sub
Предыдущая программа отображает в поле со списком полные имена файлов, т. е. имя файла и путь. Для того чтобы в списке отображались только имена файлов (без пути), программу необходимо модифицировать следующим образом:
Private Sub UserForm_Initialize()
Dim ИмяПапки As String
Dim ИмяФайла As String
Dim ДлинаПути As Integer
ComboBoxl.Clear ИмяПапки = CurDir ДлинаПути = Len(ИмяПапки)
With Application.FileSearch .FileName = "*.xls"
.SearchSubFolders = False
If .Execute (SortBy:=msoSortByFileName,
sortorder:=msoSortOrderAscending) > 0 Then
For i = 1 To .FoundFiles.Count
ИмяФайла = Right(.FoundFiles(i), Len(.FqundFiles(i))
- ДлинаПути - 1) ComboBoxl.Addltem ИмяФайла
Next i
End If
End With
End Sub