Дано: закрытый xlsx-файл. Необходимо загрузить сразу в память диапазон из этого файла. Возможно ли это сделать по ссылке через VBA и как?
Например, файл - test.xlsx. Диапазон А1:D10.
Хотелось бы так:
Dim arr()
arr=['test. xlsx'! A1:D10]. Value
Можно, но не совсем сразу. Книгу придется все-таки открыть, но с помощью макроса это будет незаметно.
в примере ниже я отключаю обновление экрана, открываю файл 1. xlsx из папки Документы ( точнее, из текущей активной. Затем узнаю границы диапазона взятого по вашему примеру и вношу с него значения из указанного диапазона. затем ввожу выбранное значение. Учтите, что элементы идут построчно, затем по колонкам.
Sub get_data()
file = CurDir() + "\1.xlsx"
Application.ScreenUpdating = False
Application.Workbooks.Open file
Dim a() As Variant
x = ActiveWorkbook.Sheets(1).Range("A1:C3").Rows.Count
y = ActiveWorkbook.Sheets(1).Range("A1:C3").Columns.Count
ReDim a(1 To x, 1 To y)
a = ActiveWorkbook.Sheets(1).Range("A1:C3").Value
ActiveWorkbook.Close
Application.ScreenUpdating = True
MsgBox (a(2, 1))
end sub
Желаю успеха!