(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 

Конференция "Micro Focus/Borland"

Обсуждение вопросов, связанных с компанией Micro Focus/Borland, ее продуктами CaliberRM, CaliberRDM, SilkTest, StarTeam, TeamDefine, Together и других.

 
 
Добавить сообщение »

Тема: C++ Builder6 & Excel

Автор:  stas Дата: 17.04.2014 16:53
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 у меня старинный. Пытаюсь пропатчить)
Спасибо.
Ответить на сообщение »
 
Автор:  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
Ответить на сообщение »
 
Автор:  stas Дата: 17.04.2014 15:39
C++ Builder6 & Excel 2007
Использую в своей программе OLE.
Если пытаюсь в Excel 2007 обратится к строке 66000, то вываливается ошибка.
Помогите, пожалуйста.
Ответить на сообщение »
 
Автор:  Evgen Дата: 03.05.2009 11:38
C builder 6
Добрый день!
Копирую лист с одного excel файла в другой вот таким способом:

vTemp=wSheet1.OlePropertyGet("Range", "A1:M150");
vTemp.OleProcedure("Copy");
wSheet2.OlePropertyGet("Range", "A1:M150");
wSheet2.OleProcedure("Paste");

Только почему то вставляет в другом формате. Может быть я что-нибудь недописал? Подскажите, пожалуйста, кто знает.
Ответить на сообщение »
 
Автор:  Руслан Дата: 12.04.2007 16:17
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++)
Ответить на сообщение »
 
Автор:  Serg Chezhin Дата: 12.04.2007 12:49
Скорее всего тут логическая ошибка - в цикле for (int i=0; i<=n; i++) итерацию необходимо начинать с 1, а не с 0, т.к. в VBA отсчет идет от 1.
Ответить на сообщение »
 
Автор:  Elena Дата: 11.04.2007 16:55
Gena пишет 11.04.2007 15:41:
>Сорри за дурацкий ответ,
>не правильно прочитал вопрос,
>но items у workbooks точно нет.
>
1.Вот выдержка из материала сайта "Создание контроллеров автоматизации с помощью C++Builder":

Свойствами объектов Excel могут являться так называемые коллекции объектов. Например, коллекция Workbooks является свойством объекта Excel.Application, при этом она содержит набор вложенных объектов - рабочих книг Excel, а те, в свою очередь, обладают свойством Worksheets, представляющим собой коллекцию рабочих листов, каждый из которых обладает свойством Cells, являющимся коллекцией ячеек. Аналогично, коллекция Charts также является свойством рабочей книги. Аналогично, внутри свойствами объектов Word могут быть коллекции Paragraphs, Words, Tables.

В С++Builder обращение к члену коллекции производится следующим образом:

Variant MyWorkbook=XL.OlePropertyGet("WorkBooks").OlePropertyGet("Item",1);


2.Если в редакторе Visual Basic набрать Workbooks и поставить точку, то в выпадающем списке свойств и методов можно найти Item
Ответить на сообщение »
 
Автор:  Gena Дата: 11.04.2007 15:41
Сорри за дурацкий ответ,
не правильно прочитал вопрос,
но items у workbooks точно нет.

можно перебрать windows по именам,
можно у workbooks брать property по именам файлов (только имена без пути)
если взять property
Workbooks("книга2").Saved
у неоткрытого файла, то выбросит исключение
если e открытого , то да или нет.
Ответить на сообщение »
 
Автор:  Gena Дата: 11.04.2007 15:28
Items у WorkBooks нет,
Items есть у Sheets

т.е.
нужно сделать примерно так

Variant wbs=XL.OlePropertyGet("Workbooks");

Variant wb=wbs.OleFunction("Open",Variant(ch),GVariant(TRUE));
//ch -это имя файла в этом примере,

int iItem=3;

Variant wsheets=wb.OlePropertyGet("Sheets");

Variant Sheet=wsheets.OlePropertyGet("Item",Variant(iItem));

получим лист.


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".
>
>Подскажите, пожалуйста, что неправильно.
>Или может, есть другой путь для решения моей задачи?
Ответить на сообщение »
 
Автор:  Kitty Дата: 11.04.2007 15:00
Может тут есть полезное: [открыть ссылку]
Ответить на сообщение »
 
Автор:  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".

Подскажите, пожалуйста, что неправильно.
Или может, есть другой путь для решения моей задачи?
Ответить на сообщение »
 

Добавить сообщение »

 Распечатать »
 Правила публикации »
   
 Рекомендовать »  
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Panda Global Protection - ESD версия - на 1 устройство - (лицензия на 1 год)
ESET NOD32 Антивирус - продление лицензии на 2 года на 3ПК
SAP CRYSTAL Server 2013 WIN INTL 5 CAL License
VideoStudio X9 Pro. Электронный ключ.
Kaspersky Endpoint Security для бизнеса – Стандартный Russian Edition. 10-14 Node 1 year Base License
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
СУБД Oracle "с нуля"
Программирование на Visual С++
Каждый день новые драйверы для вашего компьютера!
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
Обсуждения в форумах
Как мигрировать программу написанную на старом Буилдер 4.52 (1)
Мы поддерживаем старое приложение написанное с использованием С++ Буилдер 5.5 (ЕХЕ) и Буилдер...
 
Создание базы данных в Delphi, без сторонних БД (1)
Уважаемый автор, гуглю уже который день и у Вас как у всех "кидаем.." "даже не создаем проект"...
 
C++ Builder6 & Excel (11)
Доброе время суток! Пишу приложение в C++ Builder6 для формирования файлов Excel. Требуется...
 
Принцип создания плагинов в Delphi (3)
Достали, Эта статья не о плагинах а о подключении dll и возможности использования ресурсов в...
 
QuickREport (40)
Есть приложение скомпилированное в Delphi6. Для построения отчетов я использовал компонеты из...
 
 
 



    
rambler's top100 Rambler's Top100