Текущий архив: 2005.07.11;
Скачать: CL | DM;
ВнизExcel остается в процессах Найти похожие ветки
← →
ruslan_as (2004-09-15 11:13) [0]Помогите разобраться, что не правильно сделано. Открываю шаблон Excel, заполняю его и сохраняю под другим именем и показываю его:
Excel := CreateOleObject("Excel.Application");
Excel.DisplayAlerts := false;
Excel.WorkBooks.Open(ExtractFileDir(Application.ExeName)+"\Month.xlt");
Sheet := Excel.Application.Worksheets.Item[1];
.... Заполняю данными
Excel.Visible := True;
Excel.ActiveWorkbook.SaveAs(OS.FileName+".xls");
Но после закрытия пользователем файла остается процесс "Excel". Почему?
← →
Суслик © (2004-09-15 11:17) [1]У меня были аналогичные проблемы.
Решил так:
fApp.Visible := True;
fApp.Interactive := True;
fApp.DisplayAlerts := True;
fApp.ScreenUpdating := True;
fApp.Application.WindowState := TOLEEnum(xlMaximized);
fApp.UserControl := True;
Скажу честно - не знаю какая из этих строк решает проблему. Такая комбинация строк была найдена перебором, т.к. в доке ничего путного не написано. Про UserControl мне сказали на Королевстве.
← →
Romkin © (2004-09-15 13:03) [2]Ну-ну. Думаю, вызов Excel.Quit все же проще?
← →
Суслик © (2004-09-15 13:32) [3]
> Ну-ну. Думаю, вызов Excel.Quit все же проще?
читаем внимательно вопрос :)))
а именно
> Но после закрытия пользователем файла остается процесс "Excel".
> Почему?
какой, говоришь, здесь Quit?
← →
Romkin © (2004-09-15 13:47) [4]Упс. А действительно, если закрыть не сам excel, а именно книгу - остается...
Но Excel.UserControl := True; Решает проблему :)
← →
суслик © (2004-09-15 13:57) [5]
> Но Excel.UserControl := True; Решает проблему :)
да, скорее всего именно эта строка и решает.
← →
YurikGL © (2004-09-15 21:39) [6]Excel := unassigned в конце добавить надо...
А лучше
try
Excel:=Create.....
finally
Excel := unassigned
end;
← →
Суслик © (2004-09-16 09:33) [7]
> [6] YurikGL © (15.09.04 21:39)
> Excel := unassigned в конце добавить надо...
Зачем?
И так прекрасно очистится при выходе из метода.
← →
YurikGL © (2004-09-16 12:05) [8]
> Суслик © (16.09.04 09:33) [7]
Бог его знает этот ексель... Просто всегда работал так и проблем никогда не возникало.
← →
r_nikola © (2004-09-16 18:04) [9]YurikGL прав!
Только так Excel освободится и исчезнет из процессов. Простого Quit недостаточно.
Тут недавно уже была похожая ветка. Много чего там предлагали, но Excel := unassigned там так и не было предложено.
Потом сам с этим разбирался, прочитал в хелпе, что только так освободится OLE-объект (он освободится сам, когда на него не будет ссылок, а ссылку мы как раз этой строчкой и убираем).
← →
Суслик © (2004-09-17 14:59) [10]
> только так освободится OLE-объект
ерунда, все интерфесы при выходе из области видимости очищаются сами...
и при выходе из процедуры локальная переменная excel очистится замечательно.
Страницы: 1 вся ветка
Текущий архив: 2005.07.11;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.043 c