Това е пълно ръководство за автоматизиране на PowerPoint с помощта на макроси VBA (Visual Basic for Applications). По -долу ще намерите много полезни примери.
VBA PDF (безплатно изтегляне)
Изтеглете нашия безплатен урок за Microsoft PowerPoint VBA! Или VBA уроци за други офис програми!
Изтегли
Урок за PowerPoint VBA (макроси)
Запазване като презентация с активирани макроси
Презентацията с VBA код трябва да бъде „Запазена като“ PowerPoint макросъдържаща презентация (*.pptm)
Активирайте раздела „Разработчик“ в лентата
Трябва да активирате раздела Developer на лентата, преди да създадете VBA код. За да направите това, изберете Файл -> Опции, след което кликнете върху „Персонализиране на лентата“ и поставете отметка в квадратчето до раздела „Разработчик“ в десния панел.
Създайте макрос PowerPoint
Това е прост пример за PowerPoint VBA макрос:
1234567891011 | Sub SavePresentationAsPDF ()Dim pptName As StringDim PDFName As String„Запазете 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 е приложението по подразбиране и може да се манипулира без изрична препратка. Създайте нова презентация
За да създадете презентация, използвайте метода Add на приложението PowerPoint.
123 | Приложение.Презентации.Добавяне“или без изрична препраткаПрезентации. Добавяне |
Отворете нова презентация
За да отворите нова и празна презентация, използвайте метода Add на Application.Presetations collection
1 | Презентации. Добавяне |
Отворете съществуваща презентация
За да отворите вече създадена презентация, използвайте метода Open на колекцията Application.Presetations
1 | Presetations.Open ("My Presentation.pptx") |
Кодът по -горе приема, че презентацията е в същата директория като презентацията на PowerPoint, съдържаща кода.
Отваряне и присвояване на променлива
Трябва да присвоите отворената презентация на променлива, за да можете да я манипулирате според вашите изисквания.
12 | Dim ppt като презентацияЗадайте ppt = Presentation.Open ("My Presentation.pptx") |
Вижте Активно представяне
Използвайте референтната ActivePrentation, за да манипулирате презентацията, активна в GUI, когато се изпълнява 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 | Dim slideCount As LongslideCount = ActivePresentation.Slides.Count |
Вземете индекс на слайд номер на текущия слайд
12 | Затъмнете текущия SlideIndex като слайд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 към първия слайдDim oldPosition като цяло число, dim newPosition като цяло числоoldPosition = 3newPosition = 1ActivePresentation.Slides (oldPosition) .MoveTo toPos: = newPosition |
Преминете през всички слайдове
Можете да направите нещо с всеки слайд или да преминете през всички слайдове, за да намерите няколко слайда и да направите нещо с използването на кода;
123456 | Затъмнете mySlide като слайдЗа всеки mySlide в ActivePresentation.Slides„Направете нещо с текущия слайд, посочен в променлива„ mySlide “'Debug.Print mySlide.NameСледващ слайд |
Прегледайте всички форми на активния слайд
Силата на PowerPoint може да бъде реализирана с помощта на „Shapes.“ Кодът по -долу се променя през всички форми на текущия слайд, така че да можете да ги манипулирате, както искате;
123456789 | Затъмняване на тока Плъзнете като слайдDim shp като ShapeЗадайте currentSlide = Application.ActiveWindow.View.SlideЗа всеки shp В currentSlide.Shapes„Направете нещо с текущата форма, посочена в променлива„ shp “'Например отпечатайте името на фигурата в непосредствения прозорецDebug.Print shp.NameСледващ шп |
Прегледайте всички форми във всички слайдове
Можете да преминете през всички форми в презентацията, като добавите цикъл, за да преминете през всички слайдове.
123456789 | Затъмняване на тока Плъзнете като слайдDim shp като ShapeЗа всеки currentSlide в ActivePresentation.SlidesЗа всеки shp В currentSlide.Shapes„Направете нещо с текущата форма, посочена в променлива„ shp “Debug.Print shp.NameСледващ шпСледващ текущ слайд |
Прегледайте всички текстови полета на активния слайд
TextBoxes са най -често използваната форма в презентации на PowerPoint. Можете да преминете през всички текстови полета, като добавите отметка за „Тип на формата.“ TexBoxes имат типа форма, определен като VBA константата msoTextBox (числовата стойност на константата е 17)
1234567891011 | Затъмняване на тока Плъзнете като слайдDim shp като ShapeЗадайте currentSlide = Application.ActiveWindow.View.SlideЗа всеки shp В currentSlide.Shapes'Проверете дали типът на формата е msoTextBoxАко shp.Type = 17 Тогава 'msoTextBox = 17„Отпечатайте текста в TextBoxDebug.Print shp.TextFrame2.TextRange.TextКрай АкоСледващ шп |
Прегледайте всички текстови полета във всички слайдове
Отново можете да преминете през всички текстови полета в презентацията, като добавите цикъл, за да преминете през всички слайдове.
1234567891011 | Затъмняване на тока Плъзнете като слайд Затъмнете шп като формаЗа всеки currentSlide в ActivePresentation.SlidesЗа всеки shp В currentSlide.Shapes'Проверете дали типът на формата е msoTextBoxАко shp.Type = 17 Тогава 'msoTextBox = 17„Направете нещо с TextBox, посочен в променлива„ shp “Debug.Print shp.TextFrame2.TextRange.TextКрай АкоСледващ шпСледващ текущ слайд |
Копирайте избраните слайдове в нова PPT презентация
За да копирате определени слайдове в нова презентация, първо изберете желаните слайдове в съществуващата презентация и след това изпълнете кода по -долу;
123456789101112131415161718 | Dim currentPresentation като PresentationЗатъмняване на тока Плъзнете като слайдЗатъмнете newPresentation като Presentation„Запазване на препратка към текущата презентацияЗадайте 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 ()Затъмнете mySlide Като слайд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 ()Затъмнете mySlide Като слайд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 ()Затъмнете mySlide Като слайд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 ()Затъмнете mySlide Като слайдDim shp As ShapeЗатъмнете descenders_list As StringПриглушена фраза As StringDim x As Long„Премахнете подчертаванията от Descendersdescenders_list = "gjpqy"За всеки mySlide в ActivePresentation.SlidesЗа всеки shp в mySlide.ShapesАко shp.Type = 17 Тогава 'msoTextBox = 17„Премахване на подчертаното от буквите„ gjpqy “С shp.TextFrame.TextRangeфраза = .ТекстFor x = 1 To Len (.Text)Ако InStr (descenders_list, Mid $ (фраза, x, 1))> 0 Тогава.Символи (x, 1). Font.Underline = FalseКрай АкоСледващ xКрай сКрай АкоСледващ шпСледващ mySlideEnd Sub |
Премахнете анимациите от всички слайдове
Използвайте кода по -долу, за да премахнете всички анимации, зададени в презентация.
123456789101112 | Sub RemoveAnimationsFromAllSlides ()Затъмнете mySlide Като слайд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
Можете лесно да запишете Active Presentation в PDF формат.
1234567891011 | Sub SavePresentationAsPDF ()Dim pptName As StringDim PDFName As String„Запазете PowerPoint като PDFpptName = ActivePresentation.FullName„Заменете разширението на файла PowerPoint в името на PDFPDFName = Вляво (pptName, InStr (pptName, ".")) & "Pdf"ActivePresentation.ExportAsFixedFormat PDFName, 2 'ppFixedFormatTypePDF = 2End Sub |
Намерете и заменете текст
Можете да намерите и замените текст във Всички текстови полета на всички слайдове. След първия екземпляр на текста, който искате да намерите (дефиниран от findWhat), трябва да преминете през командата Find, за да намерите други екземпляри, ако има такива.
123456789101112131415161718192021222324252627282930313233 | Sub FindAndReplaceText ()Затъмнете mySlide Като слайдDim shp As ShapeDim find What What StringDim 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 |
Експортирайте слайда като изображение
Можете да експортирате Current SLide (или всеки друг слайд) като PNG или JPG (JPEG) или BMP изображение.
1234567891011121314 | Sub ExportSlideAsImage ()Dim imageType As StringDim pptName As StringDim imageName As StringЗатъмнете mySlide Като слайд'Експортирайте текущия слайд в изображениеimageType = "png" 'или jpg или bmppptName = ActivePresentation.FullNameimageName = Ляво (pptName, InStr (pptName, ".")) & imageTypeЗадайте mySlide = Application.ActiveWindow.View.slidemySlide.Export imageName, imageTypeEnd Sub |
Преоразмерете изображението, за да покриете целия слайд
1234567891011121314151617181920212223242526 | Sub ResizeImageToCoverFullSlide ()Затъмнете mySlide Като слайдDim shp As Shape'Преоразмерете изображението до пълен размер на слайда„Променете височината и ширината на първата форма на текущия слайд', за да отговарят на размерите на пързалкатаЗадайте mySlide = Application.ActiveWindow.View.slideЗадайте shp = mySlide.Shapes (1)'''' Сменете две състояния по -горе с'' следното изявление, ако искате'' разгънете текущо избраната форма'' ще даде грешка, ако не е избрано нищо'Set 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 Object Library“ (за MS Office 2022) във VBE (редактор на Visual Basic), като използвате опцията Tools-> References.
123 | „Ранно свързванеЗатъмнете pptApp като приложениеЗадайте pptApp = Ново PowerPoint.Application |
Отворете PowerPoint - Късно свързване
В „Късно свързване“ променливата на приложението се декларира като обект и VBA двигателят се свързва с правилното приложение по време на изпълнение.
123 | „Късно свързванеЗатъмнете pptApp като обектЗадайте pptApp = CreateObject ("PowerPoint.Application") |
Направете приложението видимо
След като зададете препратката към приложението PowperPoint, може да се наложи да го направите видим.
1 | pptApp.Visible = Вярно |
Манипулирайте PowerPoint
Можете да използвате всички методи за манипулиране на презентации от PowerPoint, описани по -горе от Excel, като просто добавите препратката към PowerPoint, създадена от вас по -горе.
Например
1 | Presetations.Open ("My Presentation.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 Editor (ALT + F11 или Developer> Visual Basic).
Как да създам макрос в PowerPoint?
1. Отворете VBA Editor (ALT + F11 или Developer> Visual Basic)
2. Отидете на Insert> Module, за да създадете Code Module
3. Въведете „Sub HelloWorld“ и натиснете Enter
4. Между редовете „Sub HelloWorld“ и „End Sub“ въведете „MsgBox„ Hello World! “
5. Създали сте макрос!
6. Сега натиснете „F5“, за да стартирате макроса
Написано от: Винамра Чандра