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()
进行转换。