试图找出一种方法来更轻松地识别文件夹中最新的 .xlsx 文件以自动化工作流程

Trying to figure out a way to easier identify latest .xlsx file in folder to automate workflow

我正在使用此代码来自动执行导入(更像是复制数据)和我可以(必须)每天生成的文件上的一些轻格式(以及文件中的 sheet)碱基。

在 运行 这段代码之前我所做的是我去 te folder/path 新的 file/rapport 所在的地方。这个文件名总是不同但至少以 _pr11 开头*, 所以它看起来像这样 "_pr11(somenumbers).xlsx" 我打开这个文件,然后另存为 "PR11.xlsx" 进入另一个路径。

所以我要存档的是一些代码,可以根据文件进入文件夹的时间获取最新文件,或者可以根据其他逻辑确定哪个文件是最新的代码融洽。

我确实有另一种方法是查看文件并查看哪些行更少或更多(列始终相同且从不更改)但这不是一个明智的方法,因为行可以是总计一天少,第二天多。所以我想这不是正确的方法..

    Sub ImportData()
    
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    
    Set closedBook = Workbooks.Open("C:\Temp\PR11.xlsx")
    closedBook.Sheets("Analyse").Copy After:=ThisWorkbook.Sheets("PR11_P3")
    closedBook.Close SaveChanges:=False
           
    Sheets("Analyse").Select
    Columns("AC:AE").Delete
    Columns("O:Q").Delete
    Columns("I:M").Delete
    Columns("E:G").Delete
    Columns("A:B").Delete
    
    Range("A1").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    
    Sheets("PR11_P3").Select
    Range("A10").Select
    ActiveSheet.Paste
    
    Sheets("Analyse").Delete

    Dim Table As ListObject
    Set Table = ActiveSheet.ListObjects.Add(xlSrcRange, _
    Range("A10").CurrentRegion, , xlYes)
        With Table
            .Name = "PR11_P3_Tabell"
        End With
    ActiveSheet.ListObjects("PR11_P3_Tabell").TableStyle = "TableStyleMedium5"
    ActiveSheet.ListObjects("PR11_P3_Tabell").ShowTotals = False
    
End Sub

使用 FileDateTime

打开文件夹中的最新文件
Sub ImportData()
    
    Const sFolderPath As String = "C:\Test\rapport\"
    
    ' Open the newest file.
    
    Dim sFileName As String: sFileName = Dir(sFolderPath & "_pr11*.xlsx")
    If Len(sFileName) = 0 Then Exit Sub ' no file found
    
    Dim cuDate As Date, sFileDate As Date, cuPath As String, sFilePath As String
    
    Do Until Len(sFileName) = 0
        cuPath = sFolderPath & sFileName
        cuDate = FileDateTime(cuPath)
        Debug.Print "Current:  " & cuDate & "  " & cuPath ' print current
        If cuDate > sFileDate Then
            sFileDate = cuDate
            sFilePath = cuPath
        End If
        sFileName = Dir
    Loop
    Debug.Print "Result:   " & sFileDate & "  " & sFilePath ' print result
    
    ' See in the VBE Immediate window 'CTRL+G' what was checked
    ' and what was determined to open.
    ' When done testing, out-comment or delete the two 'Debug.Print' lines.
    
    Dim closedBook As Workbook: Set closedBook = Workbooks.Open(sFilePath)
    
    ' Continue
    
End Sub