Excel 将范围从关闭的工作簿获取到数组中

Excel 将范围从关闭的工作簿获取到数组中,excel,vba,Excel,Vba,如何在VBA中将一系列数据从关闭的工作簿中获取到数组中?最好不要打开工作簿 谢谢我不确定您是否可以不打开工作簿就完成它。我构建了一个如下所示的函数 Private Function GetValue(path, file, sheet, ref) Dim wb As Workbook Application.ScreenUpdating = False Set wb = Workbooks.Open(path & Application.PathSeparator & file)

如何在VBA中将一系列数据从关闭的工作簿中获取到数组中?最好不要打开工作簿


谢谢

我不确定您是否可以不打开工作簿就完成它。我构建了一个如下所示的函数

Private Function GetValue(path, file, sheet, ref)
Dim wb As Workbook
Application.ScreenUpdating = False
Set wb = Workbooks.Open(path & Application.PathSeparator & file)
Worksheets(sheet).Activate
GetValue = Range(ref)
wb.Close savechanges:=False
Application.ScreenUpdating = True
End Function
然后像这样使用它

Dim path As String
Dim file As String
Dim sht As String
Dim rng As String
path = ThisWorkbook.path
file = "book.XLSX"
sht = "Sheet1"
rng = "A1:D300"

ActiveSheet.Range("A1:D300").Value = GetValue(path, file, sht, rng) 

如果您只对关闭工作簿中的数据值感兴趣,可以使用打开工作簿的空白区域作为临时区域,然后使用数组公式填充该区域:

ScratchWorksheet.Range("B1", "B3").FormulaArray = "='PathToClosedBook\[ClosedBook.xlsx]Sheet1'!$B$1:$B$3"

完成后,您可以删除FormulaArray,这样就不会在打开的工作簿中留下外部链接。

Oops,您希望它位于数组中。嗯,尝试将函数存储到数组?谢谢你的快速回复。它是有效的,仍然有兴趣看看是否有人有一个不需要打开外部工作簿的解决方案。嗯,也许?