我一直在尝试优化一些编码,并设法减少并加快了速度。但是,有些事情仍然很笨拙(我还是菜鸟)。背景是我的代码正在打开源文件和目标文件,复制大量可变长度的数据,关闭源文件,然后执行大量操作,最后保存目标文件。
我想做的一件事情是,如果可能的话,是直接复制数据而不使用剪贴板,激活工作簿,选择工作表(无论如何,这些都可以打包成我目前拥有的更有效的代码)
Windows("SOURCE.xlsm").Activate
Sheets("Data").Select
Range("A2:AX10").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows("TARGET.xlsm").Activate
Range("A2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
是否可以在SOURCE文件数据表中进行选择(A2:AX10一直到最后一行)并将其直接复制到TARGET文件数据表单元格A2中,而无需使用剪贴板。
之所以使用A2:AX10,然后选择向下,是因为整个数据集中有很多空白单元格,因此我可以获取全部数据。
我希望能够进行选择并将其用作该行中的范围
Workbooks(“SOURCE”).Worksheets("Data").Range(“A2:AX10 & ALLTHEWAYDOWN”).Copy _Workbooks(“TARGET”).Worksheets("Data").Range(“A2")
我试图解决这个问题,但最终并没有得到期望的结果。当我尝试进行选择并设置为范围时,同时尝试使用activitng工作簿复制范围并在直接复制模式下都出现1004错误。
是否有可能优化此块并使它工作。它将大大改善我的VBA。
谢谢,
最佳答案
您需要这样的东西:
With Workbooks("SOURCE.xlsm").Sheets("Data")
.Range("A2:AX10", .Range("A2:AX10").End(xlDown)).Copy Workbooks("TARGET.xlsm").ActiveSheet.Range("A2")
End With
您可能还可以使用
CurrentRegion
而不是End(xlDown
关于excel - 在没有剪贴板的工作簿之间复制/粘贴变量数据集,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35701643/