我想将工作簿“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。
答案 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
并且,明智的一句话:)使用Select
和Activate
方法很有吸引力 - 尤其是当你不熟悉VBA时,因为这就是宏录制器捕获你动作的方式,但99%的时间这些都是不必要的,只使用对象变量并明确引用它们更有效/更好,而不是依赖于Selection
和ActiveWorkbook
或ActiveCell
等