Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как закрыть книгу Excel 
:(
    Опции темы
SkyHawk
Дата 21.9.2006, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 164
Регистрация: 17.8.2006
Где: г. Новосибирск

Репутация: 1
Всего: 2



Сабж. По нажатию одной кнопки на форме создаю Ole-объект, открываю файл.
По нажатию другой - закрываю файл. Процесс Excel остается висеть. Как побороть данную неприятность?
Код прилагается.
Код

void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
  Excel=Variant::CreateObject("Excel.Application");

  AnsiString FileNakl=GetCurrentDir()+"\\1.xls";
  Excel.OlePropertyGet("WorkBooks").OleProcedure("Open",FileNakl.c_str());
  Sheet=Excel.OlePropertyGet("WorkSheets",1);
  Excel.OlePropertySet("Visible",true);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn2Click(TObject *Sender)
{
  Excel.OleProcedure("Quit");
}
//---------------------------------------------------------------------------

--------------------
Быть может все, что может быть, И даже то, что быть не может.
PM MAIL WWW   Вверх
SkyHawk
Дата 21.9.2006, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 164
Регистрация: 17.8.2006
Где: г. Новосибирск

Репутация: 1
Всего: 2



Все. Нашел ответ.
Тема закрыта.
--------------------
Быть может все, что может быть, И даже то, что быть не может.
PM MAIL WWW   Вверх
Bima
Дата 21.9.2006, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 15.8.2006

Репутация: 2
Всего: 2



так овет в студию

Добавлено @ 13:36 
кстати, то же хотел предложить один вариант:
Закрытие Excel


--------------------
Чтобы дойти до цели, надо идти.

Клавиатура и мышь - это главные инструменты прогресса.
PM MAIL WWW   Вверх
SkyHawk
Дата 22.9.2006, 03:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 164
Регистрация: 17.8.2006
Где: г. Новосибирск

Репутация: 1
Всего: 2



Вот он, код...
Предложили умные люди  smile 
Код

 Excel.OlePropertyGet("WorkBooks",1).OleProcedure("Close");
 Excel.OleProcedure("Quit");
 Sheet.Clear();
 Excel.Clear();


--------------------
Быть может все, что может быть, И даже то, что быть не может.
PM MAIL WWW   Вверх
CLIPSA
Дата 17.11.2006, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 6.10.2006

Репутация: 1
Всего: 2



Твой код не работает. Процесс как висел так и висит 
PM MAIL   Вверх
CLIPSA
Дата 17.11.2006, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 6.10.2006

Репутация: 1
Всего: 2



Функцией 
Код

CreateObject("Excel.Application");
 я так понимаю создаётся процесс. А как убить этот процесс  smile 
PM MAIL   Вверх
CLIPSA
Дата 18.11.2006, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 6.10.2006

Репутация: 1
Всего: 2



Ни кто не знает?
PM MAIL   Вверх
Reptile
Дата 20.11.2006, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 30.9.2006
Где: Украина, Первомай ск

Репутация: 2
Всего: 3



В Builder-е не пробовал, а в Delphi 
Код

ExcelApplication1.Quit;
ExcelApplication1.Disconnect;

Но до этого  нельзя ничего заносить в Excel, иначе будет сообщение о сохранении документа.

Это сообщение отредактировал(а) Reptile - 20.11.2006, 13:18
PM MAIL   Вверх
stmamont
Дата 20.11.2006, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 343
Регистрация: 13.3.2004
Где: влг

Репутация: 3
Всего: 3



Reptile, можно отключить уведомления. и все нормально.
Схожая проблема.
Делаю
CreateObject("Excel.Application");
А когда потом пользователь закрывает окошко excel, то процесс остается висеть.


--------------------
user posted image
PM MAIL ICQ   Вверх
Vyacheslav
Дата 20.11.2006, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 47
Всего: 59




Цитата(Reptile @  20.11.2006,  13:14 Найти цитируемый пост)
Но до этого  нельзя ничего заносить в Excel, иначе будет сообщение о сохранении документа.


Код

  excel.OlePropertyGet("WorkBooks",1).OleProcedure("SaveAs",aFileName);
 excel.OleProcedure("Quit");

В таком виде у меня все закрывается



--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
Partizan
Дата 20.11.2006, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 7
Всего: 67



Цитата(Reptile @ 20.11.2006,  13:14)
Но до этого  нельзя ничего заносить в Excel, иначе будет сообщение о сохранении документа.

насколько я помню все эти дополнительные диалоги можно отключить примерно так:
Код

Excel_App.OlePropertySet("DisplayAlerts", false);



--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Reptile
Дата 20.11.2006, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 30.9.2006
Где: Украина, Первомай ск

Репутация: 2
Всего: 3



Цитата(Vyacheslav @  20.11.2006,  15:01 Найти цитируемый пост)
В таком виде у меня все закрывается

Конечно закрывается smile  Ты же сохранил  smile 

Цитата(stmamont @  20.11.2006,  14:19 Найти цитируемый пост)
А когда потом пользователь закрывает окошко excel, то процесс остается висеть. 

Я тоже на днях с этим столкнулся, но я же написал код который мне помог, вот полностью :
Код

ExcelWorksheet1.Disconnect;
ExcelWorkbook1.Disconnect;
ExcelApplication1.Visible[icid] := True;//делаю окно видимым(до этого оно не видимо)
ExcelApplication1.Quit;//Выхожу
ExcelApplication1.Disconnect;//Отключаюсь

После этого процесс пропал smile 


P.S. Извените что на Delphi под рукой Builder-а нету smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.1034 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.