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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.11.2009, 22:23   #1
Rossoman
Пользователь
 
Регистрация: 14.10.2009
Сообщений: 14
Вопрос Поиск файла FileSystemObject, с учетом даты

Пожалуйста помогите переделать код, объясняю что есть и что надо:

Например у нас есть папка "F:\2009\November\"

а) в этой папке есть много других папок, например, Papka1, Papka2,...,Papka66 "F:\2009\November\Papka66" (названия папок совершенно разные)
б) и в этих папках есть много других, например, Mama, Papa,...,Ded и Baba
"F:\2009\November\Papka66\Mama"

но нас в каждой из папок (а) интересуют только 2, например:
1) "F:\2009\November\Papka1\Skan"
2) "F:\2009\November\Papka1\Uran"
..
1) "F:\2009\November\Papka66\Skan"
2) "F:\2009\November\Papka66\Uran"

то бишь мы ищем в 3 уровне, папки Skan и Uran и только в этих 2 папках мы совершаем поиск файла по маске "mv?ayw0101.txt"

Код:
xDate3 = Format(Date, "yyyy")
xDate4 = Format(Date, "mm")
   If xDate4 = "01" Then xDate4 = "January"
   If xDate4 = "02" Then xDate4 = "February"
   If xDate4 = "03" Then xDate4 = "March"
   If xDate4 = "04" Then xDate4 = "April"
   If xDate4 = "05" Then xDate4 = "May"
   If xDate4 = "06" Then xDate4 = "June"
   If xDate4 = "07" Then xDate4 = "July"
   If xDate4 = "08" Then xDate4 = "August"
   If xDate4 = "09" Then xDate4 = "September"
   If xDate4 = "10" Then xDate4 = "October"
   If xDate4 = "11" Then xDate4 = "November"
   If xDate4 = "12" Then xDate4 = "December"

xxNameIst = ayw0101

Set fso2 = CreateObject("Scripting.FileSystemObject")
Set f = fso2.GetFolder("F:\" & xDate3 & "\" & xDate4 & "\")
    Set s1 = f.SubFolders
    For Each f1 In s1
        Set s2 = fso2.GetFolder(f1.Path).SubFolders
        For Each f2 In s2
        If Right(f2.Path, 4) = "Skan" Or Right(f2.Path, 4) = "Uran" Then Proc (f2.Path)
        Next
    Next

Sub Proc(Path)
Dim myName As String, myPath As String, myPattern As String, b As String
Dim xxxxSize
    myPattern = abcd & "mv?" & xxNameIst & ".txt"
    myPath = Path & Application.PathSeparator
    myName = Dir(myPath & myPattern)
    Do While myName <> ""
    b = myPath & myName
    xxxxSize = FileLen(b)
'ряд действий
    Loop
End Sub
Что нужно?
Нужно переделать код, наверно этот
Код:
Set fso2 = CreateObject("Scripting.FileSystemObject")
Set f = fso2.GetFolder("F:\" & xDate3 & "\" & xDate4 & "\")
    Set s1 = f.SubFolders
    For Each f1 In s1
        Set s2 = fso2.GetFolder(f1.Path).SubFolders
        For Each f2 In s2
        If Right(f2.Path, 4) = "Skan" Or Right(f2.Path, 4) = "Uran" Then Proc (f2.Path)
        Next
    Next
Чтоб сначала искало файл в более поздних папках из пункта (а).
То есть, по дате создания папок пункта (а).

Ибо сейчас выполняется поиск с сортировкой по имени(я так понимаю).

Приведу пример, Papka66 более поздняя, Papka46 менее поздняя, Papka55 самая ранняя, и чтоб производился поиск в порядке: Papka66,Papka46,Papka55

Как это воплотить в жизнь, каким образом сделать эту сортировку...может пузырьком, может чем другим, но я просто не представляю, как это будет выглядеть.

Помогите дописать код пожалуйста. А то долго выполняется скрипт, хотелось бы ускорить.
Rossoman вне форума Ответить с цитированием
Старый 09.11.2009, 23:04   #2
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте Rossoman.
неужели так критично "...чтоб производился поиск в порядке..."?
думаю проблема не в очередности поиска а в Вашем видении предмета, что мешает создать список "найденого" и затем его отсорировать по именам, по датам, ....?
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 10.11.2009, 00:30   #3
Rossoman
Пользователь
 
Регистрация: 14.10.2009
Сообщений: 14
По умолчанию

Мне не важно как моя проблема будет решена, Teslenko_EA, главное чтоб она была решена, сам я не такой программист, и к сожалению, я не смог реализовать мою задачу, поэтому попросил помощи.
Rossoman вне форума Ответить с цитированием
Старый 10.11.2009, 06:14   #4
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
что мешает создать список "найденого" и затем его отсорировать по именам, по датам, ....?
Полностью согласен. Более того, пока мы не просмотрим все папки (файлы), откуда мы узнаем, которая более поздняя (ранняя)?
Посмотрите один из возможных вариантов во вложении. Запустите макрос "Main". Комментарии в коде макроса.
Вложения
Тип файла: rar Книга1.rar (10.0 Кб, 23 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как с помощью FileSystemObject Rossoman Microsoft Office Excel 7 19.10.2009 07:09
составить запрос с учетом времени sinj SQL, базы данных 9 09.06.2009 13:41
Поиск предельно допустимых перемещений объекта вдоль заданного вектора с учетом положения других объектов stюdent Помощь студентам 1 23.12.2008 19:45
"Поиск оптимального пути движения снегоочистительных машин с учетом приоритета дорог" Пролог Kvax Помощь студентам 4 21.12.2008 22:18
Запись файлов в *.тхт с учетом повторяющихся значений Arteom Общие вопросы Delphi 3 03.04.2008 17:26