Powerpoint 2011 VBA замена изображения - PullRequest
0 голосов
/ 19 июля 2011

Итак, у меня есть презентация в Powerpoint. Он содержит множество изображений, на которые ссылается изображение X. (То есть это одно и то же изображение, но на нескольких страницах). Эти же изображения на разных страницах / слайдах имеют разные атрибуты width / height, связанные с ними. Поэтому, даже если они одного и того же изображения, они могут не совпадать по размеру.

Таким образом, существует сценарий, в котором изображение присутствует на многих слайдах. Я хочу иметь возможность заменять их все одновременно (быстро) без необходимости проходить через каждый слайд и отдельно заменять X по одному новым изображением.

  • Возможно ли это? (Да / нет)
  • Как бы это было достигнуто? (аннотация - требуется только объяснение высокого уровня)

Ответы [ 2 ]

1 голос
/ 04 сентября 2011

Это возможно в Open XML - при условии, что вы знаете, что ищете.Каждый слайд (и каждый макет слайда) представляет собой файл XML.Эти XML-файлы в формате Open Packaging Convention поддерживают файл отношений с расширением .rels .Таким образом, если ваш первый слайд - slide1.xml , то его файл отношений - slide1.xml.rels .Это место, где ссылка на изображение сохраняется для каждого слайда.

Файл .rels выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
  <Relationship 
    Id="rId3" 
    Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout" 
    Target="../slideLayouts/slideLayout3.xml"/>
  <Relationship 
    Id="rId7" 
    Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" 
    Target="../media/image3.png"/>
  <Relationship 
    Id="rId6" 
    Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" 
    Target="../media/image2.wmf"/>
  <Relationship 
    Id="rId4" T
    ype="http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesSlide" 
    Target="../notesSlides/notesSlide1.xml"/>
</Relationships>

Вы заметите, что элементы 2 и 3 ссылаются на изображения по ихType.

Когда вы вставляете изображение в PowerPoint, его значение больше не имеет значения, PowerPoint переименовывает его.Поэтому, если это был My_Climb_Up_Denali.jpg, он будет переименован во что-то вроде image1.jpg.

Таким образом, проблема заключается в том, чтобы знать, какое изображение вы ищете.В элементе <p:pic> есть атрибут ... @ name, который обычно сохраняет интересующий его путь к файлу (но иногда он будет другим, например, когда вы вставляете его из картинки).В любом случае, это лишь полунаправленный способ запоминания того, что вы ищете.

Поэтому вам может понадобиться просмотреть внутреннее содержимое пакета, чтобы найти переименованное имя фотографии.

На эту тему есть практические рекомендации по Форматы Office Open XML: замена изображений слайдов в PowerPoint 2007 , что может оказаться полезным.

1 голос
/ 20 июля 2011

Возможно . Когда вы вставляете изображение, а затем копируете его из одного слайда в другой в рамках одной презентации, PPT сохраняет только одно исходное изображение. Другие экземпляры являются внутренними указателями на первое изображение. И в некоторых случаях он также обнаружит, что пользователь вставил одно и то же изображение несколько раз, и в этом случае он будет делать то же самое; создать указатель на оригинал, а не вставлять новый экземпляр изображения.

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

Таким образом, ЕСЛИ изображения были вставлены нормально (а не скопированы / вставлены или вставлены как объекты), а затем скопированы и вставлены из оригинального вставленного изображения в другие слайды, вы можете сделать то, что вы хотите, заменив исходное изображение в XML.

Я не могу думать ни о каком другом способе, как это может произойти после создания файла.

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

...