首页 > 解决方案 > 重新排序文件选择

问题描述

我在工作中创建了一个 Excel 宏,用于在 Excel 中组装合并报告。该宏允许您选择多个文件,然后遍历这些文件并重命名每个文件中的第一个选项卡(使用它的方式是唯一的选项卡)以匹配文件名(因此您可以重命名文件无需打开所有选项卡并重命名选项卡),然后将所有这些选项卡合并到您当前的工作簿中,从而创建一个大型合并报告。

但是,我遇到的问题是宏默认按文件名的字母顺序对所选文件执行此操作,这需要我们在运行宏后对选项卡进行排序。

我正在寻找的是对宏的调整,它将按创建日期和时间(从最早到最新)对文件进行排序,因为文件的创建顺序通常与我们最终报告中的预期结果相匹配。

我想我需要单独创建一个 for i = 1 to etc 循环来重新排序所选文件,存储新顺序,并将该顺序用于当前循环,但我不知道该怎么做。我做了一些搜索,但是虽然我发现了一些类似的项目,但任何类似的东西似乎都使用文件夹选择而不是单个文件选择,并且还有其他差异我也无法完全转化为我的宏。这是当前的宏:

Sub Reports()
Dim numberOfFilesChosen, i As Integer, Workbookname As String, tempFileDialog As FileDialog, mainWorkbook, sourceWorkbook As Workbook
Dim tempWorkSheet As Worksheet
Set mainWorkbook = Application.ActiveWorkbook
Set tempFileDialog = Application.FileDialog(msoFileDialogFilePicker)
tempFileDialog.AllowMultiSelect = True
numberOfFilesChosen = tempFileDialog.Show
Application.ScreenUpdating = False
For i = 1 To tempFileDialog.SelectedItems.Count
Workbooks.Open tempFileDialog.SelectedItems(i)
    Set sourceWorkbook = ActiveWorkbook
        With sourceWorkbook
        Workbookname = Left(.Name, InStr(.Name, ".") - 1)
        .Sheets(1).Name = Workbookname
        End With
    For Each tempWorkSheet In sourceWorkbook.Worksheets
    tempWorkSheet.Copy after:=mainWorkbook.Sheets(mainWorkbook.Worksheets.Count)
    Next tempWorkSheet
    sourceWorkbook.Close savechanges:=False
Next i
Application.ScreenUpdating = True
End Sub

我希望你能帮助我,谢谢!

标签: vbaexcel

解决方案


推荐阅读