Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.013 c
1-67227
zDEUSz
2003-04-10 14:43
2003.04.21
Как дописать строку в существующий файл?


14-67440
Мазут Береговой Рюрикович
2003-04-04 11:05
2003.04.21
Вот вам и 1-ое апреля!


14-67449
VEG
2003-04-04 17:02
2003.04.21
На чем такое можно написать?


14-67510
BaDeVlad
2003-04-02 11:49
2003.04.21
Как продать программу?


4-67639
NikotiN
2003-02-24 14:27
2003.04.21
как перехватить сообщение на открытие файла




   Наверх