2015-01-15 2 views
1

Я заполняю слайды PowerPoint с данными из листа распространения Excel. На данный момент я получить доступ к слайду, используя номер страницы:Как получить макет слайда макета

Set mySlide = PowerPointApp.ActivePresentation.Slides(1) 

Использования Master View опции в интерфейсе, вы можете переименовать слайд. Как найти слайд с помощью этого имени?

Thanks,

Carlo.

+0

Я не понимаю, что вы хотите сделать ... найдите SLIDE с определенным именем или LAYOUT с определенным именем или найдите имя LAYOUT текущего слайда. ActivePresentation.Slides («Carlo») вернет ссылку на слайд под названием «Carlo» ... если он есть. –

+0

Я хочу дать каждому слайду уникальное имя (через интерфейс PPT), а затем найти слайд с использованием этого имени, используя скрипт, который запускается в Excel. Для каждого слайда есть параметр UniqueID, но если мы скопируем слайд из одной презентации в другую, мне все равно нужно определить слайд «XYZ» как ту же вещь, но я сомневаюсь, что значение UniqueID будет перемещаться со слайдом. – Carlo

ответ

0

Использование Slide.Name свойства будет определять имя слайда и позволить ему быть вызван с помощью:

ActivePresentation.Slides("Name") 

per the MSDN

+0

Но как установить свойство Slide.Name через интерфейс? У меня есть презентация PPT, которую я использую в качестве шаблона. Мне нужно установить свойство Name для каждой из существующих страниц, а также для любых новых добавленных страниц. – Carlo

+0

Вы можете получить доступ только к имени слайда по коду; если вам нужно предоставить его пользователю, вам необходимо предоставить пользовательский интерфейс. Если необходимо просто создать глобально уникальные идентификаторы для каждого слайда (в отличие от уникальных для определенных идентификаторов презентации), возможно, код, который генерирует и назначает GUID, поскольку имя слайда будет работать. –

0

Итак, что я хотел был способом однозначно идентифицировать РРТ слайд через VBA. Проблема в том, что мне все еще нужно определить этот слайд, если он скопирован в другой документ PPT.

Итак, что я нашел, что я должен был сделать:

  • создать текстовое поле на каждой странице и жестко закодировать текст, чтобы быть что-то вроде «Slide: обложка» или «Slide: QuarterlyResults», и т. д.
  • петля через каждый слайд
  • найти «Слайд» и снять его, чтобы получить заголовок страницы. Таким образом, если слайд скопирован в другой документ PPT, имя будет с ним.
  • Создайте словарь, который использует Slide.SlideID как ключ и название страницы в качестве значения.

Затем, что я делаю, прокручиваем слайды, получаем SlideID, используем словарь для получения заголовка страницы и используем оператор Select для сопоставления с правильным методом обработки слайда.

Да, я знаю ... это icky hack, но это единственный способ, которым я мог бы это сделать.

Спасибо за помощь,

Carlo.

+0

Поставка всех деталей вопроса в первую очередь спасла бы вас некоторое время, и, может быть, это может сэкономить вам некоторую работу: посмотрите.Метки Каждый слайд может иметь столько же тегов (пары имя/значение), сколько вам нравится; не нужно изобретать колесо, которое вы предлагаете выше. ;-) –

+0

Спасибо за ответ, Стив. Когда я впервые начал это, я думал, что макет даст мне то, что мне нужно. Я новичок в PowerPoint. Когда я углубился в это, я понял, что это не так. Я поднял глаза. Тэги, но не видели, как я могу «пометить» слайд через пользовательский интерфейс. (Мне что-то не хватает?) Мне нужен человек, создающий слайд, чтобы дать ему уникальное имя, которое я могу получить через код. – Carlo

Смежные вопросы