运行时错误1004对象“_Worksheet”的方法“范围”失败

我正在尝试将大量的工作表合并到一个新工作表中。 我真的很感激任何意见。

问题是与线:

wsSrc.Range("A1", wsSrc.Range("D", lastRow)).Copy Destination:=rngDest 

当我尝试运行时会导致错误。 我以前一直在使用代码将所有表单合并到工作表摘要,这是macros的button被创build的工作正常。

 Sub mcrCombine() ActiveWorkbook.Sheets.Add.Name = "Combined" 'Create new sheet 'Definitions Dim wsSrc As Worksheet Dim wsDest As Worksheet Dim rngDest As Range Dim lastRow As Long Dim destRow As Long Set wsDest = Worksheets("Combined") 'Destination sheet in same Workbook Set rngDest = wsDest.Range("B1") 'Destination cell in Combined Application.DisplayAlerts = False 'suppress prompt worksheet delete 'loop through all sheets For Each wsSrc In ThisWorkbook.Sheets If wsSrc.Name <> "Summary" And wsSrc.Name <> "Combined" Then 'all sheets except summary lastRow = wsSrc.Cells.SpecialCells(xlCellTypeLastCell).Row 'define last row wsSrc.Range("A1", wsSrc.Range("D", lastRow)).Copy Destination:=rngDest 'copy and paste data in range Set rngDest = rngDest.Offset(lastRow - 1) 'update destination range wsSrc.Delete 'delete source file End If Next Application.DisplayAlerts = True 'prompts back on End Sub 

好吧,我不确定这会让你的代码实现它应该做的所有事情,但是由于你纠正了由@Jeeped指出的问题,并在这一行中指定了你的问题:

wsSrc.Range("A1", wsSrc.Range("D", lastRow)).Copy Destination:=rngDest

这一行的错误是因为逗号而不是&符号。 你应该把它改成:

 wsSrc.Range("A1", "D" & lastRow).Copy Destination:=rngDest 

希望这可以帮助。

我以前一直在使用代码将所有表单合并到工作表摘要,这是macros的button被创build的工作正常。

这是发生什么的线索。 在循环浏览工作簿中的每个工作表时,请注意不要处理“ 摘要”工作表; 可能是因为a)它已经保存了来自其他工作表的汇总信息,b)您不希望将其与其他处理的工作表一起删除。

如果您将中央位置更改为组合工作表,则必须将其包含在工作表中以跳过。 未能跳过组合工作表将a)复制其内容本身和b)删除组合的工作表。

 If wsSrc.Name <> "Summary" And wsSrc.Name <> "Combined" Then 

如果您删除组合工作表,那么在目的地的方式没有什么。