我有一个外部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 :(得分: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