Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Ошибка при закрытии Excel из под Builder 6!

Ответить
Настройки темы
C/C++ - Ошибка при закрытии Excel из под Builder 6!

Новый участник


Сообщения: 10
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: SGKorotkow
Дата: 02-05-2008
День добрый, господа!

помогите решить следующую проблему:
открываю через OLE лист эксэля с помошью команд

AppX = Variant::CreateObject("Excel.Application");
AppX.OlePropertyGet("WorkBooks").OleProcedure("Open",XslFile.c_str());
ShX=AppX.OlePropertyGet("WorkSheets",3);

всё нормально работает! считаваю и записываю данные, но при попытке сохранить и выйти их приложения

AppX.OlePropertyGet("WorkBooks",1).OleProcedure("Save");
AppX.OlePropertyGet("WorkBooks").OleProcedure("Close");
AppX.OleProcedure("Quit");

вылезает ошибка
IsBound() failed @ c:\bcb\emuvcl\ulilcls.h/4249

что примечательно, если не производить никаких операций с данными, а просто открыть и закрыть эксэль с помощью перечисленных команд, всё срабатывает без ошибок!!!

Если кто знает, намекните хоть в чём проблема!!1

Отправлено: 18:13, 30-04-2008

 

Ветеран


Сообщения: 3806
Благодарности: 824

Профиль | Отправить PM | Цитировать


Чисто гипотетически - а после Save ждать не надо?

Отправлено: 22:51, 30-04-2008 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 10
Благодарности: 0

Профиль | Отправить PM | Цитировать


так ведь ошибка появляется сразу, не давая выполнить ни одной комманды!
кстати, ошибка одинаковая на каждой строке, если другие отулючить!

Отправлено: 10:00, 02-05-2008 | #3


Старожил


Сообщения: 181
Благодарности: 43

Профиль | Отправить PM | Цитировать


Ошибка возникает при компиляции, я так понимаю?
Приведи побольше кода. Особенно считывание и запись данных.
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:36, 03-05-2008 | #4


Новый участник


Сообщения: 10
Благодарности: 0

Профиль | Отправить PM | Цитировать


нет, компиляция проходит нормально! без ошибок!
ошибка возникает при вызове процедур для закрытия и сохранения экселевского до-та!

открытие файла:
void __fastcall TForm1::ExcelOpenXSL(AnsiString XslFile)
{
if (XslFile!="")
{AppX = Variant::CreateObject("Excel.Application");
AppX.OlePropertyGet("WorkBooks").OleProcedure("Open",XslFile.c_str());
ShX=AppX.OlePropertyGet("WorkSheets",3);
}
else
{
ShowMessage("Не заполнено поле Служебка(xls)!");
}
if(!AppX.IsEmpty())AppX.OlePropertySet("Visible",true);

запись данных:
void __fastcall TForm1::toExcelCell(int Row,int Column, AnsiString data, Variant Sh)
{
try {
Variant cur = Sh.OlePropertyGet("Cells", Row,Column);
cur.OlePropertySet("Value", data.c_str());
} catch(...) { ; }

чтение данных:
Variant __fastcall TForm1::fromExcelCell(int Row, int Column, Variant Sh)
{
Variant result,cur;
cur = Sh.OlePropertyGet("Cells",Row,Column);
result = cur.OlePropertyGet("Value");
return result;
}

Последний раз редактировалось SGKorotkow, 04-05-2008 в 17:08.


Отправлено: 16:23, 04-05-2008 | #5

pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


у меня с экселем была какая-то проблема, она решалась просто: AppX->Release(); А вообще я советую сначала отладить на скрипте:
Код: Выделить весь код
// test.js
var AppX = new ActiveObject("Excel.Application");
AppX.WorkBooks.Open(/*XslFile.c_str()*/ "my_workbook");
var ShX=AppX.WorkSheets(3);

AppX.WorkBooks(1).Save();
AppX.WorkBooks.Close();
AppX.Quit();
Это сообщение посчитали полезным следующие участники:

Отправлено: 07:13, 05-05-2008 | #6


Старожил


Сообщения: 181
Благодарности: 43

Профиль | Отправить PM | Цитировать


1. Откуда у тебя взялся этот файл c:\bcb\emuvcl\ulilcls.h? В моем BCB6 его нет, и папки emuvcl нет.
2. Твой код у меня работате нормально.
3. try/catch, думаю, лишнее.

Давай больше кода.

Отправлено: 01:15, 06-05-2008 | #7


Новый участник


Сообщения: 10
Благодарности: 0

Профиль | Отправить PM | Цитировать


не знаю почему система выдаёт этот адрес, на самом деле адрес следующий:
\Program Files\Borland\CBuilder6\Include\Vcl\ulilcls.h

Спасибо большое "Alexej77" и "pva"!
Я понял как исправить ошибку, но вот почему так я не понял!

Дело в том, что я получаю 3 страницу:
ShX=AppX.OlePropertyGet("WorkSheets",3);

А сохранять и закрывать нужно 1 (книгу)???
AppX.OlePropertyGet("WorkBooks",1).OleProcedure("Save");
AppX.OlePropertyGet("WorkBooks",1).OleProcedure("Сlose");

да был и ещё один косячок, но это моя ошибка!!!
Ещё раз большое спасибо!

Отправлено: 10:06, 06-05-2008 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Ошибка при закрытии Excel из под Builder 6!

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Интерфейс - Анимация Aero при открытии/закрытии окон fergard Microsoft Windows 7 21 10-01-2010 01:23
Драйвер принтера не выгружается при закрытии терминального сеанса Delph1Ct Microsoft Windows NT/2000/2003 2 25-05-2009 17:17
Ошибка - [решено] IE7 - Ошибка приложения при закрытии вкладки JJKey Microsoft Windows 2000/XP 4 14-05-2008 14:13
Разное - [решено] Ошибки при закрытии программ interminable Microsoft Windows Vista 3 27-09-2007 16:59
Виснет IE при закрытии одного окна deus Microsoft Windows 95/98/Me (архив) 2 14-08-2002 07:39




 
Переход