Excel 我的代码没有拾取文件夹中的最新文件

Excel 我的代码没有拾取文件夹中的最新文件,excel,vba,Excel,Vba,问题很简单。没有获取最新的文件。而这个问题只是因为新年才慢慢出现的。去年它运转良好 以下是相关代码: 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 destina

问题很简单。没有获取最新的文件。而这个问题只是因为新年才慢慢出现的。去年它运转良好

以下是相关代码:

 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)
Dim yr作为字符串
暗墨如弦
模糊目标fn作为字符串
暗淡的目的地
作为字符串的Dim bdate
将fdate设置为字符串
Dim destinationfp作为字符串
Dim destinationfo作为字符串
Dim destinationShVar As工作表
Dim destinationTorc作为工作簿
将sht变暗为工作表
yr=格式(日期,“yyyy”)
mo=格式(日期,“mm”)
如果mo<10,则
mo=右(mo,1)
如果结束
destinationfo=Dir(“W:\Product Platforms\Macro\New destination Database\destination Master File\”&yr&“\”&mo&“*”,vbDirectory)
destinationfo=修剪(destinationfo)
destinationfp=“W:\Product Platforms\Macro\New destination Database\destination Master File\”&yr&“\”&destinationfo&“\”
destinationsfn=Dir(destinationfp&“*-*.xlsx”)
Do While Len(目标fn)>0
fdate=FileDateTime(destinationfp&destinationsfn)
如果fdate>bdate,则
destinationsfn=destinationsfn
bdate=fdate
如果结束
目的地fn=Dir
环
出错时继续下一步
工作簿.打开(destinationfp和DestinationSFN)

fdate
bdate
都声明为字符串

因此,在这一行:

如果fdate>bdate,则

您没有将日期与
运算符进行比较。您正在比较字符串,这意味着考虑了字母顺序

如果您在美国或任何将日期格式设置为“MM/DD/YYY…”
的国家/地区,并且您在Excel中的区域设置反映了这一点,则字符串
“12/31/2018”
将根据字母顺序评估为大于字符串
“01/01/2019”
。如果它们是日期,则情况正好相反


最简单的修复方法可能是将
bdate
fdate
声明为变量或日期。

fdate
bdate
都声明为字符串

因此,在这一行:

如果fdate>bdate,则

您没有将日期与
运算符进行比较。您正在比较字符串,这意味着考虑了字母顺序

如果您在美国或任何将日期格式设置为“MM/DD/YYY…”
的国家/地区,并且您在Excel中的区域设置反映了这一点,则字符串
“12/31/2018”
将根据字母顺序评估为大于字符串
“01/01/2019”
。如果它们是日期,则情况正好相反


最简单的修复方法可能是将
bdate
fdate
声明为变量或日期。

您尝试过调试吗?它找到了正确的源文件夹吗?是的,调试和它只拾取了1月2日而不是1月4日的文件吗?它的pikcking up 1-2.xlsx而不是1-4 xlsx是FileDateTime的结果,正如您所期望的那样?尝试在dir循环中添加
Debug.print destinationsfn,fdate
,并检查输出
fdate
bdate
都是这一行的字符串
如果fdate>bdate,那么
(因为它们被声明为)。您不应该将它们转换为行上比较之前/期间的日期吗?这有区别吗?可以使用
cdate()
进行转换。您尝试过调试吗?它找到了正确的源文件夹吗?是的,调试和它只拾取了1月2日而不是1月4日的文件吗?它的pikcking up 1-2.xlsx而不是1-4 xlsx是FileDateTime的结果,正如您所期望的那样?尝试在dir循环中添加
Debug.print destinationsfn,fdate
,并检查输出
fdate
bdate
都是这一行的字符串
如果fdate>bdate,那么
(因为它们被声明为)。您不应该将它们转换为行上比较之前/期间的日期吗?这有区别吗?可以使用
cdate()
进行转换。