Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / не работает строка With Application.FileSearch / 7 сообщений из 7, страница 1 из 1
05.03.2011, 21:38
    #37151552
PVL11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не работает строка With Application.FileSearch
Добрый вечер,

В подпрограмме поиска файлов не работает строка With Application.FileSearch
Посмотрел - в списке Application. - нет метода Search

Что может быть?

Спасибо.
...
Рейтинг: 0 / 0
05.03.2011, 21:45
    #37151557
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не работает строка With Application.FileSearch
PVL11,

Может быть только одно - Вы счастливый обладатель 2007 офиса или старше. Начиная с 2007 метод FileSearch не поддерживается.
...
Рейтинг: 0 / 0
05.03.2011, 21:55
    #37151562
PVL11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не работает строка With Application.FileSearch
Спасибо. Вы правы - так оно и есть, установлен Office 2007.

А какая функция, метод являются эквивалентом FileSearch?

1. Нужна функция, чтобы можно было в папке найти список файлов по маске.

2. Нужна функция, чтобы найти файлы, содержащие определенный текст.

Может что подскажете?
...
Рейтинг: 0 / 0
05.03.2011, 22:26
    #37151585
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не работает строка With Application.FileSearch
Для поиска файлов по маске можно можно вот это применить:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Sub Перебор_файов_в_папке()
    Dim sFolder As String, sFiles As String, li As Long
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show = False Then Exit Sub
        sFolder = .SelectedItems( 1 )
    End With
    Application.ScreenUpdating = False
    sFiles = Dir(sFolder & Application.PathSeparator & "*.xlsx")'можно искать по части имени файла - "*Книга*.xlsx" - будет перебор всех файлов в выбранной папке, содержащих в имени "Книга"
    Do While sFiles <> ""
        Workbooks.Open sFiles
        'необходимые действия, в том числе поиск нужного текста.
        ActiveWorkbook.Close True
        sFiles = Dir
    Loop
    Application.ScreenUpdating = True
End Sub

Если же нужен перебор еще и всех подпапок, то можно применить рекурсию:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
Sub Просмотр_подпапок()
    Dim sFolder As String
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show = False Then Exit Sub
        sFolder = .SelectedItems( 1 )
    End With
    sFolder = sFolder & IIf(Right(sPath,  1 ) = Application.PathSeparator, "", Application.PathSeparator)
    Call GetSubFolders(sFolder)
End Sub
Private Sub GetSubFolders(sPath)
    Dim sObjName As String
    sObjName = Dir(sPath, vbDirectory)
    Do While sObjName <> ""
        If sObjName <> "." And sObjName <> ".." Then
            'Если это папка, то вызываем функцию саму из себя - т.е. рекурсия
            If vbDirectory = GetAttr(sPath & sObjName) And vbDirectory Then
                GetSubFolders (sPath & sObjName & "\")
            Else
                'Открываем и производим нужные действия, если это файл
                Workbooks.Open sPath & sObjName
            End If
        End If
        sObjName = Dir
    Loop: Exit Sub
    MsgBox "Указанная папка не существует", vbInformation, ""
End Sub
...
Рейтинг: 0 / 0
05.03.2011, 23:03
    #37151623
PVL11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не работает строка With Application.FileSearch
The_Pris, спасибо.
Также просматриваю сейчас в ресурсах форума похожие вопросы на данную тему.
Уже ситуация в целом прорисовывается.
Нужно обобщить, подстроить под свой вариант и пробовать.

А что можно применить для поиска файлов с определенным текстом
...
Рейтинг: 0 / 0
05.03.2011, 23:05
    #37151626
PVL11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не работает строка With Application.FileSearch
The_Prist, извините допустил ошибку в обращении.
...
Рейтинг: 0 / 0
06.03.2011, 00:00
    #37151676
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не работает строка With Application.FileSearch
PVL11А что можно применить для поиска файлов с определенным текстом
Ну, например, вызов шелла ОС и использование FIND... как самое быстрое и независимое от версии ОС и Офиса. Впрочем, есть ещё PowerShell, SilverLight, WSH...
Вообще, есть смысл при работе с "внешними" (по отношению к приложению) ресурсами опираться не на функции конкретной реализации VBA (что мы все почувствовали при переходе на 2007-й), а на использование API/сервисов, гарантированно присутствующих в используемой линейке ОС.
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / не работает строка With Application.FileSearch / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]