Обсуждение вопросов, связанных с компанией Micro Focus/Borland, ее продуктами CaliberRM, CaliberRDM, SilkTest, StarTeam, TeamDefine, Together и других.
Gena пишет 17.04.2014 15:59: >stas пишет 17.04.2014 15:39: >>C++ Builder6 & Excel 2007 >>Использую в своей программе OLE. >>Если пытаюсь в Excel 2007 обратится к строке 66000, то вываливается ошибка. >>Помогите, пожалуйста. >> >Добрый день! >Это идет переполнение uint16. >Максимальное значение 65536. >Еxcel 2003 поддерживал именно такое максимальное значение строк. >Как именно вы используете OLE? >Через компонент ExcelWorksheet на панели компонентов SERVERS? >Или напрямую? >Покажите порядок включаемых файлов через >#include > Напрямую. Не через панелькомпонентов. #include utilcls.h #include ComObj.hpp и т.д. Отслеживая ошибка и вылетает в ComObj.hpp. Где-то там и прописано видимо значение 65536. (C++ Builder6 у меня старинный. Пытаюсь пропатчить) Спасибо.
stas пишет 17.04.2014 15:39: >C++ Builder6 & Excel 2007 >Использую в своей программе OLE. >Если пытаюсь в Excel 2007 обратится к строке 66000, то вываливается ошибка. >Помогите, пожалуйста. > Добрый день! Это идет переполнение uint16. Максимальное значение 65536. Еxcel 2003 поддерживал именно такое максимальное значение строк. Как именно вы используете OLE? Через компонент ExcelWorksheet на панели компонентов SERVERS? Или напрямую? Покажите порядок включаемых файлов через #include
C++ Builder6 & Excel 2007 Использую в своей программе OLE. Если пытаюсь в Excel 2007 обратится к строке 66000, то вываливается ошибка. Помогите, пожалуйста.
Elena пишет 06.04.2007 10:10: >Доброе время суток! >Пишу приложение в C++ Builder6 для формирования файлов Excel. >Требуется определить открыт файл Excel при закрытии формы C++ Builder6 или нет (пользователь может закрыть файл Excel раньше). >Сделала попытку перебрать коллекцию открытых книг следующим образом: >int n = XL.OlePropertyGet("WorkBooks").OlePropertyGet("Count"); >for (int i=0; i<=n; i++){ > Variant MyWorkbook=XL.OlePropertyGet("WorkBooks").OlePropertyGet("Item",i); >} >Программа во время исполнения прерывается, появляется сообщение "Project GenSp.exe raised exception class EOleSysError with message 'Ошибка'. Process stopped" >В файле sysvari.h > template <class P1> > Variant Variant::OlePropertyGet(const String& name, P1 p1) > { > TAutoArgs<1> args; > args[1] = p1; > return OlePropertyGet(name, static_cast<TAutoArgsBase*>(&args)); > } >OlePropertyGet(name ...) не воспринимается property "Item". > >Подскажите, пожалуйста, что неправильно. >Или может, есть другой путь для решения моей задачи? Если я не ошибаюсь то в for (int i=0; i<=n; i++) нужно от 1 - for (int i=1; i<=n; i++)
Gena пишет 11.04.2007 15:41: >Сорри за дурацкий ответ, >не правильно прочитал вопрос, >но items у workbooks точно нет. > 1.Вот выдержка из материала сайта "Создание контроллеров автоматизации с помощью C++Builder":
Свойствами объектов Excel могут являться так называемые коллекции объектов. Например, коллекция Workbooks является свойством объекта Excel.Application, при этом она содержит набор вложенных объектов - рабочих книг Excel, а те, в свою очередь, обладают свойством Worksheets, представляющим собой коллекцию рабочих листов, каждый из которых обладает свойством Cells, являющимся коллекцией ячеек. Аналогично, коллекция Charts также является свойством рабочей книги. Аналогично, внутри свойствами объектов Word могут быть коллекции Paragraphs, Words, Tables.
В С++Builder обращение к члену коллекции производится следующим образом:
Сорри за дурацкий ответ, не правильно прочитал вопрос, но items у workbooks точно нет.
можно перебрать windows по именам, можно у workbooks брать property по именам файлов (только имена без пути) если взять property Workbooks("книга2").Saved у неоткрытого файла, то выбросит исключение если e открытого , то да или нет.
Elena пишет 06.04.2007 10:10: >Доброе время суток! >Пишу приложение в C++ Builder6 для формирования файлов Excel. >Требуется определить открыт файл Excel при закрытии формы C++ Builder6 или нет (пользователь может закрыть файл Excel раньше). >Сделала попытку перебрать коллекцию открытых книг следующим образом: >int n = XL.OlePropertyGet("WorkBooks").OlePropertyGet("Count"); >for (int i=0; i<=n; i++){ > Variant MyWorkbook=XL.OlePropertyGet("WorkBooks").OlePropertyGet("Item",i); >} >Программа во время исполнения прерывается, появляется сообщение "Project GenSp.exe raised exception class EOleSysError with message 'Ошибка'. Process stopped" >В файле sysvari.h > template <class P1> > Variant Variant::OlePropertyGet(const String& name, P1 p1) > { > TAutoArgs<1> args; > args[1] = p1; > return OlePropertyGet(name, static_cast<TAutoArgsBase*>(&args)); > } >OlePropertyGet(name ...) не воспринимается property "Item". > >Подскажите, пожалуйста, что неправильно. >Или может, есть другой путь для решения моей задачи?
Доброе время суток! Пишу приложение в C++ Builder6 для формирования файлов Excel. Требуется определить открыт файл Excel при закрытии формы C++ Builder6 или нет (пользователь может закрыть файл Excel раньше). Сделала попытку перебрать коллекцию открытых книг следующим образом: int n = XL.OlePropertyGet("WorkBooks").OlePropertyGet("Count"); for (int i=0; i<=n; i++){ Variant MyWorkbook=XL.OlePropertyGet("WorkBooks").OlePropertyGet("Item",i); } Программа во время исполнения прерывается, появляется сообщение "Project GenSp.exe raised exception class EOleSysError with message 'Ошибка'. Process stopped" В файле sysvari.h template <class P1> Variant Variant::OlePropertyGet(const String& name, P1 p1) { TAutoArgs<1> args; args[1] = p1; return OlePropertyGet(name, static_cast<TAutoArgsBase*>(&args)); } OlePropertyGet(name ...) не воспринимается property "Item".
Подскажите, пожалуйста, что неправильно. Или может, есть другой путь для решения моей задачи?