我有六本工作簿,都是一样的。每个工作簿在工作簿第二页的A2,B2,C2单元格中都有一些价值。我想要一个合并的Excel工作表,它将产生所有工作簿的sheet2的A2s,B2s,C2之和。我将所有六个工作簿放在一个新文件夹中并创建了一个新工作簿并使用了以下代码,
Sub SumWB()
Dim Arr(2) As Long, MyWB As Workbook, fStr As String
Const Folder = "C:\Users\satsobek\Downloads\New folder\"
fStr = Dir(Folder)
While (file <> "")
Set MyWB = Workbooks.Open(Folder & fStr, , True)
Arr(0) = Arr(0) + MyWB.Sheets(2).Range("A2").Value
Arr(1) = Arr(1) + MyWB.Sheets(2).Range("B2").Value
Arr(2) = Arr(2) + MyWB.Sheets(2).Range("C2").Value
MyWB.Close
file = Dir
Wend
Debug.Print Arr(0) & " - " & Arr(1) & " - " & Arr(2)
End Sub
并且想要初步检查输出是否产生总和。但我只是
0-0-0
作为输出。
有人可以帮我调试代码,找到各种工作簿中sheet2的A2,B2和C2的总和吗?
答案 0 :(得分:2)
问题在于如何定义要搜索的文件。
您设置fStr = Dir(Folder)
然后您说While (file <> "")
由于最初未设置file
,While Loop
将立即退出(因为file
无法获得设置直到第一个循环 - 从未发生过。)
将fStr
的所有引用更改为file
,它将有效。
Sub SumWB()
Dim Arr(2) As Long, MyWB As Workbook, fStr As String
Const Folder = "C:\Users\satsobek\Downloads\New folder\"
file = Dir(Folder)
While (file <> "")
If file <> "consol.xlsx" Then
Set MyWB = Workbooks.Open(Folder & file, , True)
Arr(0) = Arr(0) + MyWB.Sheets(2).Range("A2").Value
Arr(1) = Arr(1) + MyWB.Sheets(2).Range("B2").Value
Arr(2) = Arr(2) + MyWB.Sheets(2).Range("C2").Value
MyWB.Close
End If
file = Dir
Wend
Debug.Print Arr(0) & " - " & Arr(1) & " - " & Arr(2)
End Sub