Стас |
Отправлено: 15.04.2004, 12:11 |
|
Не зарегистрирован
|
Уважаемые! Помогите плз., новичку.
Встала задача написания программулины для сортировки данных в Excel.
Всё бы ничего, дык столкнулся тут с проблемой выгрузки exel-я из памяти. Т.е. везде пишут, что для закрыти exel, необходимо выполнить:
OleProcedure("Quit").
Но: exel закрывается, да. Но он, зараза остаётся в списках процессов Win2000. При чём, чем больше формируешь новых файлов и скидываешь их в отдельную папку, тем более запущенных exel-ей в списке процессов.Т.е. Закрывать необходимо вручную, чего никак нельзя. Более того, оболочка под билдером должна продолжать работать в фоновом режиме, позволяя при этом просматривать xls-файлы. Ежели их, значит, сейчас начинаешь смотреть, то выскакивает только "верхняя" часть exel-я, а полей-записей не видно.
Чего я только не пробовал....ну, видно упёрся и ничего не соображаю.
Думал чо нитак сделал, но выполнил простейшую рутину из примеров:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Variant app, ws;
app = CreateOleObject("Excel.Application");
app.OlePropertySet("Visible", true);
app.OlePropertyGet("Workbooks").OleProcedure("Add");
ws = app.OlePropertyGet("Worksheets").OlePropertyGet("Item",1);
//АХТУНГ! ???????????????????
app.OleProcedure("Quit");
}
И... та же проблема.
Уважаемые профессионалы! Подскажите кто чего сможет пожалуйста!
ЗЫ. Опыта программирования на С++ практически нет — занимаюсь программируемыми логическими контроллерами )
Спасибо, Стас.
|
|
Aptem |
Отправлено: 16.04.2004, 06:30 |
|
Мастер участка
Группа: Участник
Сообщений: 349
|
Я делаю так:
CODE | Application.OlePropertyGet ( "WorkBooks", 1 ).OleProcedure ( "Close" );
Application.OleProcedure ( "Quit" ); |
И все хорошо работает !
|
|
Стас |
Отправлено: 16.04.2004, 08:01 |
|
Не зарегистрирован
|
Aptem, спасибо конечно, но не работает.
Висит ексель, зараза, в списке процессов.
Что может быть не так???
Чую, полный ламер я в этих делах и где — то не догоняю.
Пошерстил множество наших форумов, не нашёл однозначного ответа на аналогичный вопрос. Сейчас залез на немецкие....
Спасибо, если что — ICQ 168646575.
Удачи всем. |
|
|