Проблема вот в чём...есть приложение для заполнения некоего 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] |