Самоучитель VBA

         

ПХЯ 13 1 Иерархическая структура объекта FileSearch



пХЯ. 13.1. Иерархическая структура объекта FileSearch

Объект FileSearch возвращается свойством FileSearch объекта Application.

Объект FileSearch имеет следующие два метода.

Execute


Поиск специфицированных файлов.

Синтаксис:

Execute (SortBy, SortOrder, AlwaysAccurate)

Аргументы:

  • SortBy — устанавливает способ сортировки файлов. Допустимые значения: msoSortbyFileName, msoSortbyFileType, msoSortbyLastModif led и msoSortbySize
  • SortOrder — устанавливает порядок сортировки файлов.
    Допустимые значения: 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



Содержание раздела