![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() |
yur |
![]()
Сообщение
#1
|
Гость ![]() |
Срочно нужна ваша помощь:
Запускаю шаблон Exсel из программы, набиваю данные, сохраняю документ,закрываю Excel. Все вроде нормально, но пока не закрою свою прогу, Excel висит в процессах, а след-но нет возможности просмотреть созданные документы. Не всегда помогает и выход из моей программы. Как корректно проверить наличия Excel в процессах и завершить его? |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
mj :no:
Код App := nil; |
yur |
![]()
Сообщение
#3
|
Гость ![]() |
К моему большому сожалению:
на App:=null эта гадость тоже не реагирует, а на App:=nil выдает несоответствие типов. Но все равно всем спасибо за помощь. |
mj |
![]() ![]()
Сообщение
#4
|
![]() Adminь ![]() ![]() ![]() ![]() Группа: Администраторы Сообщений: 803 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
Цитата(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 адреса для таких целей запрещено, если хотите, можете просто подписаться на обновление своей темы... |
YurKaluga |
![]()
Сообщение
#5
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 53 Пол: Мужской Репутация: ![]() ![]() ![]() |
Попробовал вставить 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 |
mj |
![]()
Сообщение
#6
|
![]() Adminь ![]() ![]() ![]() ![]() Группа: Администраторы Сообщений: 803 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
Цитата(YurKaluga @ 25.03.05 12:21) Попробовал вставить Quit в цикл, где создаются документы - не помогает. Excel все равно висит в процессах. Где я не то делаю? Вот укороченный код: В конце Quit оставил для пущей уверенности. Может бах в самой Delphi? Пишу на Delphi 7 Enterprise. Код в теги... Ну судя по этому коду при выходе из функции у тя будет как минимум 2-3 ссылки на объекты экзеля... Для начала перенеси все переменные из глобальных в процедуру... |
YurKaluga |
![]()
Сообщение
#7
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 53 Пол: Мужской Репутация: ![]() ![]() ![]() |
А, если я так не могу сделать? У меня в другой процедуре определяется, какой MSOffice установлен (т.е. пользователь сам выбирает, а впроцедуре определяется его выбор).
|
![]() ![]() |
![]() |
Текстовая версия | 28.07.2025 7:16 |