我正在尝试将多张纸张合并为一张新纸张。我真的很感激任何评论。
问题在于:
wsSrc.Range("A1", wsSrc.Range("D", lastRow)).Copy Destination:=rngDest
当我尝试运行它时会导致错误。我以前一直在使用代码将所有工作表组合到工作表摘要中,这是创建宏的按钮的工作正常。
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
答案 0 :(得分:1)
好的,我不确定这会让你的代码实现它应该做的所有事情,但是因为你纠正了@Jeeped所指出的问题并在这一行中指明了你的问题:
wsSrc.Range("A1", wsSrc.Range("D", lastRow)).Copy Destination:=rngDest
此行中的错误是因为逗号而不是&符号。你应该把它改成:
wsSrc.Range("A1", "D" & lastRow).Copy Destination:=rngDest
希望这有帮助。
答案 1 :(得分:0)
我之前一直在使用代码将所有工作表组合到工作表摘要中,这是创建宏的按钮,工作正常。
这是发生了什么的线索。在循环浏览工作簿中的每个工作表时,请注意不要处理摘要工作表;可能是因为a)它已经保存了来自其他工作表的汇总信息,并且b)您不希望将其与其他已处理的工作表一起删除。
如果您已将中央位置更改为合并工作表,则必须在工作表中包含该工作表才能跳过。如果未跳过合并工作表,则a)将其内容复制到自身之上,并b)删除合并工作表。
If wsSrc.Name <> "Summary" And wsSrc.Name <> "Combined" Then
如果您删除合并工作表,那么目的地方式就没有了。