2011-01-24 57 views
0

我有一个外部Excel电子表格,我想打开它来获取范围,将其复制到内存中并关闭源工作簿。将外部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 

,我试图存储在变型的范围内的值。

这一切都行不通。任何人都可以将我指向正确的方向吗?

+0

谢谢都为你的答案是一致的。我希望找到一种方法来复制一个范围作为一个对象,而不是绑定到任何表单的一部分,但我可以打电话范围,查找等... 我认为这可能是不可能的,而你家伙证实了 – DavidA 2011-01-24 16:47:16

回答

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") 

在您的代码中传递空变量,所以它失败。

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 
相关问题