【发布时间】:2014-04-07 13:42:19
【问题描述】:
我只是 VBscript(和代码)的新手。尝试使用“Excel 宏 - VBA”将数据从一个工作簿复制/粘贴到另一个工作簿的下一个空白行时遇到问题。
例如:我想将工作簿 1 的 A2 到 A4(或更多)的范围粘贴到工作簿 2 的 A4(空白行)。并将工作簿 1 的 C2 到 C4(或更多)的范围复制到 E4工作簿 2 的(空白行)。我正在使用“Do..Loop”方法。
这是我执行新答案代码后的问题:
---------A-----------------E
1--------标题-------------标题
2--------(空白)------------bbb1
3------aaa2 -------------PasteC1 (BLANK) 此处的单元格已被替换
4------PasteA1 ---------PasteC2
5------PasteA2 ---------PasteC3
6------PasteA2 ---------
7
我希望它是:
---------A-----------------E
1--------标题-------------标题
2--------(空白)------------bbb1
3--------aaa2 ------------(空白)
4--------PasteA1 --------PasteC1
5--------PasteA2 --------PasteC2
6--------PasteA2 --------PasteC3
7
它正确地粘贴了范围 A 中的数据,但是从“B”数据中,代码将数据粘贴到下一行与“A”数据相比,而不是粘贴到“A”数据旁边的单元格。我希望将代码正确粘贴到单元格中。我考虑过“IF”或“FOR”语句,但对此我没有任何想法。
这是我编辑的代码和丹的回答,但问题仍然存在:
'Copy "A" data
With srcWorksheet
LastSrcRow = .Range("A" & .Rows.Count).End(xlUp).Row
End With
With destWorksheet
LastDestRow = .Range("A" & .Rows.Count).End(xlUp).Row
End With
Set srcRange = srcWorksheet.Range(srcWorksheet.Cells(10, 1), srcWorksheet.Cells(LastSrcRow, 1))
srcRange.Copy
destWorksheet.Range(destWorksheet.Cells(LastDestRow + 1, 1), destWorksheet.Cells(LastDestRow + LastSrcRow - 1, 1)).Select
destWorksheet.Paste
'Copy "B" data
With srcWorksheet
LastSrcRow = .Range("B" & .Rows.Count).End(xlUp).Row
End With
With destWorksheet
LastDestRow = .Range("B" & .Rows.Count).End(xlUp).Row
End With
Set srcRange = srcWorksheet.Range(srcWorksheet.Cells(10, 2), srcWorksheet.Cells(LastSrcRow, 2))
srcRange.Copy
destWorksheet.Range(destWorksheet.Cells(LastDestRow + 1, 2), destWorksheet.Cells(LastDestRow + LastSrcRow - 1, 2)).Select
destWorksheet.Paste
我研究了很多网站,但仍未找到解决方案。
请帮帮我。
感谢并原谅我的英语不好。
【问题讨论】:
-
您是否尝试过在 Excel 中录制宏来执行此操作?这可能是一个很好的起点。然后你可以对它生成的代码做一些小的改动,让它通过 VBScript 工作。
-
亲爱的 Bond,我已经尝试了记录的方法,但是此方法无法检测并生成“下一个空白行”的代码。我现在找不到我的问题的任何解决方案。我按照丹的回答更新了代码,但问题仍然存在
-
@Skyoffeedom 您可以添加自己的 sn-p 以查找下一个空白行。 This 帖子可能对您有所帮助。