Excel не выгружается из памяти

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
Mr.Q
Сообщения: 1
Зарегистрирован: 20 сен 2004, 15:44

Программируем под MSM-Workstation
Вызываю метод копирование исходного листа в n-ое количество листов формы : Excel.Workbooks(Report).Sheets(SelSheet).Copy(,Excel.Workbooks(Report).Sheets(Count)
из одного листа книги получаем n, заполняем их и выводим на печать или preview. Затем идет Excel.ActiveWorkbook.Close(0) и Excel.Quit.Так вот гад Excel не завершается как процесс. Если таких вызовов десятки, то память просто кончается и Excel выдает ошибку. Интересно, что при завершении приложения, из которого производится вызов Excel, процессы Excel умирают сами собой. Такая беда происходит только при вызове метода копирования листов. При обычных вызовах, пусть даже до 1000 раз в цикле, процессы Excel по Quit завершаются. Подскажите как убить Excel? Причем убиение всех Excel на машине не привестствуется - м.б. запущен Excel как приложение Office, его, разумеется убивать не надо. Может кто слышал о такой беде?
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Программируем под MSM-Workstation
Извините, что это?
Такая беда происходит только при вызове метода копирования листов. При обычных вызовах, пусть даже до 1000 раз в цикле, процессы Excel по Quit завершаются.
Наверное, копирование листов это не единственный метод, использование которого приводит к этому. Во всех языках, работающих с COM/DCOM должно быть специальное ключевое слово, которое обозначает отсутствие ссылки на интерфейс COM-объекта. (Excel, как я понимаю - это переменная типа Variant?)
В VBA, в частности, надо писать set XXX=Nothing
В Pascal - XXX:=Unassigned;
Только после этого объект, на который ранее ссылалась XXX гарантированно разрушается и освобождает память.
Ответить