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

> Внимание!

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

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


Профи
****

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

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


Здравствуйте!
Скажи пожалуйста, можно ли из разрабатываемого приложения по нажатию кнопки вставить в существующую презентацию (созданную в MOffice PowerPoint) новый слайд, и кроме того - на слайд вставить картинку из Paint..??
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 8.03.2009 10:45
Сообщение #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 или Билдера могут быть несоответствия в количестве параметров у той или иной процедуры/функции, поэтому может потребоваться незначительная переделка.
 К началу страницы 
+ Ответить 
18192123
сообщение 8.03.2009 18:42
Сообщение #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 - 8.03.2009 18:45
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 



- Текстовая версия 19.07.2025 4:30
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"