Копирование внешнего диапазона Excel в память - PullRequest
0 голосов
/ 24 января 2011

У меня есть внешняя таблица 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 голосов
/ 24 января 2011

Предполагая, что именованный диапазон 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
0 голосов
/ 24 января 2011

При копировании объекта 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")

В вашем коде вы передаете пустую переменную, поэтому она не работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...