将不同工作簿中的特定工作表合并为一个工作表

时间:2015-11-12 20:36:39

标签: excel vba excel-vba

我有一个由6-7个不同的人编辑的工作簿。有一些计数是表格中的每个人,我正在寻找一种方法,我可以合并所有的表格,并找到总计数的总和。例如,

这是第一个工作簿中的工作表,

A        B          c
10       15         10

第二个工作簿中的工作表,

A        B          c
7       10          9

所有工作簿都类似。我希望最终的合并版本具有每个工作簿的工作表中所有值的总和,

A        B          c
17       25         19

我认为一种方法是将所有excel工作簿放入同一个文件夹并使用以下代码将其合并,然后使用宏来计算它。

Sub GetSheets()
Path = "C:\Users\username\Downloads\New folder"
Filename = Dir(Path & "*.xlsx")
  Do While Filename <> ""
  Workbooks.Open Filename:=Path & Filename, ReadOnly:=True
     For Each Sheet In ActiveWorkbook.Sheets
     Sheet.Copy After:=ThisWorkbook.Sheets(1)
  Next Sheet
     Workbooks(Filename).Close
     Filename = Dir()
  Loop
End Sub

但由于某种原因,此代码执行时没有任何错误,但在整合的工作簿中没有任何影响。它没有合并其余工作簿的表格。

有谁能告诉我我在这里犯的错误是什么?

还有其他方法可以找到合并金额吗?

感谢

2 个答案:

答案 0 :(得分:1)

假设您仍然想使用DIR(如果文件夹中还有其他文件,则需要输入检查名称)
在我的电脑上测试它,它完美地工作:

Sub SumWB()
  Dim Arr(2) As Long, MyWB As Workbook, fStr as String
  Const Folder = "C:\NewFolder\"
  fStr = Dir(Folder)
  While (file <> "")
    Set MyWB = Workbooks.Open(Folder & fStr, , True)
    Arr(0) = Arr(0) + MyWB.Sheets(1).Range("A1").Value
    Arr(1) = Arr(1) + MyWB.Sheets(1).Range("B1").Value
    Arr(2) = Arr(2) + MyWB.Sheets(1).Range("C1").Value
    MyWB.Close
    file = Dir
  Wend
  Debug.Print Arr(0) & " - " & Arr(1) & " - " & Arr(2)
End Sub

答案 1 :(得分:0)

如果您在与要合并的工作表位于同一路径(文件夹)的excel工作表中执行vba代码,则会发生这种情况。 尝试在新的Excel工作簿中执行vba。