Автоматическая замена фоновых рисунков PowerPoint

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
Avsha
Сообщения: 664
Зарегистрирован: 08 сен 2005, 13:47
Откуда: KZ

13 дек 2005, 08:36

Имеется 10 слайдов, в каждом из них имеется один и тот же фоновый рисунок-подложка - это вставленный файл bmp размером 1024x768.
Можно ли программно заменить все рисунки на всех слайдах на другой bmp-файл, такого же размера из указанного места диска, т.е. разом поменять подложку у всех слайдов?

Или здесь необходимо создавать свои пользовательские шаблоны?
Avsha
Сообщения: 664
Зарегистрирован: 08 сен 2005, 13:47
Откуда: KZ

13 дек 2005, 22:22

Получился один вариант, вроде работает ...
Этот вариант для случая, когда на слайде находится только один рисунок (фигура типа msoPicture) в качестве подложки.

Код: Выделить всё

Public Sub ReplaceBackgroundPicture()

Dim objShape As Shape
Dim strFileName As String
strFileName = "C:\Path\Picture_02.bmp"

For i = 1 To Application.ActivePresentation.Slides.Count

    For Each objShape In Application.ActivePresentation.Slides.Item(i).Shapes
     If objShape.Type = msoPicture Then
        Set NewobjShape = Application.ActivePresentation.Slides.Item(i).Shapes.AddPicture _
                              (FileName:=strFileName, LinkToFile:=msoFalse, _
                               SaveWithDocument:=msoTrue, Left:=0, Top:=0)
            NewobjShape.Left = objShape.Left
            NewobjShape.Top = objShape.Top
            NewobjShape.Height = objShape.Height
            NewobjShape.Width = objShape.Width
            NewobjShape.ZOrder msoSendToBack
        
            objShape.Delete
            GoTo 1
     End If
    Next
1:
Next i

End Sub
Аватара пользователя
Naeel Maqsudov
Сообщения: 2551
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

15 дек 2005, 15:37

Если фоновый рисунок должен находиться на ВСЕХ слайдах презентации (или на всех, кроме слайдов с типом разметки "титульный слайд"), то рисунок надо положить один единмтвенный раз в мастер. Он появится везде.

Если же фоновый рисунок встречается с неопределенной закономерностью, то в вашем макросе надо усложнить условие
If objShape.Type = msoPicture

Для универсальности можно попробовать взять за отправную точку Selection.
Т.е. пусть пользователь сначала выберет картинку, которую будет на всех слайдах менять.

У выделенной картинки посмотрим и запомним какие-нибудь значимые характеристики: напрмиер размер, масштаб, яркость, контраст.

Потом начинается цикл по всем слайдам и шейпам.

В цикле, наряду с objShape.Type = msoPicture нужно проверять те самые "значимые характеристики" на совпадение.

Можно также в ходе цикла если совпадают все параметры кроме одного-двух делать ObjShape.Select и выводить MessageBox с вопросом "А этот рисунок замениь?".
Avsha
Сообщения: 664
Зарегистрирован: 08 сен 2005, 13:47
Откуда: KZ

16 дек 2005, 06:52

Naeel Maqsudov,
У меня следующая ситуация - есть 60 слайдов на которых всего два объекта:
1. везде одинаковый фоновый рисунок - подложка - это bmp-файл на весь экран с необходимым оформлением.
2. текст заголовка - это текст от 1 до 60, помните реализация того самого "счетчика", которого мы обсуждали в другой теме.
Так вот, я настроил период времени между слайдами, установил настройки презентации, с какого слайда начинать, кое-где поменял цвет текста счетчика, в общем презентация готова.
Но приходит заказчик и говорит, что необходимо поменять фон презентации, сделать его например красным вместо зеленного и т.д.
А у меня этот фон на 60 слайдах - весело менять :) , вот я и меняю все только в одном bmp-файле, и применяю скрипт замены по всем подготовленным кадрам уже настроенной презентации.

Попробовал использовать мастер по вашему совету, но он вроде годен только на стадии создании презентации.
А мне надо изменять шаблон уже к готовой презентации.

Команда Формат\Применить шаблон оформления - тоже не работает на мой собственный шаблон.
Может я что-то не так далаю? Мой шаблон содержит только один объект - фоновый рисунок.

Код, который привел явно не носит универсальный характер, но мой случай полностью закрывает.
Я даже просто создал отдельную презентацию с эти кодом "замена.ppt", чтобы не хранить макросы в каждой презентации, где необходимо менять фон. Просто открываю необходимую презентацию с "замена.ppt", делаю ее активной и даю команду выполнить макрос из презентации "замена.ppt".
Avsha
Сообщения: 664
Зарегистрирован: 08 сен 2005, 13:47
Откуда: KZ

16 дек 2005, 07:19

Все разобрался, с этими шаблонами и образцами -
Создаем шаблон
1. Открываем пустую презентацию с одним слайдом.
2. Становимся на этот слайд - меню Вид\Образец\Образец слайдов...
3. Вставляем фоновый рисунок в образец, затем "Закрыть"
4. Сохраняем эту презентацию как MySample.pot

Применяем шаблон
Открываем существующие готовые презентации и выполняем меню Формат\Применить шаблон оформления
Аватара пользователя
Naeel Maqsudov
Сообщения: 2551
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

16 дек 2005, 13:59

Попробовал использовать мастер по вашему совету, но он вроде годен только на стадии создании презентации.
А мне надо изменять шаблон уже к готовой презентации.
:) Прошу прощения.
В нерусифицированном офисе "Образец" называется "Master"......
uchaeva
Сообщения: 1
Зарегистрирован: 03 апр 2016, 11:55

03 апр 2016, 11:58

Подскажите пошагово куда этот код вставлять, чтобы изменить картинку-подложку
Ответить