Powerpoint VBA изменить изображение на макете после изменения темы

У меня есть шаблон Powerpoint, изображение на макете титульного слайда. Пользователь может открыть пользовательскую форму для изменения изображения (VBA удаляет старую картинку, а затем вставляет выбранную картинку).

Но после того, как тема была изменена пользователем, последующие изменения изображения не видны. Насколько я понимаю, изображение изменяется только в макете титульного слайда исходной темы. При изменении темы фактически добавляется новый образец слайдов.

Есть ли способ изменить изображение в макете титульного слайда на каждом образце слайда в моей презентации?

Вот код VBA:

    Set shp = ActivePresentation.SlideMaster.CustomLayouts(1).Shapes(strShapeName)

    With shp
      sngTop = .Top
      sngLeft = .Left
      sngWidth = .Width
      sngHeight = .Height
      .Delete
    End With

    Set shp = ActivePresentation.SlideMaster.CustomLayouts(1).Shapes.AddPicture _
      (strFullFileName, msoFalse, msoTrue, _
      sngLeft, sngTop, sngWidth, sngHeight)

    With shp
      .ZOrder msoSendToBack
      .Name = strShapeName
    End With

Спасибо за любое предложение.


person Barts    schedule 26.11.2015    source источник


Ответы (1)


Попробуйте что-то вроде этого:

Dim oDes As Design
Dim shp As Shape

For Each oDes In ActivePresentation.Designs
    Set shp = oDes.SlideMaster.CustomLayouts(1).Shapes(strShapeName)

    With shp
      sngTop = .Top
      sngLeft = .Left
      sngWidth = .Width
      sngHeight = .Height
      .Delete
    End With

    Set shp = oDes.SlideMaster.CustomLayouts(1).Shapes.AddPicture _
      (strFullFileName, msoFalse, msoTrue, _
      sngLeft, sngTop, sngWidth, sngHeight)

    With shp
      .ZOrder msoSendToBack
      .Name = strShapeName
    End With

    Next    ' Design
person Steve Rindsberg    schedule 26.11.2015
comment
Спасибо! Это то, что мне было нужно. - person Barts; 27.11.2015
comment
Отлично ... рад это слышать. Вы можете отметить это как ответ, чтобы помочь любому, кто придет позже, решить ту же проблему. - person Steve Rindsberg; 28.11.2015