У меня подобная проблема. Делаю прогу на VB. Данные из проги нужно расставить в соответствующие ячейки таблицы ексель и отправить на печать. При частом обращении к ексель и большом количестве данных уходит много времени. А если еще печатаешь данные нескольких человек (данные - база с личными данными людей) то ваще заснуть можно при печати.
я сделал так: в служебном листе документа ексель в 1 ячейку запихал все данные по распределению данных из базы в соответствующие ячейки с каким нибудь знаком препинания (я использовал *). Получатся нечто подобное *данные о 1 ячейки*данные о 2 ячейки*...*данные о N ячейки* (всего около 300 ячеек)
Затем при одном обращении к екселю забираю эти данные в VB а там уже обрабатываю как мне нужно.
А вот уже при вставке готовых данных в форму хочу так же запихать данные в одну ячейку и вызвать макрос из документа ексель, что бы распихол данные по нужным ячейкам. Только пока не знаю как из VB вызвать макрос в открытой книге ексель

. Application.Run говорит что макрос найти не может.
Мне кажется получится минимум общений с ексель и максимум скорости.