IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Интеграция с MOffice PowerPoint, С++ Builder
сообщение
Сообщение #1


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


Здравствуйте!
Скажи пожалуйста, можно ли из разрабатываемого приложения по нажатию кнопки вставить в существующую презентацию (созданную в MOffice PowerPoint) новый слайд, и кроме того - на слайд вставить картинку из Paint..??
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Можно... Связка Builder 2009 + PowerPoint из Office XP:
void __fastcall TForm1::Button8Click(TObject *Sender)
{
Variant vPowerPoint;
try {
// Создаем экземпляр PowerPoint-а
vPowerPoint = CreateOleObject("PowerPoint.Application");
}
catch(...) {
// Если была ошибка при создании - сообщаем об этом
ShowMessage("Error...");
}

// Делаем PowerPoint видимым
vPowerPoint.OlePropertySet("Visible", true);
// Открываем нужную презентацию
vPowerPoint.
OlePropertyGet("Presentations").
OleFunction("Open", "F:\\P.ppt", false);

// Получаем количество слайдов в ней на данный момент,
// чтоб добавить новый куда нужно
int nSlides = vPowerPoint.
OlePropertyGet("ActivePresentation").
OlePropertyGet("Slides").
OlePropertyGet("Count");
// Добавляем новый слайд после всех присутствующих
vPowerPoint.
OlePropertyGet("ActivePresentation").
OlePropertyGet("Slides").
OleProcedure("Add",nSlides + 1, 2); // ppLayoutText
// Переходим ко вновь добавленному слайду
vPowerPoint.OlePropertyGet("ActiveWindow").
OlePropertyGet("View").
OleFunction("GoToSlide", nSlides + 1);
// Вставляем изображение из буфера обмена на слайд
vPowerPoint.
OlePropertyGet("ActiveWindow").
OlePropertyGet("View").
OleProcedure("Paste");
// Сохраняем презентацию
vPowerPoint.
OlePropertyGet("ActivePresentation").
OleFunction("Save");
// Выходим и освобождаем память
vPowerPoint.OleProcedure("Quit");
vPowerPoint = Unassigned;
}
Итого: все, что тебе нужно - это чтобы к моменту нажатия на кнопку в буфере обмена Windows находилась нужная картинка (чтобы запихать из Paint-а картинку в Clipboard достаточно найти окно Paint-а и послать ему нажатия Ctrl+A и Ctrl+C)... На приведенной конфигурации это отработало, на других версиях PP или Билдера могут быть несоответствия в количестве параметров у той или иной процедуры/функции, поэтому может потребоваться незначительная переделка.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


Цитата(volvo @ 8.03.2009 10:45) *

void __fastcall TForm1::Button8Click(TObject *Sender)
{
Variant vPowerPoint;
try {
// Создаем экземпляр PowerPoint-а
vPowerPoint = CreateOleObject("PowerPoint.Application");
}

}



Что-то не то с функцией CreateOleObject..
На строке с этой функцией вот такая вот ошибка:
[C++ Error] Unit1.cpp(23): E2268 Call to undefined function 'CreateOleObject'..
(тестировалось на C++ Builder 6..)

Сообщение отредактировано: 18192123 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
18192123   Интеграция с MOffice PowerPoint   8.03.2009 4:06
volvo   Можно... Связка Builder 2009 + PowerPoint из Offic…   8.03.2009 14:45
18192123   void __fastcall TForm1::Button8Click(TObject *Sen…   8.03.2009 22:42
volvo   #include <ComObj.hpp>в проекте присутствует?   8.03.2009 22:45
18192123   #include <ComObj.hpp>в проекте присутствует…   8.03.2009 22:47
18192123   Проблема со вставкой рисунка на слайд.. Рисунок, к…   9.03.2009 0:10
volvo   Уверена, что он там находится в правильном формате…   9.03.2009 0:19
18192123   Вот, что получилось: Sub МакросPP_Builder() …   9.03.2009 0:31
volvo   В таком случае вставка из моего кода должна работа…   9.03.2009 1:43
18192123   Что насчет правильности содержимого Clipboard-а? …   9.03.2009 2:03
18192123   Уж не знаю, что изменилось, но всё сработало - спа…   10.03.2009 13:48
volvo   У тебя же есть этот рисунок в ClipBoard-е, так заб…   10.03.2009 15:32
18192123   Хм..странные вещи со вставкой рисунка на новый сла…   11.03.2009 0:43
volvo   Что, на одной той же машине? Или на разных? Что п…   11.03.2009 1:32
18192123   Что, на одной той же машине? Или на разных? Что …   11.03.2009 5:42
volvo   Ну, к примеру, объяви переменную - пусть будет Cou…   11.03.2009 5:53
18192123   как ищутся файлы с определенным расширением, знае…   11.03.2009 7:01
volvo   int CountJPG(AnsiString dir) { TSearchRec sr; An…   11.03.2009 15:20


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 13.09.2025 3:43
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name