Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.02.2013, 09:38   #1
parshin
Пользователь
 
Регистрация: 13.03.2012
Сообщений: 20
По умолчанию Поиск файла

Как организовать поиск нужного файла в Excel 2007? Application.FileSearch не работат, выдет ошибку "Object doesn't support this action".

Последний раз редактировалось parshin; 28.02.2013 в 09:43.
parshin вне форума Ответить с цитированием
Старый 28.02.2013, 09:51   #2
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
Сообщение от parshin Посмотреть сообщение
Как организовать поиск нужного файла в Excel 2007? Application.FileSearch не работат, выдет ошибку "Object doesn't support this action".
А откуда у Application появился такой метод? может вы с FindFile спутали?
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 28.02.2013, 09:56   #3
parshin
Пользователь
 
Регистрация: 13.03.2012
Сообщений: 20
По умолчанию

В Excel 2003 все это добро работает, пытаюсь переделать на 2007 Да вот пример из help 2007:
With Application.FileSearch
.NewSearch
.LookIn = "C:\My Documents"
.SearchSubFolders = True
.FileName = "run"
.TextOrProperty = "San*"
.MatchAllWordForms = True
.FileType = msoFileTypeAllFiles
If .Execute() > 0 Then
MsgBox "There were " & .FoundFiles.Count & _
" file(s) found."
For i = 1 To .FoundFiles.Count
MsgBox .FoundFiles(i)
Next i
Else
MsgBox "There were no files found."
End If
End With

Последний раз редактировалось parshin; 28.02.2013 в 09:59.
parshin вне форума Ответить с цитированием
Старый 28.02.2013, 10:09   #4
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

http://forum.developing.ru/showthrea...BA-Office-2007

вот тут почитайте, а вот тут описана альтернатива:

http://www.cyberforum.ru/vba/thread327224.html
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 28.02.2013, 10:14   #5
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

В Excel 2007 метод FileSearch заблокирован разработчиками Microsoft. Альтернативного встроенного варианта нет. Либо используйте цикл Do... While...Loop с возможностью ввода маски для поиска файолв, либо объект FileSystemObject. Но, так или иначе, поиск по наличию определенного текста не открывая файлов отсутствует.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 28.02.2013, 10:43   #6
parshin
Пользователь
 
Регистрация: 13.03.2012
Сообщений: 20
По умолчанию

большое спасибо.
parshin вне форума Ответить с цитированием
Старый 28.02.2013, 16:48   #7
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

Вот такой вариант с использованием программы "cmd".
Код:
Sub Procedure_2()
    
    'Две кавычки формируют одну кавычку.
    'Адрес нужно заключить в кавычки, т.к. если в имени папки или файла
        'будут пробелы, то результата не будет получено.
    Const mySearchFile As String = """C:\Users\User\Desktop\*.docx"""
    Const myTargetFile As String = """C:\Users\User\Desktop\Файл-Назначение.txt"""
    Dim myCommand As String
    
    'Нужно подключить библиотеку:
        'Tools - References... - Windows Script Host Object Model.
    'Без подключения библиотеки: "WScript.Shell".
    Dim myShell As New IWshRuntimeLibrary.WshShell
    'Без подключения библиотеки: "Scripting.FileSystemObject".
    Dim myFSO As New IWshRuntimeLibrary.FileSystemObject
    Dim myFile As IWshRuntimeLibrary.TextStream
    
    '"cmd.exe" - запуск программы "cmd".
    '"/u" - используется, чтобы текст переводился в Unicode-формат (это нужно, чтобы
        'чтобы текст на русском языке не искажался).
    '"/c" - используется, чтобы автоматически закрыть программу "cmd".
    '"dir" - используется, чтобы получить список файлов и папок
        'в указанном месте компьютера.
    '"/b" - используется, чтобы в текстовый файл вывелись только пути
        'и имена файлов без какой-то служебной информации.
    '"/s" - используется, чтобы поиск осуществлялся во всех вложенных папках.
    '">" - используется, чтобы поместить данные из программы "cmd" в файл.
    myCommand = "cmd.exe /u /c dir " & mySearchFile & " /b /s > " & myTargetFile
    'Вместо "cmd.exe" пишут вот так ещё "Environ("COMSPEC")".
    'myCommand = Environ("COMSPEC") & " /u /c dir " & mySearchFile & " /b /s > " & myTargetFile
    
    '"Command" - командная строка.
    '"WindowStyle" - вид окна запускаемой программы.
        '0 - значит - не отображать окно.
    '"WaitOnReturn" - ждём, когда программа сделает то, что нужно и закроется.
        'Это нужно для того, чтобы VBA-код продолжил своё выполнение
        'только тогда, когда будет получен список искомых файлов и папок.
    myShell.Run Command:=myCommand, WindowStyle:=0, WaitOnReturn:=True

    'Файл нужно открывать через "File System Object", 
        'иначе текст на русском языке будет искажён.
    Set myFile = _
        myFSO.OpenTextFile(Filename:=myTargetFile, IOMode:=ForReading, Create:=False, Format:=TristateUseDefault)
    
End Sub

Примечание

Дополнительные параметры команды "dir" можно так посмотреть:
  1. Пуск - Выполнить - cmd - нажмите Enter. Откроется программа "cmd";
  2. введите и нажмите клавишу Enter:
    dir /?
Правда в этой справке нет информации по параметру "/s". В справке есть параметр "/s", но этот параметр относится к атрибутам.

Последний раз редактировалось Скрипт; 28.02.2013 в 22:33.
Скрипт вне форума Ответить с цитированием
Старый 28.02.2013, 17:27   #8
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Посмотрите ещё один удобный способ получения списка файлов в папке:
http://excelvba.ru/code/FilenamesCollection
(самый популярный макрос у меня на сайте, по количеству просмотров)
EducatedFool вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск файла rust-02 Мультимедиа в Delphi 3 02.09.2010 06:06
Поиск файла plusstick Microsoft Office Access 4 22.02.2010 11:09
поиск файла Mihailhome Общие вопросы Delphi 1 25.05.2009 18:03
Поиск файла Cpluser Общие вопросы C/C++ 4 03.03.2009 11:30
Поиск файла БД D-mon БД в Delphi 12 29.05.2008 13:26