Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > excel + builder + ole


Автор: Андре 7.4.2005, 16:43
Проблема вот в чём...есть приложение для заполнения некоего xlt шаблона и отображения его на форме...код для этого выглядит следующим образом..

Код

// устанавливаем путь к файлу шаблона
AnsiString sFile = GetCurrentDir()+"\\abc.xlt";
// инициализируем Excel, открываем этот шаблон
try 
{
App=Variant::GetActiveObject("Excel.Application");
} 
catch(...) 
{
try 
{ 
App=Variant::CreateObject("Excel.Application"); 
 }
catch (...) 
{
Application->MessageBox("Невозможно открыть Microsoft Excel!"
"Возможно это приложение на компьютере не установлено.","Ошибка",MB_OK+MB_ICONERROR);
 }
}
try 
{
App.OlePropertyGet("WorkBooks").OleProcedure("Open",sFile.c_str(),0,false,1);
Sh=App.OlePropertyGet("WorkSheets",1);
} 
catch(...) 
{
Application->MessageBox("Ошибка открытия книги Microsoft Excel!","Ошибка",MB_OK+MB_ICONERROR);
}
// заносим значение из поля ввода в ячейку 2, 1
AnsiString data;
data = Edit1->Text;
try 
{
Variant  cur = Sh.OlePropertyGet("Cells", 2,1);
cur.OlePropertySet("Value", data.c_str());
} 
catch(...) { ; }
//сохраняем файл с именем FIRM.XLS
App.OlePropertySet("DisplayAlerts", false);
App.OlePropertyGet("WorkSheets",1).OleProcedure("SaveAs","C:\\Pr\\Firm.xls");
//отображаем файл в приложении
PB1->OleContainer1->CreateObjectFromFile("C:\\Pr\\Firm.xls", false);
//Освобождаем ресурсы
Sh.Clear();
App.Clear();
 


И всё вроде бы ничего, работает...один раз за один запуск проги....в следующие разы выдаёт ошибку...может надо как-то закрывать эксель?
Подскажите пожалуйста.

Может кто-то уже делал подобное, знает более эффективный способ (не через сохранение файла).[/code]

Автор: _hunter 7.4.2005, 17:28
попробуй в конце добавить
App = Unassigned;

Автор: Андре 8.4.2005, 16:04
Блин, без полезно...чож делать то?

Автор: _hunter 8.4.2005, 16:21
а где ошибка? + что такое App?

Автор: Adil' 8.4.2005, 16:45
Попробуй СeateObjectFromFilе закомментировать - тоже самое?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)