VBA Excel – 从第二个文件复制到vba范围对象的范围

我想写一个excel-vba模块访问第二个excel文件的date。 我首先想要打开第二个文件到一个VBA范围的对象,复制工作表范围到VBA范围对象,然后closures第二个文件。

数据处理现在只发生在vba范围的对象上。

我尝试了以下内容:

Set oMeasuresWorkbook = Workbooks.Open(sMeasuresFileName) Set oSrcRange = oMeasuresWorkbook.Names("MEASURES").RefersToRange MsgBox oSrcRange(1, 1) oMeasuresWorkbook.Close 'problem: after closing the second file (oMeasuresWorkbook) the oSrcRange Object is gone MsgBox oSrcRange(1, 1) 'error here as the oSrcRange Object is gone 

一切工作正常,直到我closures第二个文件。 看起来,oSrcRange是对原始数据的引用。 顺便说一句。 同样的行为,如果我通过例如访问范围。

设置oSrcRange = oMeasuresWorkbook.Sheets(1).Range(“A:G”)

那么我将如何“深度复制”范围。 我试过range.copy,但semmingly我不知道我将如何初始化范围对象(我不想复制数据到工作表)。

我希望我自己清楚,并且可以帮忙

thanx!

尝试这样的事情,而不是:

 Dim SrcRangeArray as Variant Set oMeasuresWorkbook = Workbooks.Open(sMeasuresFileName) Set oSrcRange = oMeasuresWorkbook.Names("MEASURES").RefersToRange SrcRangeArray = oSrcRange.Value MsgBox SrcRangeArray (1, 1) oMeasuresWorkbook.Close 'problem: after closing the second file (oMeasuresWorkbook) the oSrcRange Object is gone MsgBox SrcRangeArray (1, 1) 

据我所知,没有办法只将一个对象的副本存储在内存中,不再受原始对象更改的影响。 对象存储的是实际的对象,而不是这些对象的值。

在我上面的代码中,我将取自范围的值并将其放入数组中。 即使原始对象已closures,这些值仍将保留。 请注意,您现在只能使用这些值。 例如,您不能“closures”或“打开”数组,因为它只是数值。

我把原来的对象留在那里作示范,但是如果你不需要这个对象,而且你只需要它的值,那么我就跳过这个中间人,然后用数组去做。