2013-11-15 27 views
0

我有一個每24小時產生一個文件的數據記錄器。文件名遵循以下格式: 24hr_Export_YYYY_MM_DD_HH_MinMin_SS.csv 問題在於文件名的小時,分​​鍾,秒部分。 「秒(SS)」字段總是不同,因爲導出到同步到我的FTP所需的時間,但我只需要驗證文件名的年,月,日部分知道要導入到我的電子表格。有一個特殊字符可以替代文件名的最後部分嗎? 該代碼是下面:如何使用VBA引用文件名中具有通用部分的文件?

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 

其中作爲在宏上述前面提到的白天被格式化,並在後綴「14」是任意的。

+0

一旦你創建了文件名,你會做一個'Workbooks.Open'嗎? –

+0

數據記錄器將其導出到特定位置時生成文件名。我將安排一項任務來打開特定工作簿,運行宏,每天保存並關閉工作簿。 – user2795886

回答

3

您可以使用Dir搜索文件名並使用通配符。

我們假設文件名爲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") 

雙方將找到一個名爲的文件(例如)c:\24hr_Export_2013_11_15_16_22_00.csv

+0

我確定星號可以用作「通配符」,但我顯然沒有語法。謝謝你的基督徒。 – user2795886

+0

@ user2795886:很高興幫助!如果我的回答對你有幫助,請考慮[接受](http://stackoverflow.com/help/someone-answers)它。 –

相關問題