Мой код не забирает последний файл в папке - PullRequest
0 голосов
/ 04 января 2019

Проблема проста. Не получаю последний файл. И эта проблема только закралась из-за нового года. В прошлом году все работало нормально

Вот соответствующий код:

 Dim yr As String
 Dim mo As String
 Dim destinationsfn As String
 Dim destinationtsfn
 Dim bdate As String
 Dim fdate As String
 Dim destinationfp As String
 Dim destinationfo As String
 Dim destinationShVar As Worksheet
 Dim destinationTorc As Workbook

 Dim sht As Worksheet

 yr = Format(Date, "yyyy")
 mo = Format(Date, "mm")  

 If mo < 10 Then
 mo = Right(mo, 1)
 End If


 destinationfo = Dir("W:\Product Platforms\Macro\New destination Database\destination Master File\" & yr & "\" & mo & "*", vbDirectory)
 destinationfo = Trim(destinationfo)

 destinationfp = "W:\Product Platforms\Macro\New destination Database\destination Master File\" & yr & "\" & destinationfo & "\"

 destinationsfn = Dir(destinationfp & "*-*.xlsx")

Do While Len(destinationsfn) > 0
fdate = FileDateTime(destinationfp & destinationsfn)
    If fdate > bdate Then
        destinationtsfn = destinationsfn
        bdate = fdate
    End If
    destinationsfn = Dir
Loop   

 On Error Resume Next
 Workbooks.Open (destinationfp & destinationtsfn)

1 Ответ

0 голосов
/ 05 января 2019

fdate и bdate оба объявлены как строки.

Итак, в этой строке:

If fdate > bdate Then

Вы не сравниваете даты с оператором >. Вы сравниваете строки, что означает алфавитный порядок.

Если вы находитесь в США или любой другой стране, которая форматирует даты как "MM/DD/YYY...", и ваши настройки локали в Excel отражают это, тогда строка "12/31/2018" будет оцениваться как больше, чем строка "01/01/2019", из-за алфавитного порядка , Если бы это были даты, было бы наоборот.

Самое простое решение - просто объявить bdate и fdate как вариант или дату.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...