Страницы: 1
RSS
Word VBA: Импорт таблицы Excel в переменную
 
Товарищи, привет!

Подскажите куда копать - есть файл Excel c большой таблицей.
Для работы макроса в Word ее нужно загрузить в переменную.
Есть макрос который открывает книгу Excel и перебором ячеек заполняет массив. Но это долго.

Есть ли более быстрая альтернатива? Желательно без открытия книги Excel?
 
вот так с открытием файла. Переменная arr будет содержать всю таблицу

Код
    Dim arr As Variant
    
    'вариант 1
    arr = Worksheets("Лист1").Range("A1:Z10000").Value
    'вариант 2
    arr = Worksheets("Лист1").Range("A1").CurrentRegion.Value
 
Александр Катаев, здравствуйте
Создание массива из диапазона
Если диапазон состоит из одной ячейки, то вариативная переменная а примет это значение и массива не будет.
Если ячеек 2 и более, то будет получен двумерный массив размером a (количество строк диапазона, количество столбцов диапазона)
Если диапазон состоит из нескольких областей, то массив/значение будет получено только из первой области (если нужны все области, то только цикл).

Цитата
Александр Катаев: Желательно без открытия книги Excel?
ADODB, но, если у вас создание массива вызывает вопросы, то это вариант не подходит
Изменено: Jack Famous - 16.06.2023 15:57:02
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Это все хорошо но только в Excel.
А мне нужно сделать это в макросе Word.
 
Цитата
Александр Катаев: Это все хорошо но только в Excel. А мне нужно сделать это в макросе Word.
у вас запущенный случай. Начните с азов VBA для Word и Excel и их вызовов друг из друга.
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
написал:
у вас запущенный случай. Начните с азов VBA для Word и Excel и их вызовов друг из друга.
Даже не буду спорить. Так и есть.

Реализовал через Range. Стало немного быстрее. Но все равно хотелось бы еще ускорить (уходит время на открытие Excel и самого фала).
 
Александр Катаев, массив заполняется мгновенно, если это не миллионы ячеек. Если файл тяжелый, то открывайте с параметрами ReadOnly = True, UpdateLinks = False — может помочь. Также отключите события (и не забудьте включить обратно) — я не знаю ,что за файл и что там у вас происходит при открытии.
Изменено: Jack Famous - 16.06.2023 17:29:27
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Страницы: 1
Наверх