Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
 Аватар для QVO
652 / 462 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4

Проблемы c Ole Excel

08.07.2012, 16:33. Показов 1811. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую форумчани. Пишу класс для работы с файлами Excel, и возникла проблема.
Программа не хочет задавать кол-во листов, а так же их переименновывать.
C++
1
2
3
4
Variant fExcel, fExcelSheet;
...
fExcel.OlePropertyGet("WorkBooks").OleProcedure("Open", sFile.c_str());
...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/* setListCount() */        
        void setListCount(int iValue)
        {
            try
            {
                fExcel.OlePropertySet("SheetsInNewWorkbook", iValue);
            }
            catch(...) { ShowMessage("Add list fail"); }    
        }
        
/* setListName() */     
        void setListName(int iList, AnsiString sValue)
        {
            try
            {
                fExcel.OlePropertyGet("Worksheets").OlePropertyGet("Item", iList).OlePropertySet("Name", sValue);
            }
            catch(...) { ; }
        }
В чем может быть загвостка?

За пример брал информацию из этой статьи.

Добавлено через 16 минут
С переименование разобрался:

C++
1
2
3
4
5
6
7
8
9
/* setListName() */     
        void setListName(int iList, AnsiString sValue)
        {
            try
            {
                fExcel.OlePropertyGet("Worksheets").OlePropertyGet("Item", iList).OlePropertySet("Name", sValue.c_str());
            }
            catch(...) { ; }
        }
Вопрос с количеством листов все еще актуален.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.07.2012, 16:33
Ответы с готовыми решениями:

OLE excel в потоке
Здравствуйте! В приложении был создан объект OLE Excel (Excel=CreateOleObject("Excel.Application")), также был создан поток, в котором...

Ole excel и word
Здравствуйте, проблема такая: при использование ole для word и excel при использование word и excel не закрывается excel(висит в диспетчера...

OLE-сервер Excel. Builder c++
Всем добрый вечер работаю с Ole сервер Excel есть код: //создание объекта Excel.Application if(!fStart) { try { ...

7
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
08.07.2012, 20:58
здесь смотрел: Работа с OLE-сервером Excel ?
0
 Аватар для QVO
652 / 462 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
09.07.2012, 02:13  [ТС]
LK, конечно! При создание новой книге, указать кол-во листов не составляет проблемы.
А изменить кол-во листов в уже существующей не выходит.
0
Модератор
 Аватар для vxg
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,460
09.07.2012, 09:28
Workbook.WorkSheets.Add пробовали?
0
 Аватар для QVO
652 / 462 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
09.07.2012, 12:45  [ТС]
vxg, пробовал. появляется новый файл с указанным кол-во листов. открываемый файл не изменяется.

C++
1
2
3
4
5
6
7
8
9
10
11
/* setListCount() */        
        void setListCount(int iValue)
        {
            try
            {
                fExcel.OlePropertyGet("Workbooks").OleProcedure("Add").OlePropertySet("SheetsInNewWorkbook", iValue);
 
                
            }
            catch(...) { ShowMessage("Add list fail"); }    
        }
Миниатюры
Проблемы c Ole Excel   Проблемы c Ole Excel  
0
Модератор
 Аватар для vxg
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,460
10.07.2012, 09:16
вы совсем не то делаете. попробуйте для начала решить нужную вам задачу автоматизации в VBA (при необходимости нажав F2 и просматривая доступные объекты и их методы), а потом оттуда вытаскивайте код в приложение
C++
1
2
3
4
5
6
7
    Variant app = CreateOleObject("Excel.Application");
    Variant wbs = app.OlePropertyGet("Workbooks");
    Variant wb = wbs.OleFunction("Open", "C:\\test.xls");
    Variant wss = wb.OlePropertyGet("Worksheets");
    wss.OleFunction("Add");
    wb.OleProcedure("Save");
    app.OleProcedure("Quit");
1
 Аватар для QVO
652 / 462 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
10.07.2012, 12:19  [ТС]
vxg, получается. можно сразу указать кол-во листов, или же придется крутить в цикле функцию?

C++
1
2
3
4
5
6
7
8
9
/* setListCount() */        
        void setListCount(int iValue)
        {
            try
            {
                fExcel.OlePropertyGet("Worksheets").OleProcedure("Add");
                //fExcel.OlePropertySet("SheetsInNewWorkbook", iValue);
 
            }
Миниатюры
Проблемы c Ole Excel  
0
Модератор
 Аватар для vxg
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,460
10.07.2012, 13:29
из описания функции полученного при наведении на нее в броузере объектов Excel VBA видим
Function Add([Before], [After], [Count], [Type])
то есть явно можно указать количество листов которое мы хотим добавить
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.07.2012, 13:29
Помогаю со студенческими работами здесь

OLE-сервер Excel в XE7
Пишу проект в C++ Builder XE7 . В конце решил сделать отчет через Excel. Начал изучать как это делается. В C++ Builder 6 учился и у меня...

Работа с Excel через OLE
Здравствуйте Использую C++ Builder 6, пытаюсь подключится к уже запущеному Excel приложению, использую функцию GetActiveOleObject: ...

Подключение к существующему Ole серверу Excel
Код CreateObject("Excel.Application"); создает новый экземпляр процесса Excel, а как подключится к уже запущенному серверу?

Количество документов Excel через OLE
Здравствуйте. Использую OLE технологию по работе с Excel. Подключиться к книге по Item(пункту) можно через процедуру...

Передвинуть диаграмму в Excel средствами OLE
При попытке задать свойство "Top" для диаграммы вылетает ошибка "Член группы не найден". Variant ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru