Страница: 1 |
Страница: 1 |
Вопрос: Как переделать поиск файлов??? 2003vs2007
Добавлено: 03.05.11 23:12
Автор вопроса: Василий
Есть следующий код, суть которого перебор файлов во вложенных подкаталогах и обработка найдённых файлов. Но с некоторых пор пересталась поддерживаться функция "Application.FileSearch". Что делать не совсем понятно. Может есть среди читателей энтузиасты, способные переделать этот фрагмент?
'проведём поиск файлов в указанном каталоге с последующей обработкой последних
Set fs = Application.FileSearch
With fs
.LookIn = Default_Path
.Filename = "*.*"
.SearchSubFolders = ThisWorkbook.Sheets("Управление").CheckBox1
Application.StatusBar = "Производится поиск файлов..."
If .Execute > 0 Then
StartTime = Time
For i = 1 To .FoundFiles.Count
'===разобъём полный путь на путь и имя файла====
ii = 0
While InStr(ii + 1, .FoundFiles(i), "\") <> 0
ii = InStr(ii + 1, .FoundFiles(i), "\")
If ii <> 0 Then pos = InStr(ii, .FoundFiles(i), "\")
Wend
MyFilePath = Mid(.FoundFiles(i), 1, pos)
MyFile = Mid(.FoundFiles(i), pos + 1, Len(.FoundFiles(i)) - pos)
'===============================================
Time2 = (Time - StartTime)
Application.StatusBar = "Обрабатывается " & i & " из " & .FoundFiles.Count & _
" (прошло " & FormatDateTime(Time2, 3) & _
" осталось " & FormatDateTime((.FoundFiles.Count * (Time2 / i) - Time2), 3) & ")"
' & " - в среднем по " & (Time2 / i) & " сек."
If Format(ThisWorkbook.Name, "<") <> MyFile Then
Call LOOK_FILE(MyFilePath, MyFile)
Else
Say (ThisWorkbook.FullName & " - пропущен" & Chr(10))
End If
Next i
Else
MsgBox Default_Path & " не содержит файлов.", vbInformation, "Balancer"
End If
End With
Ответы
Всего ответов: 8
Номер ответа: 1
Автор ответа:
Bond
Вопросов: 0
Ответов: 1
Профиль | | #1
Добавлено: 04.05.11 16:43
Для обработки файлов в папке рекомендую использовать следующий подход:
fldr = "C:\Folder_with_files\" ' папка, где лежат файлы
Set ff = CreateObject("Scripting.FileSystemObject"
Set f = ff.GetFolder(fldr)
Set Fls = f.Files
For Each fl In Fls
'' какие-то действия с объектом
Next fl
Номер ответа: 2
Автор ответа:
Василий
Вопросов: 1
Ответов: 2
Профиль | | #2
Добавлено: 05.05.11 01:24
Благодарю! Туда же надо добавить рекурсию, так? Как это сделать?
Номер ответа: 3
Автор ответа:
sergey
Вопросов: 1
Ответов: 6
Профиль | | #3
Добавлено: 07.05.11 22:07
Номер ответа: 4
Автор ответа:
sergey
Вопросов: 1
Ответов: 6
Профиль | | #4
Добавлено: 07.05.11 22:13
3+
Первая функция возвращает путь к папке, которую выбираешь. Вторая функция возвращает массив файлов (путь), удовлетворяющих заданным условиям поиска. В зависимости от значения flgSubDir поиск идет или только в корне или во всех вложенных папках.
Номер ответа: 5
Автор ответа:
sergey
Вопросов: 1
Ответов: 6
Профиль | | #5
Добавлено: 07.05.11 22:24
затупил, этож ВБА!
тогда вот про рекурсию http://www.vbnet.ru/faq/showtopic.asp?id=36
Номер ответа: 6
Автор ответа:
Василий
Вопросов: 1
Ответов: 2
Профиль | | #6
Добавлено: 12.05.11 01:44
Спасибо !!
Номер ответа: 7
Автор ответа:
Дмитрий Юпатов
Вопросов: 4
Ответов: 457
Web-сайт:
Профиль | | #7
Добавлено: 12.05.11 09:51
ну, про поиск файлов вот тут можно глянуть: http://bit.pirit.info/forum/viewtopic.php?t=13299 с кучей обсуждений
Номер ответа: 8
Автор ответа:
Дмитрий Юпатов
Вопросов: 4
Ответов: 457
Web-сайт:
Профиль | | #8
Добавлено: 12.05.11 09:52
хм... похоже, я тоже несколько протупил, приведя ссылку для дотнета