Программируем под 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, его, разумеется убивать не надо. Может кто слышал о такой беде?
Excel не выгружается из памяти
Модератор: Naeel Maqsudov
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Извините, что это?Программируем под MSM-Workstation
Наверное, копирование листов это не единственный метод, использование которого приводит к этому. Во всех языках, работающих с COM/DCOM должно быть специальное ключевое слово, которое обозначает отсутствие ссылки на интерфейс COM-объекта. (Excel, как я понимаю - это переменная типа Variant?)Такая беда происходит только при вызове метода копирования листов. При обычных вызовах, пусть даже до 1000 раз в цикле, процессы Excel по Quit завершаются.
В VBA, в частности, надо писать set XXX=Nothing
В Pascal - XXX:=Unassigned;
Только после этого объект, на который ранее ссылалась XXX гарантированно разрушается и освобождает память.