IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

> Delphi & Msoffice
yur
сообщение 23.03.2005 14:07
Сообщение #1


Гость






Срочно нужна ваша помощь:
Запускаю шаблон Exсel из программы, набиваю данные, сохраняю документ,закрываю Excel. Все вроде нормально, но пока не закрою свою прогу, Excel
висит в процессах, а след-но нет возможности просмотреть созданные документы. Не всегда помогает и выход из моей программы.
Как корректно проверить наличия Excel в процессах и завершить его?
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 23.03.2005 20:43
Сообщение #2


Гость






mj :no:
Код
App := nil;
 К началу страницы 
+ Ответить 
yur
сообщение 24.03.2005 8:36
Сообщение #3


Гость






К моему большому сожалению:
на App:=null эта гадость тоже не реагирует,
а на App:=nil выдает несоответствие типов.
Но все равно всем спасибо за помощь.
 К началу страницы 
+ Ответить 
mj
сообщение 24.03.2005 16:32
Сообщение #4


Adminь
****

Группа: Администраторы
Сообщений: 803
Пол: Мужской
Реальное имя: Евгений

Репутация: -  5  +


Цитата(yur @ 24.03.05 10:36)
К моему большому сожалению:
  на  App:=null эта гадость тоже не реагирует,
  а на  App:=nil выдает несоответствие типов.
Но все равно всем спасибо за помощь.

Нужно присвоить null всем переменным, в которых ты когда либо держал объекты экзеля...
Дело в том что приложение будет закрыто тока когда количество ссылок на его объекты будет равным 0...

Код
procedure TForm1.Button1Click(Sender: TObject);
var
 V: Variant;
begin
 V := CreateOleObject('Excel.Application');
 V.Visible := True;
 V.Quit;
end;

При нажатии кнопки приложение загружаеться и выгружаеться...

Напомню что публиковать e-mail адреса для таких целей запрещено, если хотите, можете просто подписаться на обновление своей темы...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
YurKaluga
сообщение 25.03.2005 10:21
Сообщение #5


Пионер
**

Группа: Пользователи
Сообщений: 53
Пол: Мужской

Репутация: -  0  +


Попробовал вставить Quit в цикл, где создаются документы - не помогает.
Excel все равно висит в процессах. Где я не то делаю?
Вот укороченный код:

Код
procedure TPrintDoc.PrintW(Sender: TObject);
var i: integer;
   File_name: string;
begin
 App:=CreateOleObject('Excel.Application');
 For i:=1 to 10 do begin
   App.WorkBooks.Add('Shablon.xlt');
   App_work:=App.WorkBooks[1].WorkSheets[1];
   App_work.Cells[1,1].Value:=. . .;

   . . .
   . . .
   . . .

   App_work.Cells[20,1].Value:=. . .;    
   File_name:='Doc.xls';
   App.ActiveWorkBook.Close(True,File_name);
   App.Quit;
 end;
   try
      App := GetActiveOleObject('Excel.Application');
      App.Quit;
    except
    end;
end;


В конце Quit оставил для пущей уверенности. Может бах в самой Delphi?
Пишу на Delphi 7 Enterprise.

Код в теги...

Сообщение отредактировано: volvo - 25.03.2005 10:46
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
mj
сообщение 27.03.2005 0:27
Сообщение #6


Adminь
****

Группа: Администраторы
Сообщений: 803
Пол: Мужской
Реальное имя: Евгений

Репутация: -  5  +


Цитата(YurKaluga @ 25.03.05 12:21)
Попробовал вставить Quit  в цикл, где создаются документы - не помогает.
Excel все равно висит в процессах. Где я не то делаю?
Вот укороченный код:

В конце Quit оставил для пущей уверенности. Может бах в самой Delphi?
Пишу на Delphi 7 Enterprise.

Код в теги...

Ну судя по этому коду при выходе из функции у тя будет как минимум 2-3 ссылки на объекты экзеля...
Для начала перенеси все переменные из глобальных в процедуру...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
YurKaluga
сообщение 28.03.2005 7:46
Сообщение #7


Пионер
**

Группа: Пользователи
Сообщений: 53
Пол: Мужской

Репутация: -  0  +


А, если я так не могу сделать? У меня в другой процедуре определяется, какой MSOffice установлен (т.е. пользователь сам выбирает, а впроцедуре определяется его выбор).
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
yur   Delphi & Msoffice   23.03.2005 14:07
NX   Попробуй следующее: procedure TForm1.FormClose...   23.03.2005 14:34
volvo   var ExcelApp : Variant; begin  try ...   23.03.2005 14:34
yur   Может как-то по-другому его открывать? С помощью G...   23.03.2005 15:11
volvo   Попробуй перед закрытием - отсоединить Excel: try ...   23.03.2005 15:45
Guest   На вставку Disconnect'a дельфя выругалась: Pr...   23.03.2005 15:57
mj   App := null;   23.03.2005 19:40
volvo   mj :no: App := nil;   23.03.2005 20:43
yur   К моему большому сожалению: на App:=null эта ...   24.03.2005 8:36
YurKaluga   Я тут решил зарегистрироваться ;) Если будут еще...   24.03.2005 11:43
mj   Нужно присвоить null всем переменным, в которых т...   24.03.2005 16:32
YurKaluga   Спасибо Adminь за напоминание (честно говоря не зн...   25.03.2005 0:55
YurKaluga   Попробовал вставить Quit в цикл, где создаются до...   25.03.2005 10:21
mj   Ну судя по этому коду при выходе из функции у тя ...   27.03.2005 0:27
YurKaluga   А, если я так не могу сделать? У меня в другой про...   28.03.2005 7:46
YurKaluga   А вообще-то, с локальными переменными вроде работа...   28.03.2005 7:54
YurKaluga   :D Огромное СПАСИБО всем, кто помогал! Особенн...   28.03.2005 8:50
Guest   Я тут подумал, а что если проблема в том, что я за...   25.03.2005 23:49


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 28.07.2025 7:16
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"