我正在将CSV文件导入MS Access中的表。 但是,文件夹中有许多文件具有相同的扩展名,名称包含“mm_dd_yyyy”格式的日期。
示例:假设我有两个CSV文件:
两个文件都位于同一文件夹 myfolder 中。我想导入名称中包含最新日期的文件。
以下是我的代码的简短摘录:
strPath = "F:\myfolder\"
strFile = Dir(strPath & "my_music" & "*.csv")
如何确定哪些“my_music * .csv”最新?
答案 0 :(得分:1)
在我看来,关键是从每个文件名中提取日期/时间,以便您可以比较这些文件名以找出哪些是最新的。
这是一个测试下面功能的立即窗口会话。如果找不到表示有效日期的字符串,则该函数返回null。
? DateFromFilename("my_music_02_10_2013_01_58_07_PM.csv")
2/10/2013 1:58:07 PM
? DateFromFilename("my_music_no_date_here.csv")
Null
Public Function DateFromFilename(ByVal pFileName As String) As Variant
Dim strBaseName As String
Dim strDate As String
Dim strPieces() As String
Dim varReturn As Variant
varReturn = Null
strBaseName = Split(pFileName, ".")(0)
'Debug.Print "strBaseName: " & strBaseName
strPieces = Split(strBaseName, "_")
If UBound(strPieces) = 8 Then
strDate = strPieces(4) & "-" & strPieces(2) & _
"-" & strPieces(3) & " " & strPieces(5) & ":" & _
strPieces(6) & ":" & strPieces(7) & " " & strPieces(8)
End If
'Debug.Print "strDate: " & strDate
If IsDate(strDate) Then
varReturn = CDate(strDate)
End If
DateFromFilename = varReturn
End Function