Сохранение презентации, содержащего макросы VBA
Макросы можно создавать для PowerPoint с помощью Visual Basic для приложений (VBA). Презентация, содержащая макросы VBA, должна быть сохранена с расширением имени файла, отличного от обычного файла презентации (например, .pptx, POTX или PPSX), в котором нет макросов.
Чтобы сохранить презентацию, содержащую макросы VBA, сделайте следующее:
- Откройте вкладку Файл и выберите команду Сохранить как.
- В списке «Сохранить как тип » выберите один из следующих вариантов:
- Презентация powerPoint Macro-Enabled Презентация с расширением PPTM-имени файла, которое может содержать код VBA.
- Показать Macro-Enabled PowerPoint Показ с расширением PPSM-имени файла, включающее предварительно утвержденные макросы, которые можно запускать в презентации.
- Шаблон конструктора Macro-Enabled PowerPoint Шаблон с расширением potm-имени файла, который включает предварительно утвержденные макросы, которые можно добавить в шаблон и использовать в презентации.
- Нажмите кнопку Сохранить.
Создание макроса в PowerPoint
Запись макроса, которая используется для автоматизации часто используемых задач, недоступна в PowerPoint 2013 и более новых версиях. Вместо этого для создания или изменения макросов можно использовать Visual Basic для приложений (VBA). К ним относятся изменения, созданные в более ранних версиях PowerPoint.
Создание и изменение макроса
Чтобы создать или изменить макрос с помощью Visual Basic для приложений, сделайте следующее:
- На вкладке Вид выберите Макросы.
- В диалоговом окне Макрос введите имя макроса.
- В списке Где выберите шаблон или презентацию, где требуется сохранить макрос.
- В поле Описание введите описание макроса.
- Чтобы открыть Visual Basic для приложений, нажмите кнопку Создать.
Важно: Это средство недоступно в Office на компьютерах под управлением Windows RT. Хотите узнать, какая у вас версия Office?
Запуск макроса
Сведения о том, как запускать макрос в последних версиях PowerPoint, см. в теме «Запуск макроса в PowerPoint».
Презентация с поддержкой макросов что это
What’s on this Page
Файлы с расширением PPTM представляют собой файлы презентаций с поддержкой макросов, созданные с помощью Microsoft PowerPoint 2007 или более поздних версий. Они аналогичны файлам PPTX с той разницей, что боковые файлы не могут выполнять макросы, хотя могут содержать макросы. Файлы PPTM можно редактировать, открыв их в Microsoft PowerPoint и обновив содержимое. Другой похожий формат — PPSM, но по умолчанию он доступен только для чтения и запускает слайд-шоу при открытии. PPTM, как и PPTX, содержит слайды для различных элементов презентации, таких как текст, изображения, видео, графики и другие сопутствующие материалы.
Краткая история
Формат файла PPTM был введен в 2007 году и использует стандарт Open XML, адаптированный Microsoft еще в 2000 году. Новый тип файла имеет дополнительные преимущества небольшого размера файла, меньшего количества изменений в повреждении и хорошо отформатированного представления изображений. Это было в начале 2000 года, когда Microsoft решила внести изменения, чтобы приспособить стандарт для Office Open XML. К 2007 году этот новый формат файлов стал частью Office 2007 и поддерживается также в новых версиях Microsoft Office.
Спецификации формата файла
Файлы, созданные с помощью офисного формата файлов Open XML, представляют собой набор файлов XML вместе с другими файлами, которые обеспечивают связи между всеми составными файлами. Эта коллекция на самом деле представляет собой сжатый архив, который можно распаковать, чтобы просмотреть его содержимое. Для этого просто переименуйте расширение файла PPTM в zip и извлеките его, чтобы просмотреть его содержимое.
Следующие разделы проливают свет на каждый из них.
[Типы содержимого].xml
Это единственный файл, который находится на базовом уровне при распаковке zip-архива. В нем перечислены типы содержимого для частей внутри пакета. Все ссылки на XML-файлы, включенные в пакет, указаны в этом XML-файле. Ниже приведен тип содержимого для части слайда:
Если в пакет необходимо добавить новые части, это можно сделать, добавив новую часть и обновив все отношения в файлах .rels. Следует иметь в виду, что для такого изменения необходимо также обновить Content_Types.xml.
_rels (папка)
Отношения между другими частями и ресурсами вне пакета поддерживаются частью отношений. Папка «Отношения» содержит один XML-файл, в котором хранятся отношения на уровне пакетов. Ссылки на ключевые части файлов презентации содержатся в этом файле в виде URI. Эти URI определяют тип отношения каждой ключевой части к пакету. Это включает отношение к основному офисному документу, расположенному как ppt/presentation.xml, и другим частям в docProps в качестве основных и расширенных свойств.
Каждая часть документа, являющаяся источником одного или нескольких взаимосвязей, будет иметь свою собственную часть взаимосвязей, где каждая такая часть взаимосвязи находится в подпапке _rels части и именуется путем добавления ‘.rels’ к имени часть. Основная часть содержимого (presentation.xml) имеет собственную часть отношений (presentation.xml.rels). Он содержит связи с другими частями содержимого, такими как slideMaster1.xml, notesMaster1.xml, handoutMaster1.xml, slide1.xml, presProps.xml, tableStyles.xml, theme1.xml, а также URI для внешних ссылок.
Явная связь
Для явной связи ресурс ссылается с использованием атрибута Id объекта. элемент. То есть идентификатор в источнике сопоставляется непосредственно с идентификатором элемента отношения с явной ссылкой на цель.
Например, слайд может содержать такую гиперссылку:
r:id#“rId2” ссылается на следующую связь в части отношений для слайда (slide1.xml.rels).
Неявная связь
Для неявной связи нет такой прямой ссылки на Идентификатор . Вместо этого ссылка понимается.
Папка ppt
Это основная папка, содержащая все подробности о содержимом презентации. По умолчанию он имеет следующие папки:
- _rels
- тема
- слайды
- макеты слайдов
- мастера слайдов
и следующие xml-файлы:
- презентация.xml
- преспропс.xml
- таблицаСтили.xml
- viewProps.xml
Использованная литература
- [MS-PPTX] — формат файла PPTX
- Open Office XML
See Also
- Формат XVID-файла
- Формат файла РА
- Формат FLV-файла
- Формат VOB-файла
- Формат файла F4V
Как управлять презентациями Microsoft PowerPoint с помощью VBA
Данный материал основан и доработан по материалам оригинальной статьи «EasyTweaks — How to create and add slides to PowerPoint presentations with VBA».
Существует ли способ автоматизировать создание презентаций PowerPoint с нуля с последующим быстрым добавлением слайдов к существующей презентации? Мы подумали, что данную задачу для PowerPoint вполне под силу решить с помощью макросов. Однако, как известно, PowerPoint не включает средство записи макросов Macro Recorder (в отличие от Excel и Word, которые имеют встроенные средства записи макросов). Поэтому у нас остаётся лишь старый добрый Visual Basic for Application (VBA), который мы можем использовать для создания простых макросов для автоматизации PowerPoint. Разумеется, существуют и альтернативные варианты автоматизации PowerPoint, но они выходят за рамки данной статьи.
В этом кратком руководстве мы рассмотрим три различных варианта использования:
- Создание новой презентации (пустой или по шаблону);
- Добавление слайдов к существующей презентации;
- Сочетание двух предыдущих вариантов.
Создайте презентацию PowerPoint и сохраните ее с возможностью выполнения макросов (файл с расширением *.pptm).

Посмотрите на Ленту (Ribbon). Если в Ленте нет вкладки «Разработчик» (Developer), то перед началом написания кода необходимо включить эту вкладку (меню ленты File — Options).

Далее во вкладке Trust Center, включите возможность выполнения макросов в PowerPoint.

После того, как вы сделаете вкладку «Разработчик» (Developer) видимой для вашей ленты, перейдите на эту вкладку и нажмите кнопку Visual Basic (или просто нажмите Alt + F11), чтобы открыть Visual Basic IDE.

Макрос VBA для создания презентации и добавления слайдов
В редакторе Visual Basic щелкните правой кнопкой мыши VBAProject и выберете пункт вставки модуля (Insert > Module).

Вставьте следующий код во вновь созданный модуль:
Sub CreatePres_AddSlides() Dim NewPres as Presentation Dim NewSlide as Slide Set NewPres = Presentations.Add NewPres.SaveAs("MyPresentation.pptx") ' Title Slide Set NewSlide = ActivePresentation.Slides.Add(Index:=1, Layout:=ppLayoutTitle) 'This statement adds a blank slide in the second place Set NewSlide = ActivePresentation.Slides.Add(Index:=2, Layout:=ppLayoutBlank) 'Save the new PowerPoint file NewPres.SaveAs("MyPresentation.pptx") End Sub
Нажмите в меню File, а затем Save… При сохранении следует выбрать формат с поддержкой макросов (*.pptm):

Чтобы запустить код, нажмите Run, а затем выберите Run Sub/UserForm (или просто F5).

В итоге мы увидим созданный и открытый файл презентации.

Теперь редактор Visual Basic можно закрыть.
Как создавать и вставлять Фигуры (Shapes) в PowerPoint с помощью VBA
Захотелось автоматизировать довольно обыденную задачу по созданию слайдов PowerPoint. При автоматизации PowerPoint вы обычно работаете с коллекцией слайдов и фигур. Слайды говорят сами за себя, а фигуры — это почти все остальное, включая текстовые поля, кнопки действий, медиа-объекты, метки, изображения, выноски, блок-схемы и т.д.. Хотя мы будем демонстрировать приемы работы с PowerPoint, часть синтаксиса на самом деле вполне применима к Microsoft Word и Excel.
Приступим к работе с фигурами. Во-первых, давайте продолжим и откроем редактор VBA, нажав Alt + F11. Если вы следовали предыдущему руководству, у вас должен быть Module1 в вашем списке модулей.
Добавление текстового поля через VBA
Начнем с добавления вертикального текстового поля к нашему первому слайду презентации. Добавьте следующий код в Module1 , затем нажмите кнопку Сохранить (Ctrl + S) и запустите макрос (пункт меню Run Sub/User Form или просто нажмите F5).
Sub CreateTextBox() Set MySlide = ActivePresentation.Slides(2) With MySlide.Shapes .AddTextbox(Orientation:=msoTextOrientationVertical, _ Left:=90, Top:=200, Width:=80, Height:=200).TextFrame.TextRange.Text = ("Это моё вертикальное тестовое поле") End With End Sub

Обратите внимание, что вы можете довольно легко изменить размер текстового поля с помощью VBA. В этом случае мы изменим размер первой фигуры на втором слайде, свободно меняйте код при необходимости.
Sub ResizeText() Set MyShape = ActivePresentation.Slides(2).Shapes(1) 'Add your required dimensions as needed below With MyShape .Width = 200 .Height = 35 End With End Sub

Текстовые эффекты PowerPoint с VBA
Давайте теперь предположим, что мы хотим добавить текстовое поле ко всем слайдам в презентации, на этот раз немного более визуально привлекательное. Для этого мы будем использовать VBA для создания пользовательских текстовых эффектов, которые мы можем встроить в один или несколько слайдов презентации. Сначала мы пройдемся по слайдам презентации, а затем добавим текстовый эффект по мере необходимости.
Sub SetEffects() Dim i As Integer For i = 1 To ActivePresentation.Slides.Count ActivePresentation.Slides(i) _ .Shapes.AddTextEffect msoTextEffect12, "Проба пера", _ "Segoe UI", 32, msoTrue, msoTrue, 650, 50 Next End Sub
Посмотрим, что получилось:

Обратите внимание, что вы можете использовать простой водяной знак для достижения этого конкретного результата.
Выноски PowerPoint с VBA
В нашем следующем примере мы добавим выноску ко второму слайду презентации.
Sub CreateCallout() ActivePresentation.Slides(2).Shapes.AddCallout(Type:=msoCalloutTwo, Left:=200, Top:=50, _ Width:=300, Height:=100).TextFrame.TextRange.Text = "Моя выноска" End Sub

Создание презентации PowerPoint из книги Excel
Рассмотрим ещё один случай, когда вы хотите создать презентацию PowerPoint прямо из электронной таблицы Excel. Вы можете использовать аналогичный метод в Word и других приложениях Microsoft Office.
Данный пример демонстрирует возможность вызова другого приложения MS Office из первоначально запущенного приложения (прим. пер.).
Сперва создайте новую книгу Excel и сохраните ее как книгу с макросами (файл с расширением *.xlsm).

Войдите в редактор Visual Basic Editor (меню ленты Developer > Visual Basic, либо сочетанием клавиш Alt+F11)

В редакторе VBE свяжите электронную таблицу с моделью данных PowerPoint, выбрав в меню (Tools > References), Microsoft PowerPoint Object Library.


Вставьте новый модуль VBA для внесения кода процедуры Visual Basic.

Вставьте приведенный ниже код VBA непосредственно в модуль VBA и нажмите иконку Save.
(При необходимости, вы можете внести свои изменения в сценарий.)
Sub CreatePresentationFromExcel() ' Dim MyPPt As PowerPoint.Application Dim NewPres As PowerPoint.Presentation Dim NewSlide As Slide Set MyPPt = CreateObject("PowerPoint.Application") ' Set NewPres = MyPPt.Presentations.Add Set NewSlide = MyPPt.ActivePresentation.Slides.Add(Index:=1, Layout:=ppLayoutTitle) ' End Sub

Вставьте кнопку прямо в электронную таблицу Excel (меню Developer > Insert, а затем выберите Button (Form Control)).

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

Нажмите кнопку и проверьте результат.