Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 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
  1.  
  2. Module Main
  3.     Public dgwBooks As New DataGridView
  4.  
  5.     Public Function PathDir() As String
  6.         Dim m_txtPathDir
  7.         Main_Form.FolderBrowserDialog1.ShowDialog()
  8.         m_txtPathDir = Main_Form.FolderBrowserDialog1.SelectedPath
  9.         Return m_txtPathDir
  10.     End Function
  11.  
  12.     Public Function GetFiles(ByVal flgSubDir As Boolean, ByVal txtPathDir As String) As String()
  13.         Dim m_txtPathFiles() As String
  14.         If flgSubDir Then
  15.             m_txtPathFiles = System.IO.Directory.GetFiles(txtPathDir, "*.fb2", IO.SearchOption.AllDirectories)
  16.         Else : m_txtPathFiles = System.IO.Directory.GetFiles(txtPathDir, "*.fb2", IO.SearchOption.TopDirectoryOnly)
  17.         End If
  18.         'Stop
  19.         Return m_txtPathFiles
  20.     End Function
  21. End Module

Ответить

Номер ответа: 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-сайт: cargomaster.at.ua/
 Профиль | | #7
Добавлено: 12.05.11 09:51
ну, про поиск файлов вот тут можно глянуть: http://bit.pirit.info/forum/viewtopic.php?t=13299 с кучей обсуждений

Ответить

Номер ответа: 8
Автор ответа:
 Дмитрий Юпатов



Вопросов: 4
Ответов: 457
 Web-сайт: cargomaster.at.ua/
 Профиль | | #8
Добавлено: 12.05.11 09:52
хм... похоже, я тоже несколько протупил, приведя ссылку для дотнета :)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам