Приклади та підручники макросу PowerPoint VBA

Це повний посібник з автоматизації PowerPoint за допомогою макросів VBA (Visual Basic for Applications). Нижче ви знайдете багато корисних прикладів.

VBA PDF (безкоштовне завантаження)

Завантажте наш безкоштовний посібник Microsoft PowerPoint VBA! Або підручники VBA для інших офісних програм!

Завантажити

Підручник з PowerPoint VBA (макроси)

Зберегти як презентацію з підтримкою макросу

Презентація з кодом VBA має бути "Збережено як" Презентація з підтримкою макросу PowerPoint (*.pptm)

Увімкніть вкладку "Розробник" на стрічці

Перед створенням коду VBA слід увімкнути вкладку Розробник на стрічці. Для цього виберіть Файл -> Параметри, потім натисніть «Налаштувати стрічку» та поставте прапорець біля вкладки «Розробник» на правій панелі.

Створіть макрос PowerPoint

Ось простий приклад макросу PowerPoint VBA:

1234567891011 Sub SavePresentationAsPDF ()Dim pptName As StringЗатемнити PDFName як рядок'Збережіть PowerPoint у форматі PDFpptName = ActivePresentation.FullName'Замініть розширення файлу PowerPoint у назві на PDFPDFName = Ліворуч (pptName, InStr (pptName, ".")) & "Pdf"ActivePresentation.ExportAsFixedFormat PDFName, 2 'ppFixedFormatTypePDF = 2End Sub

Він зберігає активну презентацію у форматі PDF. Кожен рядок коду робить наступне:

  • Створює змінні для імені PowerPoint та назви PDF
  • Призначає активну назву презентації змінній pptName
  • Створює повне ім'я PDF
  • Збереження презентації у форматі PDF

Додаток PowerPoint

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

Щоб створити презентацію, використовуйте метод додавання програми PowerPoint.

123 Застосування.Презентації.Додати'або без явного посиланняПрезентації. Додати

Відкрийте нову презентацію

Щоб відкрити нову та порожню презентацію, скористайтеся методом Додавання колекції Application.Presetations

1 Презентації. Додати

Відкрийте існуючу презентацію

Щоб відкрити вже створену презентацію, скористайтеся методом Open колекції Application.Presetations

1 Presentation.Open ("Моя презентація.pptx")

Наведений вище код передбачає, що презентація знаходиться в тому ж каталозі, що і презентація PowerPoint, що містить код.

Відкрити та призначити змінній

Ви повинні призначити відкриту презентацію змінній, щоб ви могли керувати нею відповідно до ваших вимог.

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

Див. Розділ Активна презентація

Використовуйте посилання ActivePrentation, щоб керувати презентацією, активною в графічному інтерфейсі, під час виконання коду VBA.

12 'Роздрукуйте ім'я ActivePresentation у вікні `` Негайне' 'Debug.Print ActivePresentation.Name

Зберегти поточну презентацію

Нижченаведене твердження збереже активну презентацію, якщо вона була збережена раніше. Якщо він не був збережений, вам буде запропоновано діалогове вікно «Зберегти як».

1 ActivePresentation.Save

Закрити поточну презентацію

Нижченаведене твердження закриє активну презентацію, навіть якщо вона не була збережена після останнього редагування.

1 ActivePresentation.Close

Корисні посилання

Призначити змінну існуючу презентацію (за назвою)

12 Затемнити myPresentationByName As PresentationВстановити myPresentationByName = Application.Presetations ("Моя презентація")

Призначити змінному активний слайд

12 Зменшити струмСлайд як слайдВстановіть currentSlide = Application.ActiveWindow.View.Slide

Призначити змінній слайд за індексом

12 Затемнити mySlide як слайдВстановити mySlide = ActivePresentation.Slides (11)

Порахувати кількість слайдів

12 Затемнити слайд -лічильник як довгоslideCount = ActivePresentation.Slides.Count

Отримати індекс слайда Кількість поточного слайда

12 Затемнити поточний SlideIndex як слайдcurrentSlideIndex = Application.ActiveWindow.View.Slide.SlideIndex

Додайте чистий слайд до кінця слайд -шоу

1234567 Затемнити слайд -лічильник як довгоЗатемнити новий слайд як слайд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 Затемнити mySlide як слайдДля кожного mySlide в ActivePresentation.Slides'Зробіть щось із поточним слайдом, зазначеним у змінній' mySlide ''Debug.Print mySlide.NameНаступний слайд

Перегляньте всі форми активного слайда

Потужність PowerPoint можна реалізувати за допомогою "Фігури". Код нижче перебирає всі фігури на поточному слайді, щоб ви могли маніпулювати ними так, як вам хочеться;

123456789 Потік слайду як слайдаЗатемнити шп як ФігураВстановіть currentSlide = Application.ActiveWindow.View.SlideДля кожного shp в currentSlide.Shapes'Зробіть щось із поточною формою, про яку йдеться у змінній' shp '"Наприклад, надрукуйте назву фігури у вікні" Негайне "Налагодження.Надрукувати шп. Ім'яДалі шп

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

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

123456789 Потік слайду як слайдаЗатемнити шп як ФігураДля кожного поточного слайда в ActivePresentation.SlidesДля кожного shp в currentSlide.Shapes'Зробіть щось із поточною формою, про яку йдеться у змінній' shp 'Налагодження.Надрукувати шп. Ім'яДалі шпНаступний поточний слайд

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

Текстові поля - це найчастіше використовувана форма у презентаціях PowerPoint. Ви можете прокрутити всі текстові поля, додавши прапорець для "Тип форми". Текстові поля мають тип форми, визначений як константа VBA msoTextBox (числове значення константи - 17)

1234567891011 Потік слайду як слайдаЗатемнити шп як ФігураВстановіть currentSlide = Application.ActiveWindow.View.SlideДля кожного shp в currentSlide.Shapes'Перевірте, чи тип форми msoTextBoxЯкщо shp.Type = 17 Тоді 'msoTextBox = 17'Друк тексту в текстовому поліНалагоджувати друк shp.TextFrame2.TextRange.TextЗакінчити ЯкщоДалі шп

Перегляньте всі текстові поля у всіх слайдах

Знову ж таки, ви можете прокрутити всі текстові поля презентації, додавши цикл для перегляду всіх слайдів.

1234567891011 Зменшити струм Слайд як слайд Затемнити shp як формуДля кожного поточного слайда в ActivePresentation.SlidesДля кожного shp в currentSlide.Shapes'Перевірте, чи тип форми msoTextBoxЯкщо shp.Type = 17 Тоді 'msoTextBox = 17'Зробіть щось із TextBox, зазначеним у змінній' shp 'Налагодження.Надрукувати shp.TextFrame2.TextRange.TextЗакінчити ЯкщоДалі шпНаступний поточний слайд

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

Щоб скопіювати певні слайди до нової презентації, спочатку виберіть потрібні слайди у наявній презентації, а потім запустіть код нижче;

123456789101112131415161718 Приглушити поточну презентацію як презентаціюПотік слайду як слайдаЗатемнити нову презентацію як презентацію'Зберегти посилання на поточну презентаціюВстановити currentPresentation = Application.ActivePresentation'Зберегти посилання на поточний слайдВстановіть currentSlide = Application.ActiveWindow.View.Slide'Додати нову презентацію та зберегти як посиланняВстановіть NewPresentation = Application.Presetations.Add'Скопіювати вибрані слайдиВибір. Копіювати'Вставте його в нову презентаціюNewPresentation.Slides.Paste

Скопіюйте активний слайд до кінця активної презентації

12345 'Скопіювати поточний слайдApplication.ActiveWindow.View.Slide.Copy'Вставити в кінціActivePresentation.Slides.Paste

Корисні приклади макроперетворення PowerPoint

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

Змінити слайд під час показу слайдів

1234567891011 Sub ChangeSlideDuringSlideShow ()Затемнити SlideIndex як ціле числоDim SlideIndexPrevious As Integer'Змінити поточний слайд на вибраний слайд 4 під час показу слайдівSlideIndex = 4'Індекс поточного вікна показу слайдів - 1 у колекції SlideShowWindowsSlideIndexPrevious = SlideShowWindows (1) .View.CurrentShowPositionSlideShowWindows (1) .View.GotoSlide SlideIndexEnd Sub

Змінити шрифт на всіх слайдах у всіх текстових полях

123456789101112131415 Sub ChangeFontOnAllSlides ()Затемнити мій слайд Як слайдDim shp As Shape'Змінити розмір шрифту на всіх слайдахДля кожного mySlide в ActivePresentation.SlidesДля кожного shp у mySlide.ShapesЯкщо shp.Type = 17 Тоді 'msoTextBox = 17'Змініть розмір шрифту на 24shp.TextFrame.TextRange.Font.Size = 24Закінчити ЯкщоДалі шпДалі mySlideEnd Sub

Змінити регістр із верхнього на звичайний у всіх текстових полях

123456789101112131415 Sub ChangeCaseFromUppertoNormal ()Затемнити мій слайд Як слайдDim shp As Shape'Змінити з верхнього регістру на звичайний регістр для всіх слайдівДля кожного mySlide в ActivePresentation.SlidesДля кожного shp у mySlide.ShapesЯкщо shp.Type = 17 Тоді 'msoTextBox = 17'Змініть верхній регістр на звичайнийshp.TextFrame2.TextRange.Font.Allcaps = FalseЗакінчити ЯкщоДалі шпДалі mySlideEnd Sub

Перемикати регістр між верхнім і звичайним у всіх текстових полях

12345678910111213141516 Sub ToggleCaseBetweenUpperAndNormal ()Затемнити мій слайд Як слайдDim shp As Shape'Перемикання між верхньою та звичайною регістром для всіх слайдівДля кожного mySlide в ActivePresentation.SlidesДля кожного shp у mySlide.ShapesЯкщо shp.Type = 17 Тоді 'msoTextBox = 17'Перемикання між великим і звичайним регістромshp.TextFrame2.TextRange.Font.Allcaps = _Не shp.TextFrame2.TextRange.Font.AllcapsЗакінчити ЯкщоДалі шпДалі mySlideEnd Sub

Видалити підкреслення з Descenders

У типографіці депозитор - це частина літери, що простягається під базовою лінією шрифту. У більшості шрифтів низхідні знаки зарезервовані для малих символів, таких як g, j, q, p, y, а іноді і f.

Підкреслюючи текст, він не виглядає красиво під назвою. Ось код для видалення підкреслення з усіх таких символів g, j, p, q та y у всій презентації.

1234567891011121314151617181920212223242526 Sub RemoveUnderlineFromDescenders ()Затемнити мій слайд Як слайдDim shp As ShapeЗатемнити descenders_list як рядокСмутна фраза As StringDim x As Long'Видалити підкреслення з Descendersdescenders_list = "gjpqy"Для кожного mySlide в ActivePresentation.SlidesДля кожного shp у mySlide.ShapesЯкщо shp.Type = 17 Тоді 'msoTextBox = 17'Видалити підкреслення з літер "gjpqy"За допомогою shp.TextFrame.TextRangeфраза = .ТекстДля x = 1 до Лен (. Текст)Якщо InStr (descenders_list, Mid $ (фраза, x, 1))> 0 Тоді.Символи (x, 1). Шрифт. Підкреслення = хибнеЗакінчити ЯкщоДалі xЗакінчити зЗакінчити ЯкщоДалі шпДалі mySlideEnd Sub

Видалити анімації з усіх слайдів

Скористайтеся наведеним нижче кодом, щоб видалити всі анімації, встановлені у презентації.

123456789101112 Sub RemoveAnimationsFromAllSlides ()Затемнити мій слайд Як слайдDim i As LongДля кожного mySlide в ActivePresentation.SlidesДля i = mySlide.TimeLine.MainSequence.Count To 1 Step -1'Вилучити кожну анімаціюmySlide.TimeLine.MainSequence.Item (i) .DeleteДалі iДалі mySlideEnd Sub

Зберегти презентацію у форматі PDF

Ви можете легко зберегти активну презентацію у форматі PDF.

1234567891011 Sub SavePresentationAsPDF ()Dim pptName As StringЗатемнити PDFName як рядок'Збережіть PowerPoint у форматі PDFpptName = ActivePresentation.FullName'Замініть розширення файлу PowerPoint у назві на PDFPDFName = Ліворуч (pptName, InStr (pptName, ".")) & "Pdf"ActivePresentation.ExportAsFixedFormat PDFName, 2 'ppFixedFormatTypePDF = 2End Sub

Пошук і заміна тексту

Ви можете знайти та замінити текст у всіх текстових полях усіх слайдів. Після першого екземпляра тексту, який ви хочете знайти (визначеного findWhat), вам потрібно повторити команду Find, щоб знайти інші екземпляри, якщо такі є.

123456789101112131415161718192021222324252627282930313233 Sub FindAndReplaceText ()Затемнити мій слайд Як слайдDim shp As ShapeПриглушити знахідку Що таке рядокDim replaceWith As StringЗатемнити ShpTxt як TextRangeЗатемнити TmpTxt як TextRangefindWhat = "шакал"replaceWith = "лисиця"'Знайти, знайти і замінитиДля кожного mySlide в ActivePresentation.SlidesДля кожного shp у mySlide.ShapesЯкщо shp.Type = 17 Тоді 'msoTextBox = 17Встановіть ShpTxt = shp.TextFrame.TextRange"Знайти перший екземпляр слова" Знайти "(якщо існує)Встановіть TmpTxt = ShpTxt.Replace (findWhat, _Замінити що: = замінити на, _WholeWords: = Правда)'Знайти будь -які додаткові екземпляри слова "Знайти" (якщо існує)Робити, поки TmpTxt - це ніщоВстановити ShpTxt = ShpTxt.Characters (TmpTxt.Start + TmpTxt.Length, ShpTxt.Length)Встановіть TmpTxt = ShpTxt.Replace (findWhat, _Замінити що: = замінити на, _WholeWords: = Правда)ПетляЗакінчити ЯкщоДалі шпДалі mySlideEnd Sub

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

Ви можете експортувати поточний слайд (або будь -який інший слайд) як зображення PNG, JPG (JPEG) або BMP.

1234567891011121314 Додатковий ExportSlideAsImage ()Dim imageType As StringDim pptName As StringЗатемнити imageName як рядокЗатемнити мій слайд Як слайд'Експортувати поточний слайд у зображенняimageType = "png" 'або jpg або bmppptName = ActivePresentation.FullNameimageName = Ліворуч (pptName, InStr (pptName, ".")) & imageTypeВстановіть mySlide = Application.ActiveWindow.View.slidemySlide.Export imageName, imageTypeEnd Sub

Змінити розмір зображення, щоб охопити весь слайд

1234567891011121314151617181920212223242526 Sub ResizeImageToCoverFullSlide ()Затемнити мій слайд Як слайдDim shp As Shape'Змінити розмір зображення до повного розміру слайда'Змінити висоту та ширину першої форми на поточному слайді', щоб відповідати розмірам слайдаВстановіть mySlide = Application.ActiveWindow.View.slideВстановити shp = mySlide.Shapes (1)'''' Замініть два державні мети вище на'' наступне твердження, якщо хочете'' розгорнути обрану форму'' видасть помилку, якщо нічого не вибрано'Встановити shp = ActiveWindow.Selection.ShapeRange (1)З шп.LockAspectRatio = Неправда.Height = ActivePresentation.PageSetup.SlideHeight.Width = ActivePresentation.PageSetup.SlideWidth.Зліва = 0.Top = 0Закінчити зEnd Sub

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

Якщо у вас одночасно відкрито кілька слайд -шоу, ви можете закрити їх усі за допомогою наведеного нижче макросу.

1234567 Sub ExitAllRunningSlideShows ()Виконайте, поки SlideShowWindows.Count> 0SlideShowWindows (1) .View.ExitПетляEnd Sub

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

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

Є два способи це зробити - раннє зв’язування та пізнє зв’язування .

Відкрийте PowerPoint - Рання прив’язка

У розділі "Рання прив'язка" ви повинні чітко встановити посилання на "Бібліотеку об'єктів Microsoft PowerPoint 16" (для MS Office 2022) у VBE (редактор Visual Basic) за допомогою опції Інструменти-> Посилання.

123 'Раннє зв'язуванняЗатемніть pptApp як додатокВстановіть pptApp = Нова програма PowerPoint.Application

Відкрийте PowerPoint - пізня прив'язка

У "Пізньому прив'язці" змінна програми оголошується як об'єкт, і движок VBA підключається до правильної програми під час виконання.

123 'Пізнє зв'язуванняЗатемнити pptApp як об'єктВстановити pptApp = CreateObject ("PowerPoint.Application")

Зробити додаток видимим

Після встановлення посилання на додаток PowperPoint вам може знадобитися зробити його видимим.

1 pptApp.Visible = Правда

Маніпулювати PowerPoint

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

Наприклад

1 Presentation.Open ("Моя презентація.pptx")

доводиться використовувати так

1 pptApp .Presetations.Open ("Моя презентація.pptx")

Закрийте програму

Після того, як ви завершили те, що хотіли зробити з програмою PowerPoint, ви повинні закрити її та звільнити посилання.

12 pptApp.QuitВстановити pptApp = Нічого

Копіювати з Excel у PowerPoint

Цей код буде копіювати діапазон з Excel до PowerPoint:

Примітка: Це було максимально просто, щоб показати, як діапазон з Excel можна скопіювати до PowerPoint за допомогою VBA.

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

Поширені запитання про PowerPoint VBA

Що таке макроси в PPT?

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

Як використовувати VBA у PowerPoint?

Щоб використовувати VBA у PowerPoint, відкрийте редактор VBA (ALT + F11 або Developer> Visual Basic).

Як створити макрос у PowerPoint?

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

Автор: Вінамра Чандра

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

wave wave wave wave wave