我试图使用描述这里的方法将多个工作表中的数据合并为一个工作表。
不同之处在于,我只想从每个文件中复制一列数据,因此我修改了代码,因此:
With wsMaster
erow = .Range("B" & .Rows.Count).End(xlUp).Row 'get the last row in column B
'~~> Copy from the file you opened
wsTemp.Range("A2:A" & .Rows.Count).Copy 'copy data in column A starting at row 2
'to however long the data runs for
'~~> Paste on your master sheet below last used row in column B
.Range("B" & erow).Offset(1, 0).PasteSpecial xlPasteValues
End With这适用于第一次迭代(它正确地复制了第一个源文件),但是当它到达第二个源文件时,它会抛出一个错误“运行时错误'1004':PasteSpecial方法或范围类失败”。
在调试模式下,我尝试手动单击并Ctrl+V复制的数据,它表示范围的大小/形状不匹配。但是--如果我在第2行或第2行以上的任何单元格中单击,它会粘贴它在宏中复制的数据,而不会发出任何抱怨。
有什么想法吗?
发布于 2017-06-22 05:22:03
wsTemp.Range("A2:A" & .Rows.Count).Copy
这一行造成问题,请把这个
wsTemp.Range("A2:A" & Range("A2").SpecialCells(xlCellTypeLastCell).Row).Copy
发布于 2017-06-22 05:35:06
当您嵌套在With wsMaster中时,意味着在With语句中添加前缀.的所有对象都与此对象(wsMaster工作表)相关。
因此,您试图查找最后一行的第一个位置是正确的。
erow = .Range("B" & .Rows.Count).End(xlUp).Row 'get the last row in column B但是第二个地方,您试图从不同的工作表(从wsTemp工作表)复制,是不正确的。以下一行:
wsTemp.Range("A2:A" & .Rows.Count).Copy 'copy data in column A starting at row 2意味着.Rows.Count正在查找wsMaster工作表中的行数(而不是wsTemp)。
因此,您需要将该行更改为:
wsTemp.Range("A2:A" & wsTemp.Rows.Count).Copy我更喜欢以下语法来复制“A”列中所有占用的单元格:
wsTemp.Range("A2:A" & wsTemp.Cells(wsTemp.Rows.Count, "A").End(xlUp).Row).Copyhttps://stackoverflow.com/questions/44690212
复制相似问题