#vba #powerpoint #object-model
#vba #powerpoint #объект-модель
Вопрос:
Я имею в виду конкретно версию 2016 года, но это также должно применяться к 2013 и 2010 годам.
—— Сводка TLDR
- Можно ли использовать VBA для добавления нового образца слайдов, используя метод, который я не нашел?
- Возможно ли использовать VBA для доступа к макетам образцов слайдов, отличным от первого, в объекте презентации, или для управления ими?
- Я подозреваю, что ответ на оба вопроса «Нет» и что MS просто испортила отображение базовых объектов, но другие могут знать больше о программировании PPT, чем я.
—— Весь вопрос
Microsoft сочла PowerPoint недостойным записи макросов для lo этих многих версий (я думаю, что он был удален из памяти в 2003 или 2007 годах), поэтому оттуда нельзя получить никакой помощи.
Связанный элемент справки MSDN вызывает сожаление. В нем говорится, что свойство возвращает основной объект, хотя на данный момент это не имеет значения.
Страница поддержки Office описывает мастер слайдов здесь. Похоже, что макет слайда — это место, где находятся макеты слайдов презентации, предположительно, в свойстве CustomLayouts в SlideMaster, хотя интересно отметить, что только первые 9 из этих пользовательских макетов соответствуют тому, что вы видите в графическом интерфейсе. (Я насчитал 11 объектов CustomLayout в SlideMaster в новой пустой презентации.) Цифры меняются, если вы добавляете новые макеты, хотя два вертикальных текстовых макета, похоже, никогда не появляются в списке GUI. Это тоже не проблема.
Проблема в том, что на самом деле у вас может быть более одного образца слайдов для каждой презентации, перейдя в меню Вид, Образец слайда, а затем выбрав Вставить образец слайда. Наличие нескольких шаблонов слайдов обсуждается на сайте поддержки Office здесь.
Честно говоря, я считаю эту функциональность немного нарушенной, потому что, если вы сделаете это, а затем примените тему к новому образцу слайдов, вы получите третий образец слайдов; оригинал в разделе «Тема Office», второй в разделе «Пользовательский дизайн» и третий под названием темы, которую вы применили. Это тоже само по себе не является проблемой. (Хотя стоит отметить, что в презентации нет метода AddSlideMaster, что означает, что, похоже, это невозможно сделать с помощью VBA. Не то чтобы вы обязательно хотели этого, но если бы вы это сделали, вы не можете. Существует только метод .AddTitleMaster, который кажется бесполезным, поскольку, насколько я вижу, у всех презентаций есть TitleMaster, и если у презентации есть один, то этот метод выдаст ошибку в соответствии с документацией.)
Проблема в том, что объект презентации не имеет коллекции шаблонов слайдов. У него есть только одно свойство, SlideMaster, которое возвращает один объект Slide Master / Master.
Соответственно, я не вижу никакого способа, которым вы можете программно добавить новый слайд-мастер. И даже если вы использовали тот, который добавлен через графический интерфейс, вы, похоже, не можете получить доступ ни к одному образцу слайдов, кроме первого. И поэтому вы, похоже, не можете получить доступ, манипулировать или назначить какой-либо макет из любого образца слайдов, кроме первого, для отдельного слайда.
Я прав в этом предположении, или я что-то упускаю?
Я заранее выражаю благодарность, хотя это часто удаляется из вопросов. Не то, чтобы это привлекло много внимания; Я подозреваю, что в моем будущем может появиться еще один значок перекати-поля.
Комментарии:
1. Это подлинный вопрос и показывает исследовательские усилия. Не должно было быть отклонено.
Ответ №1:
Возможно, эта страница поможет лучше понять его —http://skp.mvps.org/2007/ppt003.htm
Комментарии:
1. Бинго. Это не на этой странице, а на странице, на которую она ссылается; вот эта: skp.mvps.org/designs.htm Естественно; вы вставляете новый образец слайдов, поэтому для MS имеет смысл называть их «Дизайнами» (eyeroll). Большое спасибо, вы сильно демистифицировали его.
2. Терминология Microsoft в этой области PowerPoint, откровенно говоря, беспорядочная! Пользовательский интерфейс ссылается на Slide Master на вкладке View и дизайны в других местах. После того, как в представлении главного слайда есть несколько основных элементов, каждый из которых содержит «родительский элемент» (кажется, никто не знает, как его назвать!) и один или несколько пользовательских макетов. Я думаю, что это, вероятно, сошло с рельсов, когда было введено несколько мастеров, и необходимо было сохранить обратную совместимость.
3. @JamieG; да, я думал о том же самом. Было бы не так плохо, если бы иерархия была лучше объяснена в документации CustomLayouts на MSDN, но на момент написания статьи это вообще не объясняется. ( msdn.microsoft.com/en-us/library/office/ff745764.aspx ) Похоже, что вы можете управлять объектами CustomLayout таким же образом либо с помощью объекта SlideMaster презентации, либо с помощью объекта SlideMaster дизайна… НО сначала вы должны знать, что объект Design (a) существует и (b) на самом деле означает «то, что мы называем slide master, когда вы добавляете его в графический интерфейс».