Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Найти файл с наибольшим числом в имени среди заданных файлов - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Найти файл с наибольшим числом в имени среди заданных файлов (Макросы/Sub)
Найти файл с наибольшим числом в имени среди заданных файлов
user0 Дата: Вторник, 23.05.2017, 16:08 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 152
Репутация: 8 ±
Замечаний: 0% ±

Excel 2013, 2016
Доброго времени,

Подскажите, пожалуйста, как найти файл с наибольшим числом в имени (в моем случае дата yymmdd) с определенными символами в имени (aaa,bbb или ccc).
Зеленым, то что должна возвращать функция, желтое то что сейчас возвращает.


[vba]
Код
Public Function FindMostRecentFile(code)

    Dim fpath   As String
    Dim fTXT    As String
    
    fpath = ThisWorkbook.Path & "\test\"
    fTXT = Dir(fpath & "*" & code & ".txt")
    FindMostRecentFile = fTXT

End Function
[/vba]В архиве экселевский файл с функцией и папка тест с несколькими текстовыми файлами-примерами.
К сообщению приложен файл: 9993334.zip (14.2 Kb)


Сообщение отредактировал user0 - Вторник, 23.05.2017, 16:12
 
Ответить
СообщениеДоброго времени,

Подскажите, пожалуйста, как найти файл с наибольшим числом в имени (в моем случае дата yymmdd) с определенными символами в имени (aaa,bbb или ccc).
Зеленым, то что должна возвращать функция, желтое то что сейчас возвращает.


[vba]
Код
Public Function FindMostRecentFile(code)

    Dim fpath   As String
    Dim fTXT    As String
    
    fpath = ThisWorkbook.Path & "\test\"
    fTXT = Dir(fpath & "*" & code & ".txt")
    FindMostRecentFile = fTXT

End Function
[/vba]В архиве экселевский файл с функцией и папка тест с несколькими текстовыми файлами-примерами.

Автор - user0
Дата добавления - 23.05.2017 в 16:08
Manyasha Дата: Вторник, 23.05.2017, 17:15 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
user0, здравствуйте, так подойдет?
[vba]
Код
Public Function FindMostRecentFile(code)

    Dim fpath   As String
    Dim fTXT    As String
    Dim temp As Long, maxDate As Long
    
    fpath = ThisWorkbook.Path & "\test\"
    fTXT = Dir(fpath & "*" & code & ".txt")
    maxDate = 0
    Do While fTXT <> ""
        If fTXT <> "." And fTXT <> ".." Then
            temp = Split(fTXT, "_")(0)
            If temp > maxDate Then maxDate = temp
        End If
        fTXT = Dir
    Loop
    FindMostRecentFile = maxDate & "_" & code & ".txt"

End Function
[/vba]
К сообщению приложен файл: FindMostRecentF.xlsm (15.2 Kb)


ЯД: 410013299366744 WM: R193491431804
 
Ответить
Сообщениеuser0, здравствуйте, так подойдет?
[vba]
Код
Public Function FindMostRecentFile(code)

    Dim fpath   As String
    Dim fTXT    As String
    Dim temp As Long, maxDate As Long
    
    fpath = ThisWorkbook.Path & "\test\"
    fTXT = Dir(fpath & "*" & code & ".txt")
    maxDate = 0
    Do While fTXT <> ""
        If fTXT <> "." And fTXT <> ".." Then
            temp = Split(fTXT, "_")(0)
            If temp > maxDate Then maxDate = temp
        End If
        fTXT = Dir
    Loop
    FindMostRecentFile = maxDate & "_" & code & ".txt"

End Function
[/vba]

Автор - Manyasha
Дата добавления - 23.05.2017 в 17:15
sboy Дата: Вторник, 23.05.2017, 17:43 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 724 ±
Замечаний: 0% ±

Excel 2010
Добрый день.
Почти как у Марины)
[vba]
Код
Option Explicit
Public Function FindMostRecentFile(code)
    Dim fpath   As String
    Dim fTXT    As String
    Dim dateF As Date
    Dim max As Date
    Dim sMax As String
    fpath = ThisWorkbook.Path & "\test\"
    fTXT = Dir(fpath & "*" & code & ".txt")
    max = 0
    Do While fTXT <> ""
    dateF = DateSerial(CInt(Left(fTXT, 2)), CInt(Mid(fTXT, 3, 2)), CInt(Mid(fTXT, 5, 2)))
    If dateF > max Then
    max = dateF
    sMax = fTXT
    End If
    fTXT = Dir
    Loop
    FindMostRecentFile = sMax
End Function
[/vba]
Ваша ошибка в том, что вы файлы не сравнивали, а выводился первый
К сообщению приложен файл: 0313306.xlsm (15.4 Kb)


Яндекс: 410016850021169
 
Ответить
СообщениеДобрый день.
Почти как у Марины)
[vba]
Код
Option Explicit
Public Function FindMostRecentFile(code)
    Dim fpath   As String
    Dim fTXT    As String
    Dim dateF As Date
    Dim max As Date
    Dim sMax As String
    fpath = ThisWorkbook.Path & "\test\"
    fTXT = Dir(fpath & "*" & code & ".txt")
    max = 0
    Do While fTXT <> ""
    dateF = DateSerial(CInt(Left(fTXT, 2)), CInt(Mid(fTXT, 3, 2)), CInt(Mid(fTXT, 5, 2)))
    If dateF > max Then
    max = dateF
    sMax = fTXT
    End If
    fTXT = Dir
    Loop
    FindMostRecentFile = sMax
End Function
[/vba]
Ваша ошибка в том, что вы файлы не сравнивали, а выводился первый

Автор - sboy
Дата добавления - 23.05.2017 в 17:43
user0 Дата: Среда, 24.05.2017, 07:39 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 152
Репутация: 8 ±
Замечаний: 0% ±

Excel 2013, 2016
Manyasha, sboy,
Большое спасибо, работает!
 
Ответить
СообщениеManyasha, sboy,
Большое спасибо, работает!

Автор - user0
Дата добавления - 24.05.2017 в 07:39
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Найти файл с наибольшим числом в имени среди заданных файлов (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!