Примеры макросов PowerPoint VBA и руководство

Это полное руководство по автоматизации PowerPoint с помощью макросов VBA (Visual Basic для приложений). Ниже вы найдете много полезных примеров.

VBA PDF (бесплатные загрузки)

Загрузите наше бесплатное руководство по Microsoft PowerPoint VBA! Или учебники VBA для других программ Office!

Скачать

Руководство по PowerPoint VBA (макросы)

Сохранить как презентацию с поддержкой макросов

Презентацию с кодом VBA следует сохранить как презентацию PowerPoint с поддержкой макросов (* .pptm).

Включите вкладку «Разработчик» на ленте

Перед созданием кода VBA необходимо включить вкладку «Разработчик» на ленте. Для этого выберите «Файл» -> «Параметры», затем нажмите «Настроить ленту» и установите флажок рядом с вкладкой «Разработчик» на правой панели.

Создать макрос PowerPoint

Это простой пример макроса PowerPoint VBA:

1234567891011 Sub SavePresentationAsPDF ()Dim pptName As StringDim PDFName As String'Сохранить PowerPoint как PDFpptName = ActivePresentation.FullName'Заменить расширение файла PowerPoint в названии на PDFPDFName = Left (pptName, InStr (pptName, ".")) & "Pdf"ActivePresentation.ExportAsFixedFormat PDFName, 2 'ppFixedFormatTypePDF = 2Конец подписки

Сохраняет активную презентацию в формате PDF. Каждая строка кода выполняет следующие действия:

  • Создает переменные для имени PowerPoint и имени PDF
  • Присваивает имя активной презентации переменной pptName
  • Создает полное имя PDF
  • Сохраняет презентацию в формате PDF

Приложение PowerPoint

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

Для создания презентации используйте метод Add приложения PowerPoint.

123 Application.Presentations.Add'или без явной ссылкиPresentations.Add

Открыть новую презентацию

Чтобы открыть новую и пустую презентацию, используйте метод Add коллекции Application.Presentations.

1 Presentations.Add

Открыть существующую презентацию

Чтобы открыть уже созданную презентацию, используйте метод Open коллекции Application.Presentations.

1 Presentations.Open («Моя презентация.pptx»)

В приведенном выше коде предполагается, что презентация находится в том же каталоге, что и презентация PowerPoint, содержащая код.

Открыть и присвоить переменной

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

12 Dim ppt как презентацияУстановите ppt = Presentations.Open ("My Presentation.pptx")

Обратитесь к Активной презентации

Используйте ссылку ActivePrentation для управления презентацией, активной в графическом интерфейсе пользователя, при выполнении кода VBA.

12 'Распечатать имя ActivePresentation в окне Immediate WindowDebug.Print ActivePresentation.Name

Сохранить текущую презентацию

Приведенный ниже оператор сохранит активную презентацию, если она была сохранена ранее. Если он не был сохранен, вам будет предложено диалоговое окно «Сохранить как».

1 ActivePresentation.Save

Закрыть текущую презентацию

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

1 ActivePresentation.Close

Полезные ссылки

Назначьте существующую презентацию (по имени) переменной

12 Dim myPresentationByName As PresentationУстановите myPresentationByName = Application.Presentations («Моя презентация»)

Назначить активный слайд переменной

12 Слабый токСлайд как слайдУстановите currentSlide = Application.ActiveWindow.View.Slide

Назначить слайд по индексу переменной

12 Dim mySlide как слайдУстановите mySlide = ActivePresentation.Slides (11)

Подсчитать количество слайдов

12 Dim slideCount As LongslideCount = ActivePresentation.Slides.Count

Получить порядковый номер слайда текущего слайда

12 Тусклый ток Слайд Индекс Как СлайдcurrentSlideIndex = Application.ActiveWindow.View.Slide.SlideIndex

Добавить пустой слайд в конец слайд-шоу

1234567 Dim slideCount As LongТусклый новыйСлайд как слайдslideCount = ActivePresentation.Slides.CountУстановите newSlide = ActivePresentation.Slides.Add (slideCount + 1, 12)'или как ppLayoutBlank = 12Установите newSlide = ActivePresentation.Slides.Add (slideCount + 1, ppLayoutBlank)

Добавить слайд после текущего слайда

12345 Тусклый новыйСлайд как слайдУменьшить значение currentSlideIndex как целое числоcurrentSlideIndex = Application.ActiveWindow.View.Slide.SlideIndexУстановите newSlide = ActivePresentation.Slides.Add (currentSlideIndex, ppLayoutBlank)

Удалить слайд

1234 Уменьшить currentSlideIndex как целое числоcurrentSlideIndex = Application.ActiveWindow.View.Slide.SlideIndexActivePresentation.Slides (currentSlideIndex) .Delete

Перейти к определенному слайду

12 'Вы перейдете к слайду номер 4Application.ActiveWindow.View.GotoSlide (4)

Переместить слайд

Вы можете переместить слайд из старого положения в новое.

123456 'Перейти от слайда 3 к первому слайдуЗатемнить oldPosition как целое число, затемнить newPosition как целоеoldPosition = 3newPosition = 1ActivePresentation.Slides (oldPosition) .MoveTo toPos: = newPosition

Цикл по всем слайдам

Вы можете что-то сделать с каждым слайдом или просмотреть все слайды, найти несколько слайдов и что-то сделать с использованием кода;

123456 Dim mySlide как слайдДля каждого слайда mySlide в ActivePresentation.Slides'Сделайте что-нибудь с текущим слайдом, указанным в переменной' mySlide ''Debug.Print mySlide.NameСледующий слайд

Прокрутите все формы активного слайда

Возможности PowerPoint можно реализовать с помощью «фигур». В приведенном ниже коде выполняется цикл по всем фигурам на текущем слайде, чтобы вы могли манипулировать ими по своему усмотрению;

123456789 Слайд как слайдDim shp as ShapeУстановите currentSlide = Application.ActiveWindow.View.SlideДля каждого shp в currentSlide.Shapes'Сделайте что-нибудь с текущей формой, указанной в переменной' shp ''Например, напечатайте имя формы в окне Immediate WindowDebug.Print shp.NameСледующая shp

Перебирать все фигуры на всех слайдах

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

123456789 Тусклый токСлайд как слайдDim shp as ShapeДля каждого текущего слайда в ActivePresentation.SlidesДля каждого shp в currentSlide.Shapes'Сделайте что-нибудь с текущей формой, указанной в переменной' shp 'Debug.Print shp.NameСледующая shpСледующий текущийСлайд

Перебрать все текстовые поля активного слайда

Текстовые поля - наиболее часто используемые фигуры в презентациях PowerPoint. Вы можете просмотреть все текстовые поля в цикле, добавив проверку «Тип формы». В TexBox тип формы определен как константа VBA msoTextBox (числовое значение константы - 17).

1234567891011 Слайд как слайдDim shp as ShapeУстановите currentSlide = Application.ActiveWindow.View.SlideДля каждого shp в currentSlide.Shapes'Проверяем, является ли тип фигуры msoTextBoxЕсли shp.Type = 17, то msoTextBox = 17'Распечатать текст в TextBoxDebug.Print shp.TextFrame2.TextRange.TextКонец, еслиСледующая shp

Перебрать все текстовые поля на всех слайдах

Опять же, вы можете просмотреть все текстовые поля в презентации, добавив цикл для просмотра всех слайдов.

1234567891011 Dim current Slide as Slide Dim shp as ShapeДля каждого текущего слайда в ActivePresentation.SlidesДля каждого shp в currentSlide.Shapes'Проверяем, является ли тип фигуры msoTextBoxЕсли shp.Type = 17, то msoTextBox = 17'Сделайте что-нибудь с TextBox, указанным в переменной' shp 'Debug.Print shp.TextFrame2.TextRange.TextКонец, еслиСледующая shpСледующий текущийСлайд

Скопируйте выбранные слайды в новую презентацию PPT

Чтобы скопировать определенные слайды в новую презентацию, сначала выберите нужные слайды в существующей презентации, а затем запустите приведенный ниже код;

123456789101112131415161718 Тусклый ток Презентация как презентацияТусклый токСлайд как слайдDim newPresentation as Presentation'Сохранить ссылку на текущую презентациюУстановите currentPresentation = Application.ActivePresentation.'Сохранить ссылку на текущий слайдУстановите currentSlide = Application.ActiveWindow.View.Slide'Добавить новую презентацию и сохранить как ссылкуУстановите NewPresentation = Application.Presentations.Add'Копировать выбранные слайдыSelection.Copy'Вставить в новую презентациюNewPresentation.Slides.Paste

Копировать активный слайд в конец активной презентации

12345 'Копировать текущий слайдApplication.ActiveWindow.View.Slide.Copy'Вставить в концеActivePresentation.Slides.Paste

Полезные примеры макросов PowerPoint

Вот несколько полезных примеров макросов, показывающих, как выполнять задачи. Они также продемонстрируют концепции, описанные выше.

Изменить слайд во время слайд-шоу

1234567891011 Sub ChangeSlideDuringSlideShow ()Dim SlideIndex как целое числоDim SlideIndexPrevious As Integer'Изменить текущий слайд на выбранный слайд 4 во время слайд-шоуSlideIndex = 4'Индекс текущего окна слайд-шоу равен 1 в коллекции SlideShowWindowsSlideIndexPrevious = SlideShowWindows (1) .View.CurrentShowPositionSlideShowWindows (1) .View.GotoSlide SlideIndexКонец подписки

Изменить шрифт на всех слайдах во всех текстовых полях

123456789101112131415 Подменю ChangeFontOnAllSlides ()Dim mySlide как слайдDim shp как форма'Изменить размер шрифта на всех слайдахДля каждого слайда mySlide в ActivePresentation.SlidesДля каждой shp в mySlide.ShapesЕсли shp.Type = 17, то msoTextBox = 17'Измените размер шрифта на 24shp.TextFrame.TextRange.Font.Size = 24Конец, еслиСледующая shpСледующий mySlideКонец подписки

Изменить регистр с верхнего на нормальный во всех текстовых полях

123456789101112131415 Sub ChangeCaseFromUppertoNormal ()Dim mySlide как слайдDim shp как форма'Измените верхний регистр на нормальный регистр для всех слайдовДля каждого слайда mySlide в ActivePresentation.SlidesДля каждой shp в mySlide.ShapesЕсли shp.Type = 17, то msoTextBox = 17'Изменить верхний регистр на нормальный регистрshp.TextFrame2.TextRange.Font.Allcaps = ЛожьКонец, еслиСледующая shpСледующий mySlideКонец подписки

Переключение регистра между верхним и обычным во всех текстовых полях

12345678910111213141516 Sub ToggleCaseBetweenUpperAndNormal ()Dim mySlide как слайдDim shp как форма'Переключение между верхним и обычным регистром для всех слайдовДля каждого слайда mySlide в ActivePresentation.SlidesДля каждой shp в mySlide.ShapesЕсли shp.Type = 17, то msoTextBox = 17'Переключение между верхним и обычным регистромshp.TextFrame2.TextRange.Font.Allcaps = _Не shp.TextFrame2.TextRange.Font.AllcapsКонец, еслиСледующая shpСледующий mySlideКонец подписки

Удалить подчеркивание из нижних нижних.

В типографике нисходящий элемент - это часть буквы, которая располагается ниже базовой линии шрифта. В большинстве шрифтов нисходящие элементы зарезервированы для символов нижнего регистра, таких как g, j, q, p, y, а иногда и f.

Когда вы подчеркиваете текст, он не смотрится хорошо под нисходящими элементами. Вот код для удаления подчеркивания со всех таких символов g, j, p, q и y во всей презентации.

1234567891011121314151617181920212223242526 Sub RemoveUnderlineFromDescenders ()Dim mySlide как слайдDim shp как формаТусклый descenders_list как строкаТусклая фраза как строкаDim x As Long'Убрать подчеркивание из Descendersdescenders_list = "gjpqy"Для каждого слайда mySlide в ActivePresentation.SlidesДля каждой shp в mySlide.ShapesЕсли shp.Type = 17, то msoTextBox = 17'Убрать подчеркивание с букв "gjpqy"С shp.TextFrame.TextRangeфраза = .ТекстДля x = 1 в Len (.Text)Если InStr (descenders_list, Mid $ (фраза, x, 1))> 0, то.Characters (x, 1) .Font.Underline = FalseКонец, еслиДалее xКонец сКонец, еслиСледующая shpСледующий mySlideКонец подписки

Удалить анимацию со всех слайдов

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

123456789101112 Sub RemoveAnimationsFromAllSlides ()Dim mySlide как слайдТусклый я до тех пор, покаДля каждого слайда mySlide в ActivePresentation.SlidesДля i = mySlide.TimeLine.MainSequence.Count To 1 Step -1'Удалить каждую анимациюmySlide.TimeLine.MainSequence.Item (i) .DeleteДалее яСледующий mySlideКонец подписки

Сохранить презентацию как PDF

Вы можете легко сохранить активную презентацию в формате PDF.

1234567891011 Sub SavePresentationAsPDF ()Dim pptName As StringDim PDFName As String'Сохранить PowerPoint как PDFpptName = ActivePresentation.FullName'Заменить расширение файла PowerPoint в названии на PDFPDFName = Left (pptName, InStr (pptName, ".")) & "Pdf"ActivePresentation.ExportAsFixedFormat PDFName, 2 'ppFixedFormatTypePDF = 2Конец подписки

Найти и заменить текст

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

123456789101112131415161718192021222324252627282930313233 Sub FindAndReplaceText ()Dim mySlide как слайдDim shp как формаТусклый findWhat As StringDim replaceWith As StringDim ShpTxt как TextRangeDim TmpTxt как TextRangefindWhat = "шакал"replaceWith = "лиса"'Найти, найти и заменитьДля каждого слайда mySlide в ActivePresentation.SlidesДля каждой shp в mySlide.ShapesЕсли shp.Type = 17, то msoTextBox = 17Установите ShpTxt = shp.TextFrame.TextRange'Найти первое вхождение слова "Найти" (если существует)Установите TmpTxt = ShpTxt.Replace (findWhat, _Replacewhat: = replaceWith, _WholeWords: = True)'Найти любые дополнительные экземпляры слова «Найти» (если существует)Не делать, пока нет TmpTxt - это ничегоУстановите ShpTxt = ShpTxt.Characters (TmpTxt.Start + TmpTxt.Length, ShpTxt.Length)Установите TmpTxt = ShpTxt.Replace (findWhat, _Replacewhat: = replaceWith, _WholeWords: = True)ПетляКонец, еслиСледующая shpСледующий mySlideКонец подписки

Экспорт слайда как изображения

Вы можете экспортировать текущий слайд (или любой другой слайд) как изображение PNG, JPG (JPEG) или BMP.

1234567891011121314 Подложка ExportSlideAsImage ()Dim imageType As StringDim pptName As StringDim imageName As StringDim mySlide как слайд'Экспорт текущего слайда в изображениеimageType = "png" 'или jpg или bmppptName = ActivePresentation.FullNameimageName = Left (pptName, InStr (pptName, ".")) & imageTypeУстановите mySlide = Application.ActiveWindow.View.slidemySlide.Export imageName, imageTypeКонец подписки

Изменить размер изображения для покрытия всего слайда

1234567891011121314151617181920212223242526 Sub ResizeImageToCoverFullSlide ()Dim mySlide как слайдDim shp как форма'Изменить размер изображения до полного размера слайда'Изменить высоту и ширину первой фигуры на текущем слайде'в соответствии с размерами слайдаУстановите mySlide = Application.ActiveWindow.View.slideУстановить shp = mySlide.Shapes (1)'''Заменить два приведенных выше состояния на'' следующее утверждение, если вы хотите'' развернуть текущую выбранную фигуру'' выдаст ошибку, если ничего не выбрано'Установить shp = ActiveWindow.Selection.ShapeRange (1)С шп.LockAspectRatio = Ложь.Height = ActivePresentation.PageSetup.SlideHeight.Width = ActivePresentation.PageSetup.SlideWidth.Left = 0.Top = 0Конец сКонец подписки

Выйти из всех запущенных слайд-шоу

Если у вас одновременно открыто несколько слайд-шоу, вы можете закрыть их все с помощью макроса ниже.

1234567 Sub ExitAllRunningSlideShows ()Сделать пока SlideShowWindows.Count> 0SlideShowWindows (1) .View.ExitПетляКонец подписки

Автоматизация PowerPoint из Excel

Вы также можете подключиться к PowerPoint через другие приложения (например, Excel и Word). В качестве первого шага вы должны обратиться к экземпляру PowerPoint.

Есть два способа сделать это - раннее связывание а также позднее связывание .

Открыть PowerPoint - Раннее связывание

В «Раннем связывании» вы должны явно указать ссылку на «Библиотеку объектов Microsoft PowerPoint 16» (для MS Office 2022) в VBE (редактор Visual Basic) с помощью параметра «Инструменты»> «Ссылки».

123 Раннее связываниеDim pptApp как приложениеУстановите pptApp = New PowerPoint.Application

Открыть PowerPoint - Поздняя привязка

В приложении «Late Binding» переменная объявляется как объект, и механизм VBA подключается к нужному приложению во время выполнения.

123 Позднее связываниеDim pptApp как объектУстановите pptApp = CreateObject ("PowerPoint.Application")

Сделать приложение видимым

После установки ссылки на приложение PowperPoint вам может потребоваться сделать его видимым.

1 pptApp.Visible = Верно

Управление PowerPoint

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

Например

1 Presentations.Open ("My Presentation.pptx")

должен быть использован понравилось это

1 pptApp .Presentations.Open («Моя презентация.pptx»)

Закройте приложение

Завершив то, что вы хотели сделать с приложением PowerPoint, вы должны закрыть его и освободить ссылку.

12 pptApp.QuitУстановите pptApp = Nothing

Копировать из Excel в PowerPoint

Этот код скопирует диапазон из Excel в PowerPoint:

Примечание: Мы постарались максимально упростить демонстрацию того, как диапазон из Excel можно скопировать в PowerPoint с помощью VBA.

12345678910111213141516171819 Sub copyRangeToPresentation ()'Открыть новый экземпляр PowerPointУстановите pptApp = CreateObject ("PowerPoint.Application")С pptApp'Создать новую презентациюУстановите ppt = .Presentations.Add.'Добавить пустой слайдУстановите newSlide = ppt.Slides.Add (1, 12) 'ppLayoutBlank = 12'Копировать диапазон из активного листа в ExcelActiveSheet.Range ("A1: E10"). Копировать'Вставить в Powerpoint как изображениеnewSlide.Shapes.PasteSpecial DataType: = 2 '2 = ppPasteEnhancedMetafile'Перейти в PowerPoint.АктивируйтеКонец сКонец подписки

Часто задаваемые вопросы о PowerPoint VBA

Что такое макросы в PPT?

Макрос - это общий термин, обозначающий набор инструкций по программированию, которые автоматизируют задачи. Макросы PowerPoint (PPT) автоматизируют задачи в PowerPoint с помощью языка программирования VBA.

Как использовать VBA в PowerPoint?

Чтобы использовать VBA в PowerPoint, откройте редактор VBA (ALT + F11 или Разработчик> Visual Basic).

Как создать макрос в PowerPoint?

1. Откройте редактор VBA (ALT + F11 или Разработчик> Visual Basic).
2. Выберите «Вставить»> «Модуль», чтобы создать модуль кода.
3. Введите «Sub HelloWorld» и нажмите Enter.
4. Между строками «Sub HelloWorld» и «End Sub» введите «MsgBox« Hello World! »
5. Вы создали макрос!
6. Теперь нажмите «F5», чтобы запустить макрос.

Автор сценария: Винамра Чандра

Вы поможете развитию сайта, поделившись страницей с друзьями

wave wave wave wave wave