C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Как объединить две ячейки в Excel, Весь форум облазил — ничего не нашел
Aptem
Отправлено: 12.06.2004, 19:42


Мастер участка

Группа: Участник
Сообщений: 349



Привет, всем.

Я думаю вопрос понятен. Как объединить например ячейки A1 и B1 ? С Excel'ем я связываюсь через OLE.

Да, и еще заодно: Как поменять цвет и размер шрифта в ячейке ?

P.S. Только не нужно посылать меня на... УРОКИ и т.д. В УРОКАХ этого нет ! В архиве форума куча подобных вопросов, но ответов НЕТ!

Всем спасибо!
MDM
Отправлено: 15.06.2004, 11:00


Не зарегистрирован







QUOTE (Aptem @ 12/06/2004, 20:44)
Привет, всем.

Я думаю вопрос понятен. Как объединить например ячейки A1 и B1 ? С Excel'ем я связываюсь через OLE.

Да, и еще заодно: Как поменять цвет и размер шрифта в ячейке ?

P.S. Только не нужно посылать меня на... УРОКИ и т.д. В УРОКАХ этого нет ! В архиве форума куча подобных вопросов, но ответов НЕТ!

Всем спасибо!

Variant XL, v0, v1;
int xlCenter = 0xFFFFEFF4;
int xlContinuous = 1; /*xlContinuous — in Excel_97.h*/

XL = CreateOleObject("Excel.Application.8");
XL.OlePropertySet("Visible", true);
v0 = XL.OlePropertyGet("Workbooks");
v0.OleProcedure("Add");
v1 = v0.OlePropertyGet("Item", 1);
v0 = v1.OlePropertyGet("Worksheets");
v1 = v0.OlePropertyGet("Item", 1);

v0 = v1.OlePropertyGet("Range", "A1:B1");//выбрали
v0.OleProcedure("Select"); //
v0.OleProcedure("Merge"); //объединили — вишь как просто...
v0.OlePropertySet("Value", "Объединенные ячейки");//значение присвоили
v0.OlePropertySet("HorizontalAlignment", xlCenter); //выровнять по гор.
v0.OlePropertySet("VerticalAlignment", xlCenter); //выровнять по верт.
v0.OlePropertyGet("Font").OlePropertySet("Color",clBlue);//Зенит чемпион
v0.OlePropertyGet("Font").OlePropertySet("Bold",true);//пожирнее
v0.OlePropertyGet("Font").OlePropertySet("Size",14);
//че еще забыли? Бордюр надо...
v0.OlePropertyGet("Borders").OlePropertySet("LineStyle", xlContinuous);

XL.OlePropertySet("DisplayAlerts",false); //отключить диагностику при закрытии сервера
XL.OlePropertyGet("Workbooks").OlePropertyGet("Item",1).OleProcedure("SaveAs","test.xls");
XL.OleProcedure("Quit");
Nick
Отправлено: 15.06.2004, 11:19


Машинист паровоза

Группа: Участник
Сообщений: 247



Гдеж ты был родной
я уже плюнул и растер эту проблемму макросом.

ну счас переделаю.

Это каким надо быть что без доков
методом тыка (предполагаю) дойти
я как не вертел ни крутил команды из
созданного макроса не смог понять всю
эту простоту.

Спасибо.
может ссылочку на доки дашь ???
Aptem
Отправлено: 15.06.2004, 11:40


Мастер участка

Группа: Участник
Сообщений: 349



QUOTE (MDM @ 15/06/2004, 12:02)

Variant XL, v0, v1;
int xlCenter = 0xFFFFEFF4;
int xlContinuous = 1; /*xlContinuous — in Excel_97.h*/

XL = CreateOleObject("Excel.Application.8");
XL.OlePropertySet("Visible", true);
v0 = XL.OlePropertyGet("Workbooks");
v0.OleProcedure("Add");
v1 = v0.OlePropertyGet("Item", 1);
v0 = v1.OlePropertyGet("Worksheets");
v1 = v0.OlePropertyGet("Item", 1);

v0 = v1.OlePropertyGet("Range", "A1:B1");//выбрали
v0.OleProcedure("Select"); //
v0.OleProcedure("Merge"); //объединили — вишь как просто...
v0.OlePropertySet("Value", "Объединенные ячейки");//значение присвоили
v0.OlePropertySet("HorizontalAlignment", xlCenter); //выровнять по гор.
v0.OlePropertySet("VerticalAlignment", xlCenter); //выровнять по верт.
v0.OlePropertyGet("Font").OlePropertySet("Color",clBlue);//Зенит чемпион
v0.OlePropertyGet("Font").OlePropertySet("Bold",true);//пожирнее
v0.OlePropertyGet("Font").OlePropertySet("Size",14);
//че еще забыли? Бордюр надо...
v0.OlePropertyGet("Borders").OlePropertySet("LineStyle", xlContinuous);

XL.OlePropertySet("DisplayAlerts",false); //отключить диагностику при закрытии сервера
XL.OlePropertyGet("Workbooks").OlePropertyGet("Item",1).OleProcedure("SaveAs","test.xls");
XL.OleProcedure("Quit");

Огромное спасибо! ВЫ мне очень помогли !
MDM
Отправлено: 15.06.2004, 12:04


Не зарегистрирован







QUOTE
Гдеж ты был родной
я уже плюнул и растер эту проблемму макросом.

Да здесь Я, здесь...

QUOTE
Это каким надо быть что без доков
методом тыка (предполагаю) дойти
я как не вертел ни крутил команды из
созданного макроса не смог понять всю
эту простоту.

Что без доков Ты прав ну только не "тыка" конечно смотришь ExcelVBA и через Variant::OlePropertyGet/Set вперед. Весь прикол в том, что Я этим сам никогда раньше не пользовался спросили — ответил. Более того (каким надо быть) Я не програмист вообще.

QUOTE
Спасибо.
может ссылочку на доки дашь ???

ExcelVBA других нет. Если что шли вопросы разберем.

Вернуться в Вопросы программирования в C++Builder