VBA:如何在文件夹中打开最近的两个excel文件

时间:2017-07-06 12:18:56

标签: excel vba excel-vba

我试图在文件夹中打开最近的两个excel文件到目前为止我确实在文件夹中打开了最新文件,但我必须在文件夹中打开第二个最新文件。参考下面的代码。请建议如何打开第二个最新文件?

Sub findingdiff()
Dim FileSys, objFile, myFolder, c As Object
Dim wb1 As Workbook
Dim wb2 As Workbook
  FolderName = ("C:\Users\ashokkumar.d\Desktop\Test\do\")
                Set FileSys = CreateObject("Scripting.FileSystemObject")
                Set myFolder = FileSys.GetFolder(FolderName)

        dteFile = DateSerial(1900, 1, 1)
        For Each objFile In myFolder.Files
            If InStr(1, objFile.Name, ".xls") > 0 Then
                If objFile.DateLastModified > dteFile Then
                    dteFile = objFile.DateLastModified
                    strFilename = objFile.Name
                End If
            End If
        Next objFile
'opening of latest file in the folder

                Set wb2 = Workbooks.Open(FolderName & Application.PathSeparator & strFilename)

End Sub

2 个答案:

答案 0 :(得分:1)

你可以一次性完成

Sub findingdiff()
Dim FileSys, objFile, myFolder, c As Object
Dim wb1 As Workbook
Dim wb2 As Workbook
Dim strFilename, strFilename2
  FolderName = ("C:\Users\ashokkumar.d\Desktop\Test\do\")
                Set FileSys = CreateObject("Scripting.FileSystemObject")
                Set myFolder = FileSys.GetFolder(FolderName)

        dteFile = DateSerial(1900, 1, 1)
        For Each objFile In myFolder.Files
            If InStr(1, objFile.Name, ".xls") > 0 Then
                If objFile.DateLastModified > dteFile Then
                    dteFile = objFile.DateLastModified
                    strFilename2 = strFilename
                    strFilename = objFile.Name
                End If
            End If
        Next objFile
'opening of latest file in the folder

  Set wb1 = Workbooks.Open(FolderName & Application.PathSeparator & strFilename)              
 Set wb2 = Workbooks.Open(FolderName & Application.PathSeparator & strFilename2)

End Sub

答案 1 :(得分:1)

这是解决问题的另一种方法。创建一个排序列表,然后处理前两个文件:

Sub Lastest2Files()
   Dim rs As ADODB.Recordset
   Dim fs As FileSystemObject
   Dim Folder As Folder
   Dim File As File

   'create a recordset to store file info
   Set rs = New ADODB.Recordset
   rs.fields.Append "FileName", adVarChar, 100
   rs.fields.Append "Modified", adDate
   rs.Open

   'build the list of files and sort
   Set fs = New FileSystemObject
   Set Folder = fs.GetFolder("C:\aatemp")

   For Each File In Folder.Files
      rs.AddNew
      rs("FileName") = File.Path
      rs("Modified") = File.DateLastModified
   Next

   rs.Sort = "Modified DESC"

   'process the first 2 files
   rs.MoveFirst
   Set wb2 = Workbooks.Open(rs.fields("FileName").value)
   rs.MoveNext
   Set wb2 = Workbooks.Open(rs.fields("FileName").value)
End Sub