如何使用VBA在文件名中引用具有通用部分的文件?

我有一个每24小时生成一个文件的数据logging器。 文件名遵循以下格式:24hr_Export_YYYY_MM_DD_HH_MinMin_SS.csv问题在于文件名的小时,分​​钟,秒部分。 “秒(SS)”字段总是不同,因为导出到同步到我的FTP所需的时间,但我只需要validation文件名的年,月,日部分知道要导入到我的电子表格。 有一个特殊的字符可以替代文件名的最后部分吗? 代码如下:

Path = "\\blah\blah\blah\" Prefix = "24hr_Export_" Suffix = "_00_00_14" FName = Prefix & DayTime & Suffix & ".csv" ImportCsvFile Path & FName, ActiveSheet.Cells(1, 1) Sub ImportCsvFile(FileName As Variant, Position As Range) With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & FileName, Destination:=Position) .Name = Replace(FileName, ".csv", "") .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .RefreshOnFileOpen = False .BackgroundQuery = True .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .TextFilePromptOnRefresh = False .TextFilePlatform = xlMacintosh .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = True .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = False .TextFileSpaceDelimiter = False .TextFileOtherDelimiter = "," .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) .Refresh BackgroundQuery:=False End With End Sub 

其中DayTime如前所述在macros中被格式化,并且后缀中的“14”是任意的。

您可以使用Dirsearch文件名并使用通配符。

假设文件名为24hr_Export_2013_11_15_16_22_00.csv (2013年11月15日16:22:00)

然后你可以使用*通配符来匹配多个字符:

 FName = Dir("c:\24hr_Export_2013_11_15_*.csv") 

…或多个? 通配符(每个匹配一个字符):

 FName = Dir("c:\24hr_Export_2013_11_15_??_??_??.csv") 

两者都会find一个名为(例如) c:\24hr_Export_2013_11_15_16_22_00.csv