重新排序文件选择

时间:2018-05-16 17:22:48

标签: excel vba excel-vba

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

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

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

我想我需要单独为i = 1到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

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

0 个答案:

没有答案