Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.49 MB
Время: 0.032 c
1-1119339737
pavel_guzhanov
2005-06-21 11:42
2005.07.11
Как преобразовать дату?


14-1118353766
u-12
2005-06-10 01:49
2005.07.11
Есть ли встроенный модем в Samsung C100?


14-1118497754
Alexander Panov
2005-06-11 17:49
2005.07.11
"Социократия" - реальность или утопия? Продолжение обсуждения.


3-1116938513
Вольный Стрелок
2005-05-24 16:41
2005.07.11
Возврат данных (не набора) из ХП


1-1119555465
Diaskhan
2005-06-23 23:37
2005.07.11
VCL outlook panel