Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.06.26;
Скачать: CL | DM;

Вниз

Как правильно закрыть Excel   Найти похожие ветки 

 
АлеКо   (2003-06-06 08:55) [0]

Привет Всезнайки!
Может кто подскажет.
Открываю книгу Excel . Считываю с нее данные и закрываю.
В книге содержатся формулы, которые пересчитываются.
Так вот, после закрытия книги процесс остается в памяти и виснит.

ExcelApp := CreateOleObject("Excel.Application");
ExcelApp.Application.EnableEvents := true;
Workbook := ExcelApp.WorkBooks.Open(ConfigFile.ReadString("path","pathzach",""),False);
.....
.....
Workbook.Saved:=true;
Sheet:=UnAssigned;
Workbook:=UnAssigned;
ExcelApp:=UnAssigned;

Вот и все.


 
АлеКо   (2003-06-06 09:16) [1]

1


 
Lord Warlock ©   (2003-06-06 09:19) [2]

ExcelApp.Quit();


 
АлеКо   (2003-06-06 09:20) [3]

Не работает, а приложение выдает ошибку сервер не доступен.


 
Lord Warlock ©   (2003-06-06 09:25) [4]

написал до того как сделал ExcelApp:=UnAssigned; ?


 
АлеКо   (2003-06-06 09:30) [5]

Да конечно. Я связываю эту ошибку с тем что на листе присутствуют формулы. Для этого я специально ввожу команду
Workbook.Saved:=true;
иначе при закрытии Выдается сообщение о сахранении данных.
При работе с новым файлом который сам создаеш все проходит нормально.
Может при закрытии необходимо закрывать еще какие нибуть сопутствующие процессы.


 
Lord Warlock ©   (2003-06-06 09:32) [6]


> Может при закрытии необходимо закрывать еще какие нибуть
> сопутствующие процессы


Нет


Вот пример, правда с использованием раннего связывания, но не многим отличающийся от позднего:

ExcelApplication1.Connect;
try
ExcelApplication1.Visible[LOCALE_USER_DEFAULT]:=True;
ExcelApplication1.Workbooks.Add(null,LOCALE_USER_DEFAULT);
ExcelApplication1.ActiveWorkbook.RefreshAll;
finally
ExcelApplication1.ScreenUpdating[LOCALE_USER_DEFAULT]:=true;
ExcelApplication1.Quit
end;



 
АлеКо   (2003-06-06 09:36) [7]

Похоже на то что просто пропадает связь с процессом, хотя все необходимые данные извлекаются из книги. Если работать с книгой больше 10 сек то связь пропадает и процесс зависает.


 
Lord Warlock ©   (2003-06-06 10:32) [8]

да нет, Sleep(60000) - минута, все закрылось.
Но если до старта программы хотя бы один "неправильный" Excel висит в процессах, она отработает неправильно, те Excel не закроется.

Если сделать ExcelApplication1.Visible[LOCALE_USER_DEFAULT]:=False; Excel вообще не будет отображаться (если тебе не нужно его отображать).


 
AlikZ   (2003-06-08 15:11) [9]

Добрый день всем! Не помню уже на память - пользовался стандартными компонентами и TWordApplication и TExcelApplication (или типа этого - не помню уже название - на закладке "Servers"). Была такая же проблема. Потом посмотрел на свой код внимательно. Посидел, подумал... Оказалось до безобразия просто. Метод Connect - делал, а Disconnect - тогда не додумался. Попробовал - и самому стыдно стало - все работало. Кстати - все фишки типа Quit - не помогают при использовании по крайней мере стандартных Delpi"йских классов - пробовал. Если не получится - вышли код (или кусок), но желательно в виде готового Application"a на мыло, посмотрю - может быть чего-нибудь и подскажу.
Для справки - у тебя должно выдавать чего-нибудь типа "RPC сервер занят" или чего-нибудь в этом духе. И возникает эта штука, когда ты выполнил отчет один раз, приложение не закрыл и пытаешься выполнить его еще раз. А ты ведь уже получил коннект к Excel"ю и пытаешься подконнектиться еще раз - закономерно, не правда ли? Да... Если ты свое приложение закрываешь, открываешь и делаешь отчет опять, у тебя все работает - не так ли?
С уважением. Всего наилучшего.
Alik.


 
интересующийся   (2003-06-09 05:43) [10]

2 АлеКо

>Workbook.Saved:=true;
>Sheet:=UnAssigned;

WorkBook.Close(<parameters>, ...);

>Workbook:=UnAssigned;
>ExcelApp:=UnAssigned



 
Mitechka   (2003-06-09 10:34) [11]

> иначе при закрытии Выдается сообщение о сахранении данных.

ExcelApp.DisplayAlerts:=false;


 
firestone   (2003-06-10 12:19) [12]

По поводу "виснет" - у меня такая проблема была по win98, но в XP работает корректно.



Страницы: 1 вся ветка

Текущий архив: 2003.06.26;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.016 c
14-84627
Andrey V.
2003-06-06 11:57
2003.06.26
ТМемо & XP


14-84667
Вопрошающий
2003-06-10 13:31
2003.06.26
Загадка природы


14-84600
Плохой человек
2003-06-08 01:02
2003.06.26
Россия - Швейцария, 2:2


1-84328
RazorbladE
2003-06-15 22:42
2003.06.26
Динамическое добавление Tabsheet в TabControl


14-84533
MrMister
2003-06-06 22:59
2003.06.26
Проблемы с TMemo в Win9x