首页 文章

将多个Excel工作簿合并到一个工作簿中

提问于
浏览
5

我是Visual Basic的新手 . 我可以使用Excel 2010或Excel 2013执行此任务 .

我有几十个工作簿,每个工作表上都有数据 . 例如,One.xlsx,Two.xlsx,Three.xlsx,Four.xlsx各自包含有关其各自Sheet1的信息 .

我需要将每个工作簿中的Sheet1上的信息组合到一个工作簿中,该工作簿具有从原始工作簿的文件名命名的工作表 . 因此,例如combined.xlsx将有4张名为One,Two,Three,Four的表 . 在每种情况下,应在新工作簿中复制和组合基础工作表的所有信息,如下所示 .

  • 我需要的格式

enter image description here

我发现这个宏/插件在线,让我接近我需要使用打开文件添加选择 .

http://www.excelbee.com/merge-excel-sheets-2010-2007-2013#close

Open Files Add-In成功允许我将各种Workbook的工作表聚合到一个工作簿中 . 但是,选项卡不是从原始文件的名称中命名的 .

  • 正确汇总工作表,但工作表名称不正确 .

enter image description here

现在,所有底层工作簿都将位于同一文件夹中 . 如果这种情况发生变化,浏览和选择文件的能力会很好,但如果这太难了,只需在Visual Basic代码中指明目录路径即可 . 由此产生的组合输出可能应该是一个新的工作簿,新工作簿的文件名并不重要 . 例如,它可以被称为combined.xlsx .

2 回答

  • 7

    以下完成任务 .

    Option Explicit
    
    Private Sub CommandButton1_Click()
    
    Dim directory As String, fileName As String, sheet As Worksheet, total As Integer
    Dim WrdArray() As String
    
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    
    directory = "c:\test\"
    fileName = Dir(directory & "*.xl??")
    
    Do While fileName <> ""
        Workbooks.Open (directory & fileName)
            WrdArray() = Split(fileName, ".")
            For Each sheet In Workbooks(fileName).Worksheets
            Workbooks(fileName).ActiveSheet.Name = WrdArray(0)
                total = Workbooks("import-sheets.xlsm").Worksheets.Count
                Workbooks(fileName).Worksheets(sheet.Name).Copy after:=Workbooks("import-sheets.xlsm").Worksheets(total)
    
                GoTo exitFor:
    
            Next sheet
    
    exitFor:
        Workbooks(fileName).Close
        fileName = Dir()
    Loop
    
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    
    End Sub
    
  • 1

    在Excel中按 Alt+F11 ,这将打开Excel VBA编辑器 .

    文章http://www.excel-spreadsheet.com/vba/debugging.htm解释了一些如何使用它的基础知识 .

    Module1 中有2个短子程序 opensheetsmerge ,包含~50行代码 .

    在你不理解的单词中使用带有光标的 F1 来了解它的含义 .

    一旦了解了代码的作用,就可以根据自己的需要进行定制 .

相关问题