将外部Excel范围复制到内存中

时间:2011-01-24 15:18:19

标签: excel vba

我有一个外部Excel电子表格,我想打开它以获取范围,将其复制到内存中并关闭源工作簿。

我必须测试的代码如下所示:

Set wkbSource = Workbooks.Open(sWkbSourcePath)
Set rngList = wkbSource.Sheets("Sheet1").Range("rgnList")

Debug.Print "The original:" & rngList.Cells(1, 2) & " is a " & rngList.Cells(1, 1)

rngList.Copy Destination:=rngCopy

wkbSource.Close

Debug.Print "The copy:" & rngCopy.Cells(1, 2) & " is a " & rngCopy.Cells(1, 1)
Debug.Print "---END---"

第二个调试打印不执行任何操作。而不是

 rngList.Copy Destination:=rngCopy

我也试过这个

 rngCopy.value = rngList.value 

我尝试在变体中存储范围的值。

这些都不起作用。有人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:0)

复制Range对象时,应指定另一个Range对象作为目标。在其他情况下,范围将被复制到剪贴板中。

Destination   Optional Variant. Specifies the new range to which the specified range will be copied. If this argument is omitted, Microsoft Excel copies the range to the Clipboard.

Worksheets("Sheet1").Range("A1:D4").Copy _
    destination:=Worksheets("Sheet2").Range("E5")

在您的代码中传递空变量,因此失败。

答案 1 :(得分:0)

假设命名范围 rngList 在源工作簿中定义,并与 rngCopy

的定义一致
Option Explicit
Sub a()
Dim r, rngCopy As Range
Dim wkbSource As Workbook

Set rngCopy = Range("A1:D8")
Set wkbSource = Workbooks.Open("c:\mata.xls")
Set r = wkbSource.Sheets("Sheet1").Range("rngList")

Debug.Print "The original:" & r.Cells(1, 2) & " is a " & r.Cells(1, 1)

r.Copy Destination:=rngCopy
wkbSource.Close

Debug.Print "The copy:" & rngCopy.Cells(1, 2) & " is a " & rngCopy.Cells(1, 1)
Debug.Print "---END---"

End Sub