【问题标题】:Combine Excel workbooks into one workwook将 Excel 工作簿合并为一个工作簿
【发布时间】:2015-09-07 03:45:31
【问题描述】:

我有 50 个工作簿,每个工作簿有 7 个工作表。现在我需要将它们组合在一起,新工作簿应该有 7 个工作表,每个工作表应该有来自所有 50 个工作簿的相应数据。

例如:新工作簿的 Worksheet1 必须包含 50 个工作簿的所有 sheet1 的数据。同样,Worksheet2 应该包含所有 50 个工作簿的 sheet2 中的所有数据,依此类推......直到 sheet7。

【问题讨论】:

  • 这个网站上有很多你需要的作品的好例子。循环浏览工作簿;循环工作表,找到最后一行;复制并粘贴到特定行。也有很多非常相似的请求都有很好的答案。看看其中的一些,根据你的需要进行修改,当你遇到困难时在这里提出具体问题快乐编码!
  • 我看了其中的大部分......但几乎所有这些都讲述了如何将多个工作簿与单个工作表组合成一个工作簿与多个工作表。我的有点不同。
  • 指定如何将多个工作表中的数据合并到结果工作表中(逐行,没有任何间隙?),以及从哪里获取源工作簿(所有工作簿都放在某个文件夹中?)。还添加您尝试过的代码,正如@DougGlancy 评论的那样。
  • 为什么不尝试为前 2 个工作簿记录宏并寻找创建循环的模式?
  • 请看看我的进步,如果你能...请纠正它。

标签: vba excel


【解决方案1】:

Sub simpleXlsMerger()

将 bookList 调暗为工作簿

Dim mergeObj As Object,dirObj As Object,filesObj As Object,everyObj As Object

Application.ScreenUpdating = False

设置 mergeObj = CreateObject("Scripting.FileSystemObject")

'此处更改excel文件的文件夹路径

Set dirObj = mergeObj.Getfolder("C:\Users\607182604\desktop\Heinz Jun'15 MI Template\consolidated")

设置 filesObj = dirObj.Files

对于文件中的每个每个ObjObj

设置 bookList = Workbooks.Open(everyObj)

Range("A2:IV" & Range("A65536").End(xlUp).Row).Copy

ThisWorkbook.Worksheets(1).Activate

Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial

Application.CutCopyMode = False

bookList.关闭

下一个

结束子

@dougGlancy 和@omegastripes 我希望将数据逐行合并,没有任何间隙,是的,所有工作簿都在同一个文件夹中。 我面临的问题是它只合并每个工作簿的第一个工作表。我想要的是,它应该将所有 50 个 excel 文件的数据与 7 个工作表合并到一个合并的工作簿中,但有 7 个不同的工作表。

【讨论】:

    猜你喜欢
    • 2014-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-03
    相关资源
    最近更新 更多