Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

Возможно ли средствами VBA получить диапазон из другой закрытой книги Excel сразу в массив? А из закрытого dbf?

Дано: закрытый xlsx-файл. Необходимо загрузить сразу в память диапазон из этого файла. Возможно ли это сделать по ссылке через VBA и как?
Например, файл - test.xlsx. Диапазон А1:D10.
Хотелось бы так:
Dim arr()
arr=['test. xlsx'! A1:D10]. Value

ПрограммыExcel+1
Владимир Кондратьев
  ·   · 606
увлекаюсь компьютерами и природой. люблю точность...  · 22 дек 2020  · office-study.ru

Можно, но не совсем сразу. Книгу придется все-таки открыть, но с помощью макроса это будет незаметно.

в примере ниже я отключаю обновление экрана, открываю файл 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

Желаю успеха!

https://office-study.xyz

Успеха Вам. С уважением, СергейПерейти на office-study.ru
Производство, диагностика и ремонт трубопроводной...  · 6 апр 2021  · dscontrols.net
Можно сделать так: 1. Открыть документ 2. Определить его границы (Последний заполненный столбец и послендюю заполненную строку, таким образом мы определим размер нашего массива) 3. Объявляем массив как глобальную переменную с... Читать далее
Производство, диагностика и ремонт трубопроводной...  · 21 янв 2021  · dscontrols.net
Быстрый и простой вариант. 1. Открыть файл Excel без обновления экрана Worksbooks.Open (Путь открытия файла) 2. Определить границы загружаемого массива данных Номер_последней_строки=ActiveWorkbook.Worksheets(1).Range("A20000")... Читать далее