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

Вниз

Не закрывается Excel. Почему?   Найти похожие ветки 

 
Val ©   (2003-04-10 15:54) [0]

Коллеги, такой код:

var IXLSApp: TExcelApplication;
...
IXLSApp := TExcelApplication.Create(Self);
IXLSApp.ConnectKind := ckNewInstance;
IXLSApp.Connect;
...
if Assigned(IXLSApp) then
begin
IXLSApp.Disconnect;
FreeAndNil(IXLSApp);
end;

Не закрывает Excel, почему??


 
panov ©   (2003-04-10 16:04) [1]

IXLSApp.Disconnect;
IXLSApp.Close;
IXLSApp.Free;
IXLSApp := nil;


 
Val ©   (2003-04-10 16:13) [2]

>panov © (10.04.03 16:04)
.Close - нет такого метода, судя по всему. - undeclared identifier.
Есть Quit.
Никаких изменений.


 
malkolinge ©   (2003-04-10 16:14) [3]



> IXLSApp.Free;


Разве это корректно ?
По-моему достаточно
IXLSApp := nil;




 
panov ©   (2003-04-10 16:33) [4]

Вот такой код прекрасно отрабатывает:


var
Form1: TForm1;
EA: TExcelApplication;


implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
EA := TExcelApplication.Create(Self);
EA.Workbooks.Add(EmptyParam,0);
EA.Connect;
EA.Visible[0] := True;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
EA.Disconnect;
EA.Quit;
EA.Free;
end;


 
malkolinge ©   (2003-04-10 16:44) [5]

procedure TExcelApplication.DisConnect;
begin
if Fintf <> nil then
begin
DisconnectEvents(FIntf);
if FAutoQuit then
Quit();
FIntf := nil;
end;
end;

Free IMHO - лишний, хотя в контексте данного примера(ведь ексел аплликейшн - компонент и удалять его будет владелец) все верно. ИМХО


 
Val ©   (2003-04-10 17:46) [6]

да работает, конечно, такой и у меня работает.
а вот с указанным мной типом соединения как новый процесс - не работает, не закрывает.


 
Bel ©   (2003-04-10 18:57) [7]

А ещё есть запущенные экземпляры Excel"я? Или не закрывает именно твоей программой запущенный процесс?


 
panov ©   (2003-04-10 19:17) [8]

Поменяй местами Quit и Disconnect
procedure TForm1.Button2Click(Sender: TObject);
begin
EA.Quit;
EA.Disconnect;
EA.Free;
end;


 
Val ©   (2003-04-10 19:45) [9]

>Bel © (10.04.03 18:57)
я для этого, собственно и создаю новый процесс, чтобы чужих не трогать, иначе закрывается все.
>panov © (10.04.03 19:17)
нет, все без изменений :(
если у вас закрывает при .ConnectKind := ckNewInstance;, скажите какая ОС и какой офис, попробую на аналогичных.
У меня все 2000.



 
panov ©   (2003-04-10 19:55) [10]

У меня Excel97...


 
Val ©   (2003-04-10 20:03) [11]

нет слов просто, что за фигня :(


 
panov ©   (2003-04-10 20:10) [12]

Добавлю, что ОС - WinNT 4.0 WS


 
panov ©   (2003-04-10 20:13) [13]

Также в свойствах TExcelApplication:
EA.AutoConnect := False;
EA.AutoQuit := False;


 
NA ©   (2003-04-10 23:59) [14]

На Дельфи 3 Про и Ехеле97 (тогда еще не было, правда, готовых компонент) имел шикарный глюк: при закрытии созданного документа (неважно, при активной или уже закрытой программе) получал какую-то ругню от Ехеля. С документом при этом все всегда нормально.

Разрешилось все практически случайно: обнаружил, что при двукратном подряд нажатии Ctrl-F9 исчезла пара висевших варнингов. Проверил несколько раз, и - о, чудо! - откомпилированные таким образом программы НИКОГДА НЕ ВЫЗЫВАЛИ такой ошибки при идентичном исходном коде!!!

Что это было - до сих пор не знаю. Хотя, наверное, хотелось бы узнать ;)


 
Val ©   (2003-04-11 11:18) [15]

Всем спасибо, вопрос снят.
Дело было в полном вечернем одурении и затерявшемся лишнем Disconnect"e. :)



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

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

Наверх




Память: 0.5 MB
Время: 0.022 c
1-67350
DenisS
2003-04-09 16:20
2003.04.21
Как заставить выпасть ComboBox по кнопке Enter?


14-67543
Dimodim
2003-04-02 17:42
2003.04.21
Как в Дельфи посчитать Функцию ЛАПЛАСА


14-67463
kofman
2003-04-03 21:42
2003.04.21
Помогите с AdWare-проектом


1-67291
Ifrit
2003-04-01 15:56
2003.04.21
Есть RichEdit. Как определить атрибуты текста который находится п


3-67177
ruslanyd
2003-04-01 16:40
2003.04.21
Создание базы заказов с условиями отбора товара