На этом шаге мы рассмотрим назначение и использование этого объекта.
Объект FileSearch обладает функциональными возможностями диалогового окна Открытие документа (Open), отображаемого на экране посредством выбора команды Файл | Открыть (File | Open). Объект FileSearch входит в объект Application и иерархически включает в себя (рисунок 1):
Рис.1. Иерархическая структура объекта FileSearch
Объект FileSearch возвращается свойством FileSearch объекта Application.
Объект FileSearch имеет следующие два метода.
Execute (SortBy, SortOrder, AlwaysAccurate)
Приведем наиболее часто применяемые свойства объекта FileSearch.
Следующий пример позволяет в поле со списком диалогового окна вывести список всех файлов текущей папки.
Private Sub UserForm_Initialize() ListBox1.Clear With Application.FileSearch .Filename = "*.*" .SearchSubFolders = False If .Execute(SortBy:=msoSortByFileName, _ SortOrder:=msoSortOrderAscending) > 0 Then For i = 1 To .FoundFiles.Count ListBox1.AddItem .FoundFiles(i) Next i End If End With End Sub
Результат работы процедуры приведен на рисунке 2.
Рис.2. Список файлов вместе с путями доступа
Данная процедура отображает в поле со списком полные имена файлов, т.е. имя файла и путь. Для того чтобы в списке отображались только имена файлов (без пути), процедуру можно модифицировать следующим образом:
Private Sub UserForm_Initialize() Dim ИмяПапки As String Dim ИмяФайла As String Dim ДлинаПути As Integer ListBox1.Clear ИмяПапки = CurDir ДлинаПути = Len(ИмяПапки) With Application.FileSearch .Filename = "*.*" .SearchSubFolders = False If .Execute(SortBy:=msoSortByFileName, _ sortorder:=msoSortOrderAscending) > 0 Then For i = 1 To .FoundFiles.Count ИмяФайла = Right(.FoundFiles(i), Len(.FoundFiles(i)) _ - ДлинаПути - 1) ListBox1.AddItem ИмяФайла Next i End If End With End Sub
Результат работы процедуры приведен на рисунке 3.
Рис.3. Список файлов без путей доступа
Со следующего шага мы начнем рассматривать пользовательские объекты.