Vba powerpoint создание слайда

Обновлено: 03.07.2024

Использовать возможности VBA в PowerPoint на предприятиях приходится намного реже, чем возможности Word или Excel, однако иногда такие потребности возникают. Часто специалисты используют презентации PowerPoint для сопровождения выступлений при демонстрации продуктов или услуг, отчетов о деятельности и т.п. Поскольку со слайдами можно связывать звуковое сопровождение, PowerPoint активно используется для целей обучения — например, подготовки интерактивных уроков. Еще одна часто используемая возможность — создание звуковых книг с картинками для детей. При помощи PowerPoint можно создавать фотоальбомы со звуковым сопровождением, диафильмы со звуком, детские игры и многое другое. И как только данных становится много (а, например, цифровых фотографий редко бывает мало) сразу встает вопрос об автоматизации.

PowerPoint — программа работы с презентациями (то есть наборами графических изображений — слайдов, иногда со звуковым сопровождением). Чаще всего приходится программным способом выполнять следующие действия:

  • автоматически создавать презентации (например, на основе набора изображений в каталоге);
  • производить обработку презентаций — менять формат изображения, добавлять или изменять аудиосопровождение и т.п. Чаще всего подобные действия приходится производить в тех ситуациях, когда презентации были связаны с внешними файлами и эти файлы изменяются.

В PowerPoint система объектов выглядит следующим образом:

  • объект самого высокого уровня — Application, с набором свойств и методов, очень похожим на аналогичные объекты в Word и Excel;
  • на уровень ниже — коллекция Presentations с объектами Presentation. Можно сказать, что эти объекты по месту в иерархии примерно аналогичны объекту Workbook в Excel;
  • в объект Presentation встроена коллекция Slides с объектами Slide (в качестве примерного аналога можно привести листы в книгах Excel);
  • в объект Slide встроена коллекция Shapes с объектами Shape. Объекты Shape представляют все элементы слайда (всего их 22 типа) — изображение, надпись, диаграмма, заголовок, таблица, автофигура и т.п.

Вокруг этих четырех объектов — Application, Presentation, Slide и Shape и строится вся объектная модель PowerPoint.

В этой главе мы не будем приводить справку по свойствам и методам различных объектов PowerPoint (нужные свойства и методы можно быстро найти при помощи макрорекордера), а вместо этого проиллюстрируем работу с PowerPoint на примерах из реальной жизни.

Предположим, что нам нужно создать презентацию PowerPoint на основе набора JPG-картинок, которые будут лежать в каталоге C:\Slides (например, они получены со сканера или цифрового фотоаппарата). Имена файлов JPG идут по порядку, например, с DSCN2440.JPG по DSCN2480.JPG. Файлов в каталоге может быть переменное количество, поэтому нам нужно взять все файлы, которые есть в этом каталоге. Наша задача — поместить их в презентацию по порядку. Задача усугубляется тем, что JPG-файлы разного размера (по высоте и ширине), а слайды, конечно, желательно сделать одинаковыми.

Как ни удивительно, код VBA для PowerPoint удобнее запускать не из PowerPoint, а из внешнего приложения, поддерживающего VBA, например, Word или Excel. Так на момент запуска у нас гарантированно не будет активных презентаций и мы ничего не перепутаем с точки зрения вставки.

Как может выглядеть наше решение:

Создаем новый документ в Word или Excel, в него помещаем кнопку или обеспечиваем другой графический интерфейс по вкусу. Главное — не забыть добавить в проект ссылки на две объектные библиотеки:

  • Microsoft PowerPoint 11.0 Object Library (C:\Program Files\Microsoft Office\Office 11\msppt.olb) — для объектов самого PowerPoint;
  • Microsoft Scripting Runtime (C:\Windows\System32\ScrRun.dll) — для того , чтобы можно было пользоваться объектом FileSystemObject и прочими для работы с файловой системой . Эта библиотека, которая есть на любом компьютере начиная с Windows 2000, — самый удобный способ выполнения большинства действий в файловой системе.

Далее можно приступать к созданию кода.

Конечно, первое, что нам потребуется — запустить PowerPoint. Делается это точно так же, как и для Word, Excel, Access и т.п.:

Dim oApp As New PowerPoint.Application

Следующее действие — нужно создать новую пустую презентацию:

Dim oPresent As PowerPoint.Presentation

Set oPresent = oApp.Presentations.Add()

Все абсолютно стандартно, как будто мы создаем новый документ Word. А вот дальше начинаются моменты, специфические для PowerPoint и нашей задачи

Следующим действием должно быть создание слайда. Но нам придется создать столько слайдов, сколько файлов находится в каталоге C:\Slides. Конечно же, нужно создавать слайды в цикле. Вначале мы получаем (при помощи библиотеки Scripting Runtime (можно было бы обойтись и средствами Office, но так проще) коллекцию всех файлов этого каталога:

Dim oFSO As New Scripting.FileSystemObject

Dim oFolder As Scripting.Folder

Dim oFile As Scripting.File

Set oFolder = oFSO.GetFolder("C:\Slides")

For Each oFile In oFolder.Files

Если мы вместо многоточия поставим строку, например такого вида:

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

Далее нам все-таки нужно создать слайды. Делается это при помощи метода Add() коллекции Slides. В документации к русскому PowerPoint 2003 описание этого метода по непонятной причине отсутствует (даже несмотря на то, что справка по VBA все равно на английском), но из всплывающей подсказки можно догадаться, что этот метод хочет принимать два параметра (обязательных): номер слайда в презентации, который должен начинаться с 1, и одно из значений перечисления ppSlideLayout (из нескольких десятков), которое определяет шаблон слайда.

Номер слайда придется обеспечивать счетчиком, а наилучший для нас шаблон — пустой:

Dim nCounter As Integer

For Each oFile In oFolder.Files

Set oSlide = oApp.ActivePresentation.Slides.Add(nCounter, ppLayoutBlank)

nCounter = nCounter + 1

А теперь — самое главное: вставляем в слайд изображение и настраиваем его размеры. Для этой цели можно использовать метод AddPicture() коллекции Shapes каждого слайда:

oSlide.Shapes.AddPicture FileName:="C:\Slides\" & _

oFile.Name, LinkToFile:=msoFalse, SaveWithDocument:=msoTrue, _

Left :=10, Top :=10, Width :=700, Height :=520

Параметр FileName — это, конечно, имя передаваемого файла. Именно он и будет меняться в цикле. LinkToFile — этот параметр определяет, будет ли файл изображения помещен внутрь презентации ( msoFalse) или в презентацию будет помещена на него ссылка ( msoTrue). Конечно, если вставляемые файлы не очень большие, то и с точки зрения удобства, и с точки зрения производительности презентации лучше поместить их внутрь презентации (файла PPT). Параметр SaveWithDocument, конечно, определяет, сохранять ли наши изображения вместе с презентацией (в нашем случае сохранять). А Left, Top, Width и Height нужны, чтобы сделать изображения одинакового размера (чтобы подобрать нужные значения, я занимался обычным подбором по методу "недолет-перелет").

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

Итоговый код для нашей задачи может выглядеть так:

Dim oApp As New PowerPoint.Application

Dim oPresent As PowerPoint.Presentation

Set oPresent = oApp.Presentations.Add()

Dim oFSO As New Scripting.FileSystemObject

Dim oFolder As Scripting.Folder

Dim oFile As Scripting.File

Set oFolder = oFSO.GetFolder("C:\Slides")

For Each oFile In oFolder.Files

Set oSlide = oApp.ActivePresentation.Slides.Add(nCounter, ppLayoutBlank)

oSlide.Shapes.AddPicture FileName:="C:\Slides\" & _

oFile.Name, LinkToFile:=msoFalse, SaveWithDocument:=msoTrue, _

Left:=10, Top:=10, Width:=700, Height:=520

Несколько строк кода могут заменить часы нудной работы по копированию и вставке изображений вручную.

На практике работа с PowerPoint может быть достаточно сложной при работе с эффектами анимации, звуковым сопровождением, диапазонами фигур и т.п. Найти в документации то, что вам будет нужно, не так-то просто. Рекомендуется для получения "наводящих указаний" активнее использовать макрорекордер и анализировать созданный им код. Однако макрорекордер часто выбирает какие-то очень нетривиальные способы выполнения различных действий. Например, для вставки того же рисунка он предлагает использовать код типа

что, конечно, задачу не упрощает. Так что код макрорекордера всегда рекомендуется проверять и исправлять.

Коллекция всех объектов Slide в указанной презентации.

Заметки

Если ваше Visual Studio включает Microsoft.Office. Interop. PowerPoint эта коллекция сопопопо-ет следующим типам:

  • Microsoft. Office. Interop. PowerPoint. Slides.GetEnumerator (для переумерия объектов Slide.)

В следующих примерах описано, как:

Создание слайда и добавление его в коллекцию

Возвращение одного слайда, указываемого по имени, номеру индекса или номеру слайд-номера

Возвращение подмножество слайдов в презентации

Применение свойства или метода для всех слайдов в презентации одновременно

Пример

Чтобы вернуть коллекцию Слайдов, используйте свойство Slides. Используйте метод Добавить, чтобы создать новый слайд и добавить его в коллекцию. В следующем примере в активную презентацию добавляется новый слайд.

Используйте Слайды (индекс), где индекс — это имя слайда или номер индекса, или используйте Slides.FindBySlideID (индекс), где индекс — это номер слайда, чтобы вернуть один объект Slide. В следующем примере устанавливается макет слайда в активной презентации.

В следующем примере устанавливается макет слайда с именем "Большая диаграмма" в активной презентации. Обратите внимание, что слайды автоматически создаются имена формы Sliden (где n является integer) при их создания. Чтобы назначить слайду более значимое имя, используйте свойство Name.

Используйте Slides.Range (index), где индексом является номер индекса слайдов или имя или массив номеров индексов слайдов или массив имен слайдов, чтобы вернуть объект SlideRange, представляюрю подмножество коллекции Slides. В следующем примере задается фоновое заполнение слайдов одного и трех в активной презентации.

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

См. также

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.


VBA - это мощный инструмент, который можно использовать в любой области интегрированных инструментов Microsoft. Как и в MS Excel, в Powerpoint также предусмотрена возможность создания макроса и автоматизации презентации. Автоматизация может быть любой формы. Вы видели презентации, в которых слайды были такими большими и подробными, что иногда заканчивалось более чем 50 слайдами, чтобы охватить тему обучения или отчет. Таким образом, вместо добавления диаграмм в PowerPoint из Excel, мы можем создать код, который будет напрямую копировать диаграммы из Excel и вставлять их в слайд PowerPoint.

Как создать презентацию PowerPoint из Excel VBA?

Ниже приведен пример создания презентации PowerPoint с использованием кода VBA в Excel:

Вы можете скачать этот шаблон VBA PowerPoint Excel здесь - Шаблон VBA PowerPoint Excel

Пример VBA PowerPoint

Давайте сначала создадим диаграмму в Excel. Для этого нам нужны данные. Ниже у нас есть некоторые данные о продажах 8 продавцов.


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


Теперь наша задача состоит в том, чтобы получить этот график на слайде PowerPoint, как он показан здесь, с заголовком диаграммы в качестве заголовка слайда PowerPoint. Для этого нам нужно включить PowerPoint в VBA.

Выполните следующие шаги:

Шаг 1: Перейдите в меню VBA Tool, как показано ниже, и выберите опцию References…, как показано ниже.


Шаг 2: Как только мы это сделаем, у нас появится окно References VBA Project. Из этого списка выберите MS PowerPoint 15.0 Object Library, как показано ниже. Это активирует все команды, связанные с MS PowerPoint в VBA. Без этого мы не сможем запустить VBA в PowerPoint. Установите флажок в указанной библиотеке и нажмите « ОК» .


Шаг 3: Теперь для написания кода для VBA PowerPoint нам нужен модуль. Чтобы получить новый модуль, перейдите в меню «Вставка» и выберите опцию « Модуль», как показано ниже.


Шаг 4: В этом модуле напишите подкатегорию VBA PowerPoint или под любым другим именем, как показано ниже.

Код:


Шаг 5: Теперь для создания презентации с помощью Chart in Excel нам нужно несколько переменных. Давайте рассмотрим 5 переменных как:

  1. Приложение для приложения PowerPoint.
  2. PPT для презентации PowerPoint,
  3. PPTSlide для PowerPoint Slide,
  4. PPTShapes для PowerPoints,
  5. PPTCharts для Excel Chart Объект.

Код:


Шаг 6: Теперь используйте команду Set, чтобы добавить новое приложение PowerPoint, как показано ниже.

Код:


Шаг 7: В строке кода сделайте приложение PowerPoint видимым и используйте msoCTrue для таинственной оценки неправильного пути. И после этого, то же самое приложение будет использоваться в качестве развернутого в PowerPoint для получения полного представления.

Код:


Шаг 8: Теперь установите PPT, который является нашей презентацией для добавления в приложение MS PowerPoint,

Код:


Шаг 9: Теперь мы будем использовать комбинацию цикла For-Next и If-Else. Начиная с цикла For-Next.

Код:


Шаг 10: В цикле For PPTCharts, первые активные графики в Excel.

Код:


Шаг 11: Ниже приведен код для вставки диаграммы из Excel в слайд PowerPoint. Используйте код, чтобы добавить слайд в определенную PAplication, добавляя +1 слайд каждый раз, когда мы запускаем код.

Код:


Шаг 12: Теперь перейдем к следующей строке кода, используйте приведенный ниже набор кода, чтобы установить вид активного окна. Это будет использоваться для скольжения после вставки диаграммы в презентацию PowerPoint.

Код:


Шаг 13: После этого выберите переменную PPTChart, которую мы определили ранее. После этого скопируйте выбранный активный график в область графика, где он будет размещен. И используйте команду Специальная вставка, чтобы вставить диаграмму с изображениями.

Код:


Шаг 14: Теперь выберите форму диаграммы, которая находится на первой позиции в качестве текстового диапазона. И перенесите в презентацию PowerPoint тот же заголовок, который называется « Количество продано ».

Код:


Это завершает код для VBA PowerPoint.

Шаг 15: Теперь пошагово скомпилируйте код, чтобы узнать, есть ли какая-либо строка кода с ошибкой, нажав функциональную клавишу F8. И после этого запустите код, нажав на кнопку Play, которая находится под строкой меню, как показано ниже.

Мы разместим диаграмму в файле PowerPoint на первом слайде, как показано ниже.


Поскольку код большой, полный код можно увидеть в текстовом поле ниже.

Плюсы Excel VBA PowerPoint

  • Использование VBA в Powerpoint облегчает работу, если в файле ppt есть так много слайдов с огромным содержанием.
  • VBA с Powerpoint обеспечивает автоматизацию даже при ограниченных доступных функциях.

Минусы Excel VBA PowerPoint

  • Нам нужно выбирать библиотеку объектов Microsoft PowerPoint 15.0 из параметра «Ссылка», расположенного в пункте меню «Инструмент», который нам нужен в начале примера-1, каждый раз, когда мы запускаем код для PowerPoint.

То, что нужно запомнить

  • Сохраните файл в формате Macro-Enable Presentation после написания кода. Это поможет нам избежать потери кода и повторного использования в будущем.
  • Функция записи не будет работать здесь, так как нам нужно перейти с Excel на PowerPoint, изменив интерфейс между страницами.
  • Всегда компилируйте код перед запуском. Это поможет вам найти ошибку в коде. Это очень полезно, когда мы пишем большие строки кода.
  • Для запуска и реализации кода нам нужно открыть лист Excel с диаграммой, которую мы хотим вставить в слайд PowerPoint.
  • Мы можем выровнять диаграмму в PowerPoint в соответствии с нашими потребностями.

Рекомендуемые статьи

Это руководство по VBA PowerPoint. Здесь мы обсудим, как создать презентацию PowerPoint из Excel с использованием кода VBA, а также на практическом примере и загружаемом шаблоне Excel. Вы также можете просмотреть наши другие предлагаемые статьи -

Цель урока: закрепить практические навыки создания макросов на языке VBA

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

Задание 1

Перед началом работы запустите программу Power Point и установите низкий уровень безопасности (СЕРВИС – Макрос – Безопасность).

1. Создайте титульный слайд № 1.

2. Создайте слайд № 2 – Меню, предназначенное для выбора предметной области: математика, русский язык. Настройте гиперссылки для перехода на соответствующие слайды № 3 (математика) и № 4 (русский язык) (Рисунок 1).


Рис. 1. Слайд № 2 «Меню»

3. Создайте слайд № 3 (Математика). Разместите на слайде 4 командные кнопки (CommandButton) с помощью панели Элементов управления (Вид – панели инструментов – элементы управления).

4. С помощью автофигур (панель Рисования) создайте на слайде кнопку «Выход», настройте её на завершение презентации. Для этого в контекстном меню кнопки выберите Настройка действия – По щелчку мыши – Перейти по гиперссылке – Завершить показ.


5. Установите свойства командных кнопок. В контекстном меню кнопки CommandButton1 нужно выбрать пункт Свойства и установить свойства в соответствии с таблицей. Аналогично установите свойства остальных кнопок.

Внешний вид слайда показан на Рисунке 2.


Рис. 2 Слайд № 3 «Математика»

6. Создайте программные коды каждой кнопки для вызова пользовательских форм (UserForm). Для этого в контекстном меню кнопки выбрать команду «Исходный текст» (или выполнить двойной щелчок по кнопке). Откроется окно программного кода. После заголовка процедуры нужно ввести команду для открытия соответствующей формы:

7. Добавьте в проект 4 пользовательские формы командой Insert – UserForm.

8. Перейдите на форму UserForm1 и разместите на ней необходимые элементы управления. Вид формы показан на Рисунке 3. В таблице указаны только элементы управления, которые используются в программном коде. Остальные метки используются для поясняющих надписей на форме. Свойства элементов управления установите самостоятельно.


Рис. 3 Интерфейс формы UserForm1

9. Добавим в проект модуль (Insert – Module), в котором опишем глобальные переменные и их тип. Эти переменные будут доступны для всех пользовательских форм проекта.

Global a, b, s, n, k As Integer, z As Integer

10. Создайте программные коды для формы UserForm1 «Сложение».

11. Сохраните работу и проверьте работоспособность всех кнопок.

12. Аналогично создайте программные коды для форм «Вычитание» (UserForm2), «Умножение» (UserForm2), «Деление» (UserForm2).

13. Для вычитания введём проверку логического условия, чтобы из большего числа вычитать меньшее:

14. Для деления введём проверку на кратность чисел, чтобы числа делились нацело:

15. Создайте слайд № 4 (Русский язык). Разместите на слайде 4 командные кнопки (CommandButton) с помощью панели Элементов управления. Свойства кнопок настройте аналогично слайду № 3. В названиях кнопок укажите правила русского языка (выберите их самостоятельно). Например: «НН и Н», «ЖИ и ШИ» и т.д.

16. Добавьте в проект ещё 4 пользовательские формы, по одной на каждое правило.

17. Перейдите на форму UserForm5 и разместите на ней необходимые элементы управления. Вид формы показан на Рисунке 4. В таблице указаны только элементы управления, которые используются в программном коде.


Рис. 4 Интерфейс формы UserForm5

18. Создайте программный код для кнопки «Проверка».

19. Аналогично создайте программные коды для остальных форм и сохраните проект.

Читайте также: