Excel函数,搜索最大通配符(*)

时间:2016-05-18 14:26:57

标签: excel excel-vba csv vba

我有以下功能搜索文件路径,修改文件日期。但是,如果我的文件末尾有一个通配符,则此函数返回12:00。 这是因为带有通配符的文件在路径中有很多选项,并且不确定返回什么值。

如何告诉此函数获取max通配符文件路径名。

例如:*Stack/Over/Flow_*.csv* (a1)将返回12:00(a2),因为实际文件夹将包含*Stack/Over/Flow_1.csv*, *Stack/Over/Flow_2.csv*, *Stack/Over/Flow_3.csv.*。我的解决方法是将文件卡路径更改为1,它将返回正确的值。但我想要这个通配符的max

是否有可能返回max中每个修改日期更大的 Public Function getmodifieddateoffile(FilePath As String) On Error GoTo ExitWithError If FilePath = "" Then Exit Function End If If Dir(FilePath) <> "" Then 'This creates an instance of the MS Scripting Runtime FileSystemObject class Set oFS = CreateObject("Scripting.FileSystemObject") getmodifieddateoffile = oFS.GetFile(FilePath).DateLastModified Else End If Exit Function ExitWithError: End Function ?或者,您是否建议只将通配符(*)更改为1并按原样使用函数?

{{1}}

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

您可以遍历文件夹中的所有文件并自行计算最大值?

循环方法:

Loop through files in a folder using VBA?

答案 1 :(得分:0)

以下代码将返回在路径

中使用通配符时的最长时间
Public Function GetFileDate(strFile As String) As Date


        Dim lastDate As Date
        Dim FileName As String
        Dim FilePath As String

        FileName = Split(strFile, "\")(UBound(Split(strFile, "\")))
        FilePath = Replace(strFile, FileName, vbNullString)

        FileName = Dir(FilePath & FileName)

        Do While FileName <> vbNullString

            If lastDate < FileDateTime(FilePath & FileName) Then
                lastDate = FileDateTime(FilePath & FileName)
            End If

            FileName = Dir
        Loop

        GetFileDate = lastDate

    End Function