Це повний посібник з автоматизації 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», щоб запустити макрос
Автор: Вінамра Чандра