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

       

Объект FileSearch



Объект FileSearch обладает функциональными возможностями диалогового окна Открытие документа (Open), отображаемого на экране_посредством выбора команды Файл, Открыть (File, Open). Объект FileSearch входит в объект Application и иерархически включает в себя (рис. 13.1):

  • Семейство FoundFiles, которое является списком всех файлов, возвращаемых в результате поиска

  • Семейство PropertyTests, которое является списком всех критериев поиска

    Рис. 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


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