Страница 1 из 1

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

Добавлено: 20 сен 2004, 16:08
Mr.Q
Программируем под 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, его, разумеется убивать не надо. Может кто слышал о такой беде?

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