如何将数据从一本书的范围复制到另一本书的范围?

时间:2013-05-21 14:49:47

标签: excel vba

我想将工作簿“Consulting-for Paracon_aax.xls”中的值从“E24”到“Q24”复制到名为“2014 - XPERT.xlsm”的工作簿,范围为“E9”到“ Q9“在名为Delivery。的工作表中。

这就是我想出来的。

Sub UpdateLinks()

'open the source workbook and select the source sheet
Workbooks.Open Filename:="C:\Users\desmondm\Desktop\Consulting-for Paracon_aax.xls"

Sheets("Sheet1").Select

' copy the source range

Sheets("Sheet1").Range("E24").Select

Selection.Copy

' select current workbook and paste the value at E9
Workbooks("2014 - XPERT.xlsm").Activate

Sheets("Delivery").Select

Sheets("Delivery").Range("E9").Select

ActiveSheet.Paste

Application.CutCopyMode = False

ActiveWorkbook.Save

End Sub

我的宏只将2014年 - XPERT.xlsm工作簿中的交付表格中的咨询 - 用于Paracon_aax.xls的单元格E24复制到E9。

1 个答案:

答案 0 :(得分:0)

尝试一下,我为你整理了一下,但基本上你需要指定要复制的所有单元格(之前你只是复制E24

Sub UpdateLinks()
Dim wbSource As Workbook
Dim wbDestination As Workbook

'open the source workbook and select the source sheet
Set wbSource = Workbooks.Open( _
    Filename:="C:\Users\desmondm\Desktop\Consulting-for Paracon_aax.xls")

'Set the destition workbook variable
Set wbDestination = Workbooks("2014 - XPERT.xlsm")

'copy the source range
wbSource.Sheets("Sheet1").Range("E24:Q24").Copy

'paste the value at E9
wbDestination.Sheets("Delivery").Range("E9:Q9").PasteSpecial (xlPasteValues)

Application.CutCopyMode = False

ActiveWorkbook.Save

End Sub

并且,明智的一句话:)使用SelectActivate方法很有吸引力 - 尤其是当你不熟悉VBA时,因为这就是宏录制器捕获你动作的方式,但99%的时间这些都是不必要的,只使用对象变量并明确引用它们更有效/更好,而不是依赖于SelectionActiveWorkbookActiveCell