2

我正在将 CSV 文件导入 MS Access 中的表中。但是,文件夹中有许多具有相同扩展名的文件,并且名称包括“mm_dd_yyyy”格式的日期。

示例:假设我有两个 CSV 文件:

  • my_music_02_10_2013_01_58_07_PM.csv
  • my_music_02_11_2013_03_04_07_PM.csv

这两个文件都在同一个文件夹myfolder中。我想导入名称包含最新日期的文件。

这是我的代码的一小段:

strPath = "F:\myfolder\"
strFile = Dir(strPath & "my_music" & "*.csv")

如何确定我的“my_music*.csv”中哪个是最新的?

4

1 回答 1

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
于 2013-02-10T13:12:31.443 回答