簡體   English   中英

選擇多個文件中的最新文件,然后導入一個Excel工作表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM