Excel Тормозит!!!

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
ToNic
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 05.01.2004 (Пн) 1:10
Откуда: Ekaterinburg

Excel Тормозит!!!

Сообщение ToNic » 01.02.2004 (Вс) 5:37

В программе динамически создаётся таблица Excel. Сведения берутся из базы Access, обрабатываются и вносятся в таблицу AppExcel.Selection.Offset(Row, Column) = RValue
При создании 1000 записей работает ОЧЕНЬ!!! медленно. Сначала думал, что тормозит обработка сведений или база, создал пустую таблицу из программы (без обработки и сведений) - эффект тот же! Может кто знает как сделать, чтобы работало быстрее? А может создавать таблицу вообще по-другому ... ? Кстати, видел сделано на Delphi - 1000 записей генерит за пару секунд (раз в 200 быстрее :wink: )
Помогите, пожалуйста! :cry:
Ночь была, хотелось спать,|Решил прогу написать.|Внезапный вдруг Вопрос возник,|И исходник встал в тупик.|MSDN я почитал,|И полчаса охр ... вал.|На VB-улицы зашёл,|И Help реальный здесь нашёл!

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 01.02.2004 (Вс) 7:26

Да, сталкивался с этим. Тормозит сам COM-вызов команды доступа к листу. Поэтому нужно сокращать число таких вызовов. К примеру, сначала создать массив в памяти, а потом одной командой кинуть его на лист.
ЗЫ: ИМХО :roll:
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

NicSoft
Обычный пользователь
Обычный пользователь
 
Сообщения: 80
Зарегистрирован: 05.04.2003 (Сб) 18:51
Откуда: Егорьевск

Сообщение NicSoft » 01.02.2004 (Вс) 19:21

Я передаю просто в цикле
Код: Выделить всё
for i=1 to lngCount
   objExcel.Sheets(1).Cells(i, "A") = "...."
next

У меня 1500 строк (5 столбцов) создаются где-то 5сек. на 256МБ и 1000ГЦ.

ToNic
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 05.01.2004 (Пн) 1:10
Откуда: Ekaterinburg

Сообщение ToNic » 20.02.2004 (Пт) 5:46

Спасибо за помощь :lol: Всё стало работать быстрее ......

ToNic
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 05.01.2004 (Пн) 1:10
Откуда: Ekaterinburg

Сообщение ToNic » 16.05.2004 (Вс) 4:26

А если генерить на одногм листе ещё быстрее (~2 раза) так:
Код: Выделить всё
objExcel.Cells(i, "A") = "...."


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 4

    TopList