Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.06.26;
Скачать: [xml.tar.bz2];

Вниз

Как правильно закрыть 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.031 c
1-84237
Shirson
2003-06-11 14:38
2003.06.26
Запуск другой программы и ожидаение её завершения.


3-83949
DBDev
2003-06-04 13:07
2003.06.26
Как подключить БД (Attach Database) программно и из инсталлятора?


3-83899
mic_2000
2003-05-29 12:00
2003.06.26
Вопросик по rFunc для Ib6


7-84782
demonyator
2003-04-09 01:00
2003.06.26
При подмене Explorer a своей прогой XP загружается на 30% дольше.


7-84800
Ал
2003-04-16 15:27
2003.06.26
Как программно включить-выключить Active Desktop?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский