Примери и уроци за макроси на PowerPoint VBA

Това е пълно ръководство за автоматизиране на 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“, за да стартирате макроса

Написано от: Винамра Чандра

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

wave wave wave wave wave