[英]Select most recent of multiple files, then import to one Excel sheet
我在尋找一種方法來選擇同一文件夾中多個文件的最新版本並將其導入Excel時遇到了麻煩。 例如:
資料夾中的檔案:Spanish.csv Spanish(1).csv Spanish(2).csv English.csv English(1).csv French.csv(這里還有更多語言和檔案,但我只提供這些語言和檔案簡單)
從該文件夾中,我要選擇以下文件:Spanish(2).csv English(1).csv French.csv
並將它們導入到一個現有的工作表中。
到目前為止,我有:
Sub GetFiles()
Dim MyPath As String
Dim Spanish As String
Dim English As String
Dim French As String
Dim LanguageFiles(2) As String
MyPath = "C:\example\"
'Make sure that the path ends in a backslash
If Right(MyPath, 1) <> "\" Then MyPath = MyPath & "\"
Spanish = Dir(MyPath & "Spanish*.csv")
English = Dir(MyPath & "English*.csv")
French = Dir(MyPath & "French*.csv")
I WANT TO SOMEHOW GET THE MOST RECENT VERSION OF EACH AND PASS IT TO THE LANGUAGEFILES ARRAY AND IMPORT IT TO A SINGLE WORKSHEET.
LanguageFiles(0) = Spanish
LanguageFiles(1) = English
LanguageFiles(2) = French
For i = LBound(LanguageFiles) To UBound(LanguageFiles)
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & LanguageFiles(i), Destination:=Range("A" & Rows.Count).End(xlUp).Offset(1, 0))
.Name = "Sample"
.FieldNames = False
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 437
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
Next i
End Sub
該代碼實際上不起作用,因為我將多個部分組合在一起,而且我不知道自己是否處在正確的軌道上。 有人可以幫我嗎?
將以下循環放在您編寫的區域內:
I WANT TO SOMEHOW GET THE MOST RECENT VERSION OF EACH AND PASS IT TO THE LANGUAGEFILES
我只是為西班牙語文件編寫了循環,但是您可以輕松地添加另一個循環來捕獲法語,英語等文件,並調整變量名稱以加載到LanguageFiles
數組中。
Do While Spanish <> ""
If InStr(1, Spanish, "(") Then 'test to see if there is a number
Dim bVersion As Boolean
bVersion = True 'set this variable to true for later
'extract which version it is - will work for any digit version number
Dim iVersionTest As Integer, iVersion As Integer
iVersionTest = CInt(Mid(Spanish, InStr(1, Spanish, "(") + 1, InStr(1, Spanish, ")") - InStr(1, Spanish, "(") - 1))
'for another method see
'iVersionTest = CInt(Split(Split(Spanish,"(")(1),")")(0)
'is current version greater than what is already stored? if so, make it latest version
Dim sLatestVersion
If iVersionTest > iVersion Then
sLatestVersion = Spanish
iVersion = iVersionTest
End If
Else
'if there's no other version make the lone file the latest version
If Not bVersion Then sLatestVersion = Spanish
End If
Spanish = Dir
Loop
LanguageFiles(0) = sLatestVersion
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.