我有启用宏的Excel文件,我想将这些文件中的值合并到一个新文件中。我写了下面的宏,它导航到每个文件中的特定单元格,并将其汇总成一个新的合并文件。
Sub SumWB()
Dim Arr(2) As Long, MyWB As Workbook, fStr As String
Const Folder = "C:\Users\user123\Downloads\New folder\"
file = Dir(Folder)
While (file <> "")
If file <> "Consolidated.xlsm" Then
Set MyWB = Workbooks.Open(Folder & file, , True)
ThisWorkbook.Sheets(2).Range("B4") = Arr(0) + MyWB.Sheets(1).Range("B4").Value
ThisWorkbook.Sheets(2).Range("C4") = Arr(0) + MyWB.Sheets(1).Range("C4").Value
ThisWorkbook.Sheets(2).Range("D4") = Arr(0) + MyWB.Sheets(1).Range("D4").Value
ThisWorkbook.Sheets(2).Range("E4") = Arr(0) + MyWB.Sheets(1).Range("E4").Value
ThisWorkbook.Sheets(2).Range("F4") = Arr(0) + MyWB.Sheets(1).Range("F4").Value
ThisWorkbook.Sheets(2).Range("G4") = Arr(0) + MyWB.Sheets(1).Range("G4").Value
ThisWorkbook.Sheets(2).Range("H4") = Arr(0) + MyWB.Sheets(1).Range("H4").Value
ThisWorkbook.Sheets(2).Range("I4") = Arr(0) + MyWB.Sheets(1).Range("I4").Value
ThisWorkbook.Sheets(2).Range("J4") = Arr(0) + MyWB.Sheets(1).Range("J4").Value
ThisWorkbook.Sheets(2).Range("K4") = Arr(0) + MyWB.Sheets(1).Range("K4").Value
ThisWorkbook.Sheets(2).Range("L4") = Arr(0) + MyWB.Sheets(1).Range("L4").Value
ThisWorkbook.Sheets(2).Range("M4") = Arr(0) + MyWB.Sheets(1).Range("M4").Value
ThisWorkbook.Sheets(2).Range("N4") = Arr(0) + MyWB.Sheets(1).Range("N4").Value
MyWB.Save
MyWB.Close
End If
file = Dir
Wend
End Sub
我得到Run time error '13' : Type Mismatch
。错误指向范围(“C4”)行。
另一个问题是,一旦打开宏启用文件,在保存它的同时,“the file is a read only. To save a copy, click OK, then give the workbook a new name in the Save as dialog box
”。这违背了自动化整个过程的目的。因为我不想手动打开和关闭所有这些文件。有没有办法可以避免这种情况?
答案 0 :(得分:0)
如果您只是从文件中提取信息,我不确定您为什么需要保存它们。由于您将它们打开为只读,因此会阻止您保存并生成该消息。我只想删除myWB.Save
行。如果它仍然提示保存更改,请将myWB.Close
替换为myWB.Close(False)
以关闭而不保存更改。
关于类型不匹配,工作簿中的值可能不是数字吗? (添加5 + "5 "
会导致类型不匹配,而不是10
)