Показать сообщение отдельно
Старый 18.07.2016, 12:14   #6  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,654 / 1158 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Основная стратегия ускорения формирования Excel - это замена "штучных" команд на групповые. Т.е. вместо 20 тысяч отдельных команд на группировку надо попытаться сделать одну (несколько десятков или сотен) общих команд на группировку.

Судя по документации, команда на группировку имеет вид Range.group(). Но Range - это не обязательно непрерывный диапазон. В общем случае, это может быть вообще набор отдельных ячеек.

Может быть, Вам имеет смысл попробовать группировать Range "пакетами" и накладывать группировку на эти "пакеты"? Я не пробовал так делать, просто как идея

Для справки:

Есть такой метод Excel.Union(), который позволяет объединять несколько Range в один. Правда, в этом методе может быть не более 30 параметров в одной команде (не более 30 Range могут быть объединены одной командой), но можно сделать цикл и присоединять по одному Range за раз

В псевдо-коде как-то так

rangeAll = Excel.Range("A1:B1")
rangeAll = Excel.Union(rangeAll, Excel.Range("A2:B2"))
rangeAll = Excel.Union(rangeAll, Excel.Range("A3:B3"))
...
rangeAll.group()
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
За это сообщение автора поблагодарили: Pandasama (1).