首页 > 解决方案 > 如何将每张工作表的多个 excel 文件聚合(合并)到一个主文件中?

问题描述

我试图合并多个 excel 文件(总共 114 个),每个文件都有多个名称完全相同的工作表(总共 4 个),如下例所示:

1. File A: Sheet Dog / Sheet Cat / Sheet Bird
2. File B: Sheet Dog / Sheet Cat / Sheet Bird
3. File C: Sheet Dog / Sheet Cat / Sheet Bird
4. File D: Sheet Dog / Sheet Cat / Sheet Bird
.
.
.
.

我想要实现的是合并所有这些文件,并按每个工作表聚合数据(垂直合并),Sheet Dog 仅与 Sheet Dog 合并,而工作表 cat 仅与 cat 合并。最终,得到一个合并了所有工作表的主 excel 文件。

我已经尝试过Get Data -> From File -> From Folder,但我没有得到任何地方,这似乎不是我想要的?我想知道是否有任何可用的代码或技术可以系统地合并?感谢您的帮助,任何建议都非常感谢。


我在其他答案中找到了这段代码,但仍在努力定制它:

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:\XXXX"
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
Sub MergeAcrossSheets()

End Sub

我已经编辑了directory包含所有excel文件的文件夹,并且我还在import-sheets.xlsm同一个文件夹中创建了一个XLSM并将这个宏代码放入模块中,然后我运行它但没有任何反应。谁能指出我做错了什么?

标签: excelmerge

解决方案


推荐阅读