Droider, а если книгу не нужно закрывать, а необходимо оставить ее для пользователя. В этом случае Excel := Unassigned; достаточно будет ?
Добавлено через 3 минуты
Mawrat исчерпывающе ответил
{Освобождение интерфейсов. Это делается через обнуление ссылок на эти интерфейсы.
Обнулить надо все ссылки на интерфейсы. Т. е., обнулить надо все соответствующие
переменные: exApp, exBooks, exBook, exSheets, exSheet. Если ссылки на интерфейсы
не обнулить, то объекты, связанные с этими интерфейсами, так и останутся в памяти.}
{Здесь следует обратить внимание на следующий момент.:
1. Если переменные exApp, exBooks, exBook, exSheets, exSheet объявлены на локальном
уровне, т. е., внутри подпрограммы — метода, процедуры или функции, то вручную можно
эти переменные не обнулять. Потому, что перед тем, как управление покинет тело
подпрограммы, такие переменные будут автоматически обнулены кодом завершения.
Такой код завершения добавляется компилятором во все подпрограммы.
2. Если переменные exApp, exBooks, exBook, exSheets, exSheet объявлены на глобальном
уровне, то такие переменные надо обнулить вручную. Обнуление следует выполнить
в момент, когда известно, что связанные объекты в программе больше не понадобятся.}
//Обнуление ссылок на интерфейсы.
VarClear(exApp); //Или так: exApp := Unassigned;
VarClear(exBooks); //Или так: exBooks := Unassigned;
VarClear(exBook); //Или так: exBook := Unassigned;
VarClear(exSheets); //Или так: exSheets := Unassigned;
VarClear(exSheet); //Или так: exSheet := Unassigned;
Добавлено через 28 секунд
В общем все понятно ))
|
|
|
Пожалуйста, выделяйте текст программы тегом [сode=pas] … [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как «свернуть» программу в трей.
3. Как «скрыться» от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
… (продолжение следует) …
Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.
Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка — 60 дней. Последующие попытки бан.
Мат в разделе — бан на три месяца…
Правильно закрыть Excel
- Подписаться на тему
- Сообщить другу
- Скачать/распечатать тему
|
|
Full Member Рейтинг (т): 10 |
Ребят, всем привет. Использую для работы с Excel следующую конструкцию. По её завершению в процессах остается все равно висеть злосчастный EXCEL.EXE. Как его оттуда убрать?
var Excel : Variant; procedure TMainForm.LoadFromExcel(); begin //создаем объект Excel := CreateOleObject(‘Excel.Application’); //что то с ним делаем Excel.DisplayAlerts := False; //блокировка уведомлений о сохранении Excel.WorkBooks[1].SaveAs(ExcelFileName); try Excel.Workbooks.Close; except end; end; |
Fr0sT |
|
Цитата seska @ 30.11.10, 17:06 По её завершению в процессах остается все равно висеть злосчастный EXCEL.EXE Так ты его и не закрываешь, закрываешь только одну вкладку. Вероятно, надо вызывать что-то вроде Excel.Quit |
seska |
|
Full Member Рейтинг (т): 10 |
Excel.Quit тоже не работает. Вероятно нужно что-то вроде этого, а что конкретно я к сожалению не могу найти ;( |
VahaC |
|
в DRKB -> ActiveX, COM и Другие технологии -> Работа с приложениями Microsoft Office -> Работа с Microsoft Excel -> Как зыкрыть Excel говорят что вот так
try Ex1.Workbooks.Close(LOCALE_USER_DEFAULT); Ex1.Disconnect; Ex1.Quit; Ex1:=nil; except end; |
andrew.virus |
|
seska, для получения результата нужно выполнить следующее:
var tmpExcel: variant; begin // создаем объект tmpExcel:=CreateOleObject(‘Excel.Application’); // что то с ним делаем tmpExcel.Workbooks.Add; // добавляем один лист в книгу // сохраняем полученный результат tmpExcel.DisplayAlerts:=false; // блокируем уведомления о сохранении tmpExcel.ActiveWorkbook.SaveAs(extractfilepath(application.ExeName) + ‘1.xls’); tmpExcel.ActiveWorkbook.Close end; з.ы.: во вложении пример с использованием данного кода …
|
seska |
|
Full Member Рейтинг (т): 10 |
Спасибо, VahaC! Вроде процесс удаляется теперь. Только код немного видоизменил, так он не компилируется.
try Excel.Workbooks.Close; except end; Excel.Quit; Excel := null; Добавлено 30.11.10, 19:16 |
Light13 |
|
Есть замечательная функция Excel := Unassigned. Перед присвоением не забыть сделать Quit. |
Fr0sT |
|
Excel := nil тоже вполне сработает |
0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
0 пользователей:
- Предыдущая тема
- Delphi: Общие вопросы
- Следующая тема
[ Script execution time: 0,0772 ] [ 18 queries used ] [ Generated: 13.04.23, 22:37 GMT ]
Would someone assist with what I’m sure is a basic error on my part please.
My goal is to open an Excel spreadsheet (invisibly), populate it, attach it to an email, send and close everything.
It is close to complete, except that Excel remains open — in the Task Manager — after the process is complete.
The block of code is:
procedure TFMain.SendEmail;
var
i, j, r: Integer;
vBody, vSaveVer: string;
vAttach: TIdAttachment;
vMftQty: array [1 .. 2] of Integer;
vQtyTot: array [1 .. 12] of Integer;
vNetTot: array [1 .. 12] of Real;
oXL, oWB, oSheet: Variant;
begin
IdMessage1.From.Address := 'sage@valid-email.co.uk';
IdMessage1.From.Domain := 'valid-email.co.uk';
IdMessage1.From.Text := 'Sage <sage@valid-email.co.uk>';
IdMessage1.Subject := 'Sage';
try
SQLQuery1.Close;
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add('SELECT comp,dept,e_addr FROM acc_email WHERE dept="' +
EMailQuery.FieldByName('Dept').Text + '"');
SQLQuery1.Open;
while not SQLQuery1.Eof do
begin
IdMessage1.Recipients.EMailAddresses :=
EMailQuery.FieldByName('E_Addr').Text;
SQLQuery2.Close;
SQLQuery2.SQL.Clear;
SQLQuery2.SQL.Add('SELECT * FROM invoice WHERE global_dept_number="' +
EMailQuery.FieldByName('Dept').Text +
'" ORDER BY account_ref, stock_code');
SQLQuery2.Open;
oXL := CreateOleObject('Excel.Application');
oXL.DisplayAlerts := False;
oWB := oXL.Workbooks.Add;
while not SQLQuery2.Eof do
begin
oXL.Cells[r, 1].Value := 'Code';
oXL.Cells[r, 2].Value := 'Description';
oXL.Cells[r, j * 2 + 1].Value := 'Qty';
oXL.Cells[r, j * 2 + 2].Value := 'Value';
Inc(r);
oWB.Worksheets.Add(After := oWB.Worksheets[oWB.Worksheets.Count]);
oSheet := oWB.ActiveSheet;
oSheet.Name := SQLQuery2.FieldByName('account_ref').Text;
oXL.Cells[1, j * 2 + 1].Value := 'Month';
r := 2;
SQLQuery2.Next;
end;
if oWB.Worksheets.Count > 1 then
oWB.Worksheets.Item['Sheet1'].Delete;
oWB.Worksheets[1].Select;
oWB.SaveAs(vSave + EMailQuery.FieldByName('Dept').Text + '.xlsx');
SQLQuery1.Next;
end;
try
if IdMessage1.Recipients.EMailAddresses <> '' then
begin
vAttach := TIdAttachmentFile.Create(IdMessage1.MessageParts,
vSave + EMailQuery.FieldByName('Dept').Text + '.xlsx');
IdSMTP1.Connect;
IdSMTP1.Send(IdMessage1);
IdMessage1.Recipients.EMailAddresses := '';
IdMessage1.Body.Text := '';
end;
finally
if IdSMTP1.Connected then
IdSMTP1.Disconnect;
end;
finally
vAttach.Free;
oSheet := Unassigned;
oWB := Unassigned;
oXL.Quit;
oXL := Unassigned;
end;
end;
Yet Excel remains in the Task Manager and as the process runs a few times over the day, they build up in the background.
Could someone direct me to either the solution or how to troubleshoot the problem?
Форум программистов Vingrad
Модераторы: Poseidon, Snowy, bems, MetalFan |
Поиск: |
|
Как корректно закрыть Excel |
Опции темы |
Akella |
|
||
Творец Профиль
Репутация: 36
|
использую WinXP, ExcelXP, D7 На дополнительной модальной форме лежит компонена TExcelApplication со страницы Servers Uses System, …., ExcelXP; WorkBook: _WorkBook; В нажатия кнопки коде пишу: выполняю какие-то действия Excel.DisConnect;//это не помогает Открываю диспетчер задач — висит Excel, исчезает только после закрытия основного окна, т.е. выхода из программы. Использовать CreetOleObject не хочется, т.к. много переделывать, а уже все работает идеально кроме закрытия Excel`я весь код я уже выкладывал. |
||
|
|||
Cashey |
|
||
Бессмертный Профиль
Репутация: 2
|
Выгрузи переменные WorkBook и Sheet из памяти. ——————— библия учит любить ближнего, а камасутра обучает как именно |
||
|
|||
Albinos |
|
||
Шустрый Профиль Репутация: 1
|
А чего нибудь типа Close() там нет? |
||
|
|||
Georg4 |
|
||
Опытный Профиль Репутация: 0
|
Отличный вопрос Испольуя раннее связывание Вот и все! ——————— Никто и никогда не должен решать одну проблему дважды |
||
|
|||
Kesh |
|
||
Эксперт Профиль
Репутация: 4
|
Georg4 Ты бы весь цикл статей привел… Ибо это есть гуд… ——————— |
||
|
|||
Cashey |
|
||
Бессмертный Профиль
Репутация: 2
|
Georg4, все твои рекоммендации сводятся к одному Quit и выгрузка из памяти , что я и говорил. По поводу статей, я и сам бы мог поделиться не малым опытом работы с екселем, но для етого хорошо было бы создать отдельный форум, что бы добро не пропало , а главное для того, что бы этим могли воспользоваться и те кто работает с другими языками и бывает на других форумах. ——————— библия учит любить ближнего, а камасутра обучает как именно |
||
|
|||
|
Правила форума «Delphi: Общие вопросы» | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) |
0 Пользователей: |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
Содержание
- Delphi закрыть все эксель
- Delphi закрыть все эксель
- Клёвый код
- Решаем задачи Абрамян на C. Matrix78
- Решаем задачи Абрамян на C. Matrix77
- Решаем задачи Абрамян на C. Matrix76
- Решаем задачи Абрамян на C. Matrix75
- Решаем задачи Абрамян на C. Matrix74
- Решаем задачи Абрамян на C. Matrix73
- Решаем задачи Абрамян на C. Matrix72
- Решаем задачи Абрамян на C. Matrix71
- Решаем задачи Абрамян на C. Matrix70
- Решаем задачи Абрамян на C. Matrix69
- Delphi закрыть все эксель
Delphi закрыть все эксель
Пожалуйста, выделяйте текст программы тегом [сode=pas] . [/сode] . Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Соблюдайте общие правила форума
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как «свернуть» программу в трей.
3. Как «скрыться» от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как запустить программу/файл? (и дождаться ее завершения)
5. Как перехватить API-функции, поставить hook? (перехват сообщений от мыши, клавиатуры — внедрение в удаленное адресное прстранство)
. (продолжение следует) .
Внимание:
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка — 60 дней. Последующие попытки — бан.
Мат в разделе — бан на три месяца.
Полезные ссылки:
MSDN Library FAQ раздела Поиск по разделу Как правильно задавать вопросы
Выразить свое отношение к модераторам раздела можно здесь: Rouse_, Krid
Источник
Delphi закрыть все эксель
У меня форма запускает через Ole Excel
а сама всплывает поверх его (из нее я перетаскиваю в ячейки всякую шнягу)
она держит application екселя до своего закрытия,
а при закрытии этой формы я все сохраняю и закрываю ексель
Так вот если в екселе не редактируется ячейка все проходит на ура
а ежели редактируется, то он игнорирует команды на закрытие и остается открытым.
Вопрос: Как бы его вывести из состояния редактирования ячейки?
YuriyR
От: | Softwarer | http://softwarer.ru | |
Дата: | 06.07.04 11:16 | ||
Оценка: | +1 |
Здравствуйте, yuriyr, Вы писали:
Y> xlap.Quit;
Y>Так вот если в екселе не редактируется ячейка все проходит на ура
Y>а ежели редактируется, то он игнорирует команды на закрытие и остается открытым.
Ответы на такие вопросы легче искать, сделав xlap.visible := true. В данном случае, если мне не изменяет память, Excel задает тебе вопрос о том, надо ли сохранять сделанные изменения, и, соответственно, не выходит, пока не ткнешь в Yes или No в невидимом окне Соответственно, надо явно сохранить файл.
От: | yuriyr | |
Дата: | 06.07.04 11:23 | |
Оценка: |
Здравствуйте, Softwarer, Вы писали:
S>Здравствуйте, yuriyr, Вы писали:
Y>> xlap.Quit;
Y>>Так вот если в екселе не редактируется ячейка все проходит на ура
Y>>а ежели редактируется, то он игнорирует команды на закрытие и остается открытым.
S>Ответы на такие вопросы легче искать, сделав xlap.visible := true. В данном случае, если мне не изменяет память, Excel задает тебе вопрос о том, надо ли сохранять сделанные изменения, и, соответственно, не выходит, пока не ткнешь в Yes или No в невидимом окне Соответственно, надо явно сохранить файл.
Нет первая команда xlap.DisplayAlerts := False;
Она отменяет все вопросы Excel на счет подтверждения сохранения
Но и она — самая первая — не выполняется exeption выдает каманда игнорирована
От: | Softwarer | http://softwarer.ru | |
Дата: | 06.07.04 11:28 | ||
Оценка: |
Здравствуйте, yuriyr, Вы писали:
Y>Нет первая команда xlap.DisplayAlerts := False;
Виноват, действительно прореагировал «на рефлексах». Прошу прощения.
От: | akasoft | |
Дата: | 06.07.04 13:36 | |
Оценка: |
Здравствуйте, yuriyr, Вы писали:
Y>Нет первая команда xlap.DisplayAlerts := False;
Y>Она отменяет все вопросы Excel на счет подтверждения сохранения
Я тебе конечно верю, но и ты мне поверь, иногда Excel капризничает, иногда привелегий не хватает. Попробуй с алертами, посмотри, что он там пишет и дай ему это.
От: | yuriyr | |
Дата: | 06.07.04 16:25 | |
Оценка: |
Здравствуйте, akasoft, Вы писали:
A>Я тебе конечно верю, но и ты мне поверь, иногда Excel капризничает, иногда привелегий не хватает. Попробуй с алертами, посмотри, что он там пишет и дай ему это.
Попробовал и так. Изменений нет
OLE error ‘Вызов был отклонен’
Использую ExcelXP
Help! Please
От: | Slicer [Mirkwood] | https://ru.linkedin.com/in/maksim-gumerov-039a701b | |
Дата: | 06.07.04 19:01 | ||
Оценка: |
Да не команду на закрытие он игнорирует, а любые OLE-вызовы
От: | Григоричев Денис | |
Дата: | 08.07.04 05:15 | |
Оценка: | 6 (1) |
От: | Slicer [Mirkwood] | https://ru.linkedin.com/in/maksim-gumerov-039a701b | |
Дата: | 08.07.04 09:04 | ||
Оценка: |
Логично
Интересно, а нормальное решение есть? Без имитации клавиатурного ввода?
Ведь такая имитация плоха уже тем, что при этом отменяются внесенные юзверем в ячейку изменения. Сравните это с поведением самого Excel: если мы пытаемся его закрыть в момент редактирования, внесенные в ячейку изменения считаются подтвержденными.
Кстати, напомню, что в ряде случаев такая блокировка со стороны Excel очень логична (если, например, юзверь сидит в диалоговом окне).
Во многих случаях может подойти открытие данных как внедренного OLE-объекта. При этом как только пользователь переключится на другой элемент нашего окна, automation закроет эксель (в т.ч. если эксель был в режиме редактирования — но не в диалоговом окне). Правда, есть и досадный глюк (по кр. мере, в D6): если в design-time открыть (open, а не edit) объект в OLEContainer, а потом закрыть только книгу (но не эксель), будет закрыта и эксель тоже. А вот если то же проделать в рантайме — эксель останется открыта. Подробно не смотрел — может, как-то это регулируется. Ну сопровождение этого глюка — если один раз объект открыли в режиме open и закрыли, потом с ним можно делать что угодно — но в режиме просмотра в контейнере он при этом будет заштрихован серым (как если в данный момент редактируется в режиме open).
На выбор еще три варианта, не полностью, но решающих проблему: 1) ждем, пока Excel не согласна будет выполнить нашу команду (юзер покинет диалог или выйдет из режима редактирования), 2) блокируем пользовательский интерфейс Excel, 3) открываем данные в режиме «только для чтения» (проблема с диалогами остается).
Кстати, а зачем понадобилось показывать юзеру эксель и разрешать редактирование? И почему убивать Excel мы пытаемся из нашего приложения? Раз уж юзеру дали возможность полазить по таблице, так может, он сам определится, когда ему выходить?
От: | Григоричев Денис | |
Дата: | 09.07.04 05:27 | |
Оценка: |
От: | Slicer [Mirkwood] | https://ru.linkedin.com/in/maksim-gumerov-039a701b | |
Дата: | 09.07.04 09:52 | ||
Оценка: |
ГД>Ксати, есть способ убить процесс Excel, если прогу «срубили», например из TaskMan?
Это вряд ли хорошо — в экселе могут быть открыты чьи-то еще документы, кроме подсунутых Вами
От: | yuriyr | |
Дата: | 09.07.04 11:21 | |
Оценка: |
Сделал так
Не могу использовать OleContainer так как суть работы заключается в OLE перетаскивании данных из одного обьекта
в ексель, а сним при потере фокуса в контейнере нифига не сделаешь.
Источник
Клёвый код
Скриптописание и кодинг
Решаем задачи Абрамян на C. Matrix78
Matrix78. Дана матрица размера $$M times N$$. Упорядочить ее строки так, чтобы их минимальные элементы образовывали убывающую последовательность.
Решаем задачи Абрамян на C. Matrix77
Matrix77. Дана матрица размера $$M times N$$. Упорядочить ее столбцы так, чтобы их последние элементы образовывали убывающую последовательность.
Решаем задачи Абрамян на C. Matrix76
Matrix76. Дана матрица размера $$M times N$$. Упорядочить ее строки так, чтобы их первые элементы образовывали возрастающую последовательность.
Решаем задачи Абрамян на C. Matrix75
Matrix75. Дана матрица размера $$M times N$$. Элемент матрицы называется ее локальным максимумом, если он больше всех окружающих его элементов. Поменять знак всех локальных максимумов данной матрицы на противоположный. При решении допускается использовать вспомогательную матрицу.
Решаем задачи Абрамян на C. Matrix74
Matrix74. Дана матрица размера $$M times N$$. Элемент матрицы называется ее локальным минимумом, если он меньше всех окружающих его элементов. Заменить все локальные минимумы данной матрицы на нули. При решении допускается использовать вспомогательную матрицу.
Решаем задачи Абрамян на C. Matrix73
Matrix73. Дана матрица размера $$M times N$$. После последнего столбца, содержащего только отрицательные элементы, вставить столбец из нулей. Если требуемых столбцов нет, то вывести матрицу без изменений.
Решаем задачи Абрамян на C. Matrix72
Matrix72. Дана матрица размера $$M times N$$. Перед первым столбцом, содержащим только положительные элементы, вставить столбец из единиц. Если требуемых столбцов нет, то вывести матрицу без изменений.
Решаем задачи Абрамян на C. Matrix71
Matrix71. Дана матрица размера $$M times N$$. Продублировать столбец матрицы, содержащий ее минимальный элемент.
Решаем задачи Абрамян на C. Matrix70
Matrix70. Дана матрица размера $$M times N$$. Продублировать строку матрицы, содержащую ее максимальный элемент.
Решаем задачи Абрамян на C. Matrix69
Matrix69. Дана матрица размера $$M times N$$ и целое число $$K$$ $$(1 le K le $$N$$)$$. После столбца матрицы с номером $$K$$ вставить столбец из единиц.
Источник
Delphi закрыть все эксель
Проблема такая:
Запускаю Excel (с помощбю стандартных компонент Delphi 5)
Работаю
Отсоединяюсь — Excel остаётся запущеным.
Как мне его закрыть?
вот код:
ExcelPage_Edit.Items.Clear;
try
//Запускаем Excel
Excel := TExcelApplication.Create(Application);
Excel.ConnectKind := ckNewInstance;
Excel.AutoQuit := true;
Excel.connect;
// Открываем файл
Workbook := Excel.Workbooks.Open(self.Price.FullName, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, true, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, false, xlLCID);
// Читаем название всех страниц и пишем
// в итемы для TComboBox (ExcelPage_Edit)
Worksheets := Workbook.Worksheets;
for i:=1 to Worksheets.Count do begin
WorkSheet := (Worksheets.Item[i] as ExcelWorkSheet);
ExcelPage_Edit.Items.Add(WorkSheet.Get_Name);
end;
// Закрываем файл
Workbook.Close(false, EmptyParam, EmptyParam, xlLCID);
Workbook := nil;
// Теперь закрываем Excel
// Excel.FreeNotification(Application);
// Excel.Disconnect;
Excel.Quit;
// Excel.RemoveFreeNotification(Application);
Не работает. — Не закрывается Excel
не Quit, не любой из закоментированных вариантов, не их комбинции.
Объясните в чём тут дело, и как переделать чтоб Excel закрылся.
← →
Наталия ( 2002-11-28 06:53 ) [1]
← →
tga ( 2002-11-28 07:02 ) [2]
Наталия © Спасибо за подсказку — но она НЕ РАБОТАЕТ. Вообще выдаётся ошибка при компиляции — неопределённый идентификатор «UnAssigned» :((((
← →
Наталия ( 2002-11-28 07:25 ) [3]
← →
Fantasist ( 2002-11-29 00:18 ) [4]
Ну добавь Excel.Free.Деструктор TOleControl много чего освобождает.
> Деструктор TOleControl много чего освобождает
В смысле TOleServer.
← →
AlexGreG ( 2002-12-02 08:14 ) [6]
x.Workbooks.Close(xlLCID);
x.Disconnect;
x.Quit;
хотя я даже не знаю, что за параметр такой
LCID, но у меня работает :
Если кто знает, что этот параметр значит, напишите пожалуйста.
← →
AlexGreG ( 2002-12-02 08:16 ) [7]
сам Excel, непонятно почему, выгружается из памяти при закрытии программы.
(я использую компоненту ExcelApplication с закладки Servers)
← →
AlexGreG ( 2002-12-02 08:40 ) [8]
Excel выгружается, когда компонент TExcelApplication освобождает память, т.е. при TExcelApplication.Free;
← →
OlDemon ( 2002-12-02 10:21 ) [9]
А я использую позднее связывание и просто делаю FExcel:= nil
что освобождает память и убивает процесс. Может и вам поможет 🙂
Как вариант — по крайней мере у меня эта проблема решена именно так.
E := CreateOleObject(«Excel.Application»);
.
E.Quit;
E := 0; // вот это ОНО
← →
Fantasist ( 2002-12-02 20:56 ) [11]
> Илайдж (02.12.02 10:42)
> Как вариант — по крайней мере у меня эта проблема решена
> именно так.
Это уже было выше:
> Наталия © (28.11.02 07:25)
> E:=CreateOleObject(«Excel.Application»);
> .
> E:=UnAssigned;
Но мы не любим позднее связывание. 🙂
> Excel выгружается, когда компонент TExcelApplication освобождает
> память, т.е. при TExcelApplication.Free;
И енто уже было:
← →
kse ( 2002-12-09 16:23 ) [12]
Мой ответ немного ( :))) ) запоздал, но тем не менее, мож кто читать будет.
У меня так
ea: TExcelApplication;
eb: TExcelWorkbook;
.
eb.Close;
eb.Disconnect;
ea.Quit;
ea.Disconnect;
Excel закрывается без вопросов и в процессах его нет. (Иль мож я чего не понимаю)
Delphi 6, Win2K, Excel2000.
Источник