0

我想将“E24”到“Q24”范围内的工作簿“Consulting-for Paracon_aax.xls”中的值复制到“E9”到“Q9”范围内名为“2014 - XPERT.xlsm”的工作簿中一张名为 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

我的宏仅将 Consulting-for Paracon_aax.xls 中的单元格 E24 复制到 2014 - XPERT.xlsm 工作簿中交付表中的 E9。

4

1 回答 1

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% 的时间这些都是不必要的,而且更多仅使用对象变量并显式引用它们而不是依赖于Selectionand ActiveWorkbookorActiveCell等​​更有效/更好。

于 2013-05-21T15:01:07.623 回答