Toto je kompletný sprievodca automatizáciou programu PowerPoint pomocou makier VBA (Visual Basic for Applications). Nasleduje mnoho užitočných príkladov.
VBA PDF (bezplatné sťahovanie)
Stiahnite si náš bezplatný návod Microsoft PowerPoint VBA! Alebo návody VBA pre iné programy balíka Office!
Stiahnuť ▼
Výukový program PowerPoint VBA (makrá)
Uložiť ako prezentáciu povolenú v makre
Prezentácia s kódom VBA by mala byť „Uložená ako“ Prezentácia s povoleným makrom PowerPoint (*.pptm)
Na páse s nástrojmi povoľte kartu „Vývojár“
Pred vytvorením kódu VBA by ste mali na páse s nástrojmi povoliť kartu Vývojár. Ak to chcete urobiť, zvoľte Súbor -> Možnosti, potom kliknite na „Prispôsobiť pás s nástrojmi“ a začiarknite políčko vedľa karty „Vývojár“ na pravom paneli.
Vytvorte makro programu PowerPoint
Toto je jednoduchý príklad makra PowerPoint VBA:
1234567891011 | Sub SavePresentationAsPDF ()Dim pptName As StringDim PDFName As String„Uložte PowerPoint ako PDFpptName = ActivePresentation.FullName„Nahradiť príponu súboru PowerPoint v názve súboru PDFPDFName = vľavo (pptName, InStr (pptName, ".")) & "Pdf"ActivePresentation.ExportAsFixedFormat PDFName, 2 'ppFixedFormatTypePDF = 2Koniec pod |
Uloží aktívnu prezentáciu ako PDF. Každý riadok kódu robí nasledujúce:
- Vytvára premenné pre názov programu PowerPoint a názov PDF
- Priradí aktívny názov prezentácie premennej pptName
- Vytvorí úplný názov PDF
- Uloží prezentáciu ako PDF
Aplikácia PowerPoint
Keď je kód VBA spustený v rámci prezentácie programu PowerPoint, aplikácia PowerPoint je predvolená aplikácia a je možné s ňou manipulovať bez výslovného odkazu. Vytvorte novú prezentáciu
Prezentáciu vytvoríte pomocou metódy Pridať v aplikácii PowerPoint.
123 | Aplikácia. Prezentácie. Pridať“alebo bez výslovného odkazuPrezentácie. Pridať |
Otvorte novú prezentáciu
Na otvorenie novej a prázdnej prezentácie použite metódu Pridanie kolekcie Application.Presentations
1 | Prezentácie. Pridať |
Otvorte existujúcu prezentáciu
Na otvorenie prezentácie, ktorú ste už vytvorili, použite kolekciu Open method of Application.Presentations
1 | Presentations.Open ("My Presentation.pptx") |
Vyššie uvedený kód predpokladá, že prezentácia je v rovnakom adresári ako prezentácia PowerPoint obsahujúca kód.
Otvorte a priraďte premennej
Prezentáciu, ktorú otvoríte, by ste mali priradiť k premennej, aby ste s ňou mohli manipulovať podľa svojich požiadaviek.
12 | Dim ppt ako prezentáciaNastaviť ppt = Presentations.Open ("My Presentation.pptx") |
Pozrite si aktívnu prezentáciu
Použite odkaz ActivePrentation na manipuláciu s prezentáciou aktívnou v GUI, keď je spustený kód VBA.
12 | 'Vytlačte názov ActivePresentation do okamžitého oknaDebug.Print ActivePresentation.Name |
Uložiť aktuálnu prezentáciu
Nasledujúci príkaz uloží aktívnu prezentáciu, ak bola predtým uložená. Ak nebol uložený, zobrazí sa výzva s dialógovým oknom „Uložiť ako“.
1 | ActivePresentation.Save |
Zatvoriť aktuálnu prezentáciu
Nasledujúci príkaz zatvorí aktívnu prezentáciu, aj keď nebol uložený po poslednej úprave.
1 | ActivePresentation.Zavrieť |
Užitočné referencie
Priradiť existujúcu prezentáciu (podľa názvu) k premennej
12 | Dim myPresentationByName ako prezentáciuNastaviť myPresentationByName = Application.Presentations ("Moja prezentácia") |
Priradiť aktívnu snímku k premennej
12 | Stlmiť prúdSlide As SlideNastaviť currentSlide = Application.ActiveWindow.View.Slide |
Priradiť snímku podľa indexu k premennej
12 | Dim mySlide As SlideNastaviť mySlide = ActivePresentation.Slides (11) |
Spočítajte počet snímok
12 | Dim slidCount as DimslideCount = ActivePresentation.Slides.Count |
Získať index snímky aktuálnej snímky
12 | Stlmiť aktuálnySlideIndex ako snímkucurrentSlideIndex = Application.ActiveWindow.View.Slide.SlideIndex |
Pridajte prázdnu snímku na koniec prezentácie
1234567 | Dim slidCount as DimDim newSlide as SlideslideCount = ActivePresentation.Slides.CountNastaviť newSlide = ActivePresentation.Slides.Add (slideCount + 1, 12)'alebo ako ppLayoutBlank = 12Nastaviť novýSlide = ActivePresentation.Slides.Add (slideCount + 1, ppLayoutBlank) |
Pridať snímku za aktuálnu snímku
12345 | Dim newSlide As SlideStlmiť currentSlideIndex ako celé číslocurrentSlideIndex = Application.ActiveWindow.View.Slide.SlideIndexNastaviť newSlide = ActivePresentation.Slides.Add (currentSlideIndex, ppLayoutBlank) |
Odstrániť snímku
1234 | Stlmiť currentSlideIndex ako celé číslocurrentSlideIndex = Application.ActiveWindow.View.Slide.SlideIndexActivePresentation.Slides (currentSlideIndex). Odstrániť |
Prejdite na konkrétnu snímku
12 | „Tým sa dostanete na snímku číslo 4Application.ActiveWindow.View.GotoSlide (4) |
Presunúť snímku
Snímku môžete presunúť zo starej polohy do novej polohy
123456 | 'Prejdite zo snímky 3 na prvú snímkuDim oldPosition as integer, dim newPosition as integerstará pozícia = 3nová pozícia = 1ActivePresentation.Slides (oldPosition) .MoveTo toPos: = newPosition |
Smyčka cez všetky snímky
S každým snímkom môžete niečo urobiť alebo prejsť všetkými snímkami, aby ste našli niekoľko snímok, a s kódom niečo urobiť;
123456 | Stmaviť mySlide ako SlidePre každý mySlide v ActivePresentation.Slides„Urobte niečo s aktuálnou snímkou uvedenou v premennej„ mySlide “„Debug.Print mySlide.NameNasledujúca snímka |
Smyčka cez všetky tvary aktívnej snímky
Silu programu PowerPoint je možné realizovať pomocou „tvarov“. Nasledujúci kód prechádza všetkými tvarmi na aktuálnej snímke, takže s nimi môžete manipulovať, ako chcete;
123456789 | Stlmiť prúdSlide as SlideDim shp ako ShapeNastaviť currentSlide = Application.ActiveWindow.View.SlidePre každý nákup v aktuálnomSlide.Shapes„Urobte niečo so súčasným tvarom uvedeným v premennej„ shp “'Napríklad vytlačte názov tvaru v okamžitom okneDebug.Print shp.NameĎalej shp |
Smyčka cez všetky tvary na všetkých snímkach
Môžete prechádzať všetkými tvarmi v prezentácii pridaním slučky, ktorá prejde všetkými snímkami.
123456789 | Stlmiť prúdSlide as SlideDim shp ako ShapePre každý aktuálnySlide In ActivePresentation.SlidesPre každý nákup v aktuálnomSlide.Shapes„Urobte niečo so súčasným tvarom uvedeným v premennej„ shp “Debug.Print shp.NameĎalej shpNasledujúci aktuálnySlide |
Prechádzajte všetkými textovými políčkami aktívnej snímky
Textové boxy sú najčastejšie používaným tvarom v prezentáciách programu PowerPoint. Môžete prechádzať všetkými textovými poliami začiarknutím políčka „Typ tvaru“. TexBoxy majú typ tvaru definovaný ako konštanta VBA msoTextBox (číselná hodnota konštanty je 17)
1234567891011 | Stlmiť prúdSlide as SlideDim shp ako ShapeNastaviť currentSlide = Application.ActiveWindow.View.SlidePre každý nákup v aktuálnomSlide.Shapes'Skontrolujte, či je typ tvaru msoTextBoxAk shp.Type = 17, potom 'msoTextBox = 17'Vytlačte text v textovom poliDebug.Print shp.TextFrame2.TextRange.TextKoniec AkĎalej shp |
Prechádzajte všetkými textovými políčkami na všetkých snímkach
Opäť môžete prechádzať všetkými textovými políčkami v prezentácii pridaním slučky, ktorá prejde všetkými snímkami.
1234567891011 | Dim currentSlide as Slide Dim shp as ShapePre každý aktuálnySlide In ActivePresentation.SlidesPre každý nákup v aktuálnomSlide.Shapes'Skontrolujte, či je typ tvaru msoTextBoxAk shp.Type = 17, potom 'msoTextBox = 17„Vykonajte niečo s textovým rámcom uvedeným v premennej„ shp “Debug.Print shp.TextFrame2.TextRange.TextKoniec AkĎalej shpNasledujúci aktuálnySlide |
Skopírujte vybrané snímky do novej prezentácie PPT
Ak chcete skopírovať určité snímky do nových prezentácií, najskôr vyberte požadované snímky v existujúcej prezentácii a potom spustite kód uvedený nižšie;
123456789101112131415161718 | Stlmiť aktuálnuPrezentáciu ako prezentáciuStlmiť prúdSlide as SlideStmaviť novéPrezentácia ako prezentácia'Uložiť odkaz na aktuálnu prezentáciuNastaviť currentPresentation = Application.ActivePresentation'Uložiť odkaz na aktuálnu snímkuNastaviť currentSlide = Application.ActiveWindow.View.Slide'Pridajte novú prezentáciu a uložte ju ako referenciuNastaviť NewPresentation = Application.Presentations.Add'Skopírujte vybrané snímkyVýber. Kopírovať„Prilepte to do novej prezentácieNewPresentation.Slides.Paste |
Skopírujte aktívnu snímku na koniec aktívnej prezentácie
12345 | 'Skopírujte aktuálnu snímkuApplication.ActiveWindow.View.Slide.Copy„Prilepte na koniecActivePresentation.Slides.Paste |
Užitočné príklady makra v programe PowerPoint
Tu je niekoľko užitočných príkladov makier, ktoré ukazujú, ako vykonávať úlohy. Tieto budú tiež demonštrovať vyššie popísané koncepty.
Zmeniť prezentáciu počas prezentácie
1234567891011 | Sub ChangeSlideDuringSlideShow ()Dim SlideIndex ako celé čísloDim SlideIndexPredošlé ako celé číslo'Počas prezentácie zmeniť aktuálnu snímku na vybranú snímku 4SlideIndex = 4„Index aktuálneho okna prezentácie je 1 v kolekcii SlideShowWindowsSlideIndexPrevious = SlideShowWindows (1) .View.CurrentShowPositionSlideShowWindows (1). View.GotoSlide SlideIndexKoniec pod |
Zmeniť písmo na všetkých snímkach vo všetkých textových poliach
123456789101112131415 | Vedľajšia zmenaFontOnAllSlides ()Dim mySlide As slideDim shp As Shape„Zmeňte veľkosť písma na všetkých snímkachPre každý mySlide v ActivePresentation.SlidesZa každý nákup v MySlide.ShapesAk shp.Type = 17, potom 'msoTextBox = 17„Zmeňte veľkosť písma na 24shp.TextFrame.TextRange.Font.Size = 24Koniec AkĎalej shpĎalej mySlideKoniec pod |
Zmeniť veľkosť písmen z horných na normálne vo všetkých textových poliach
123456789101112131415 | Sub ChangeCaseFromUppertoNormal ()Dim mySlide As slideDim shp As Shape„Zmeniť z veľkých písmen na normálne písmená pre všetky snímkyPre každý mySlide v ActivePresentation.SlidesZa každý nákup v MySlide.ShapesAk shp.Type = 17, potom 'msoTextBox = 17„Zmeňte veľké písmená na normálneshp.TextFrame2.TextRange.Font.Allcaps = FalseKoniec AkĎalej shpĎalej mySlideKoniec pod |
Vo všetkých textových poliach prepínajte veľké a malé písmena
12345678910111213141516 | Sub ToggleCaseBetweenUpperAndNormal ()Dim mySlide As slideDim shp As Shape'Pre všetky snímky prepínajte medzi veľkými a malými písmenamiPre každý mySlide v ActivePresentation.SlidesZa každý nákup v MySlide.ShapesAk shp.Type = 17, potom 'msoTextBox = 17„Prepínajte medzi veľkými a malými písmenamishp.TextFrame2.TextRange.Font.Allcaps = _Nie je to shp.TextFrame2.TextRange.Font.AllcapsKoniec AkĎalej shpĎalej mySlideKoniec pod |
Odstráňte podčiarknutie zo zostupu
V typografii je zostupná časť písmena, ktoré siaha pod základnú čiaru písma. Vo väčšine písiem sú zostupujúce znaky vyhradené pre malé písmená, ako sú g, j, q, p, y a niekedy aj f.
Keď text podčiarknete, pod zjazdníkmi to nevyzerá pekne. Tu je kód na odstránenie podčiarknutia zo všetkých takýchto znakov g, j, p, q a y v celej prezentácii.
1234567891011121314151617181920212223242526 | Sub RemoveUnderlineFromDescenders ()Dim mySlide As slideDim shp As ShapeDim descenders_list ako reťazecTlmená fráza ako reťazecDim x Ako dlhé'Odstráňte podčiarknutia z Zostupníkovdescenders_list = "gjpqy"Pre každý mySlide v ActivePresentation.SlidesZa každý nákup v MySlide.ShapesAk shp.Type = 17, potom 'msoTextBox = 17'Odstrániť podčiarknutie z písmen „gjpqy“S shp.TextFrame.TextRangefráza = .TextFor x = 1 To Len (.Text)Ak je InStr (descenders_list, Mid $ (fráza, x, 1))> 0 Potom.Znaky (x, 1) .Font.Underline = FalseKoniec AkDalej xUkončiť sKoniec AkĎalej shpĎalej mySlideKoniec pod |
Odstráňte animácie zo všetkých snímok
Pomocou nižšie uvedeného kódu odstráňte všetky animácie nastavené v prezentácii.
123456789101112 | Sub RemoveAnimationsFromAllSlides ()Dim mySlide As slideDim i As LongPre každý mySlide v ActivePresentation.SlidesPre i = mySlide.TimeLine.MainSequence.Count To 1 Krok -1„Odstráňte každú animáciumySlide.TimeLine.MainSequence.Item (i). OdstrániťĎalej iĎalej mySlideKoniec pod |
Uložiť prezentáciu ako PDF
Aktívnu prezentáciu si môžete jednoducho uložiť vo formáte PDF.
1234567891011 | Sub SavePresentationAsPDF ()Dim pptName As StringDim PDFName As String„Uložte PowerPoint ako PDFpptName = ActivePresentation.FullName'Nahradiť príponu súboru PowerPoint v názve súboru PDFPDFName = vľavo (pptName, InStr (pptName, ".")) & "Pdf"ActivePresentation.ExportAsFixedFormat PDFName, 2 'ppFixedFormatTypePDF = 2Koniec pod |
Nájdite a nahraďte text
Text môžete nájsť a nahradiť vo všetkých textových poliach všetkých snímok. Po prvej inštancii textu, ktorý chcete nájsť (definovaný príkazom findWhat), musíte prejsť príkazom Find a nájsť ďalšie inštancie, ak nejaké existujú.
123456789101112131415161718192021222324252627282930313233 | Sub FindAndReplaceText ()Dim mySlide As slideDim shp As ShapeDim findWhat As StringDim replaceWith As StringDim ShpTxt ako rozsah textuDim TmpTxt ako rozsah textufindWhat = "šakal"replaceWith = "líška"„Nájdite a nájdite a vymeňtePre každý mySlide v ActivePresentation.SlidesZa každý nákup v MySlide.ShapesAk shp.Type = 17, potom 'msoTextBox = 17Nastaviť ShpTxt = shp.TextFrame.TextRange„Nájdite prvý výskyt slova„ Nájsť “(ak existuje)Nastaviť TmpTxt = ShpTxt.Replace (findWhat, _Nahradiť čo: = nahradiťWith, _WholeWords: = True)„Nájsť akékoľvek ďalšie inštancie slova„ nájsť “(ak existuje)Robiť, keď nie, TmpTxt nie je ničNastaviť ShpTxt = ShpTxt.Character (TmpTxt.Start + TmpTxt.Length, ShpTxt.Length)Nastaviť TmpTxt = ShpTxt.Replace (findWhat, _Nahradiť čo: = nahradiťWith, _WholeWords: = True)SlučkaKoniec AkĎalej shpĎalej mySlideKoniec pod |
Exportovať snímku ako obrázok
Aktuálnu SLide (alebo akúkoľvek inú snímku) môžete exportovať ako obrázok PNG alebo JPG (JPEG) alebo BMP.
1234567891011121314 | Sub ExportSlideAsImage ()Dim imageType As StringDim pptName As StringDim imageName As StringDim mySlide As slide'Export aktuálnej snímky do obrázkuimageType = "png" 'alebo jpg alebo bmppptName = ActivePresentation.FullNameimageName = vľavo (pptName, InStr (pptName, ".")) & imageTypeNastaviť mySlide = Application.ActiveWindow.View.slidemySlide.Export imageName, imageTypeKoniec pod |
Zmeniť veľkosť obrázku na celú snímku
1234567891011121314151617181920212223242526 | Sub ResizeImageToCoverFullSlide ()Dim mySlide As slideDim shp As Shape„Zmeňte veľkosť obrázku na celú veľkosť snímky'Zmeňte výšku a šírku prvého tvaru na aktuálnej snímke„aby zodpovedali rozmerom šmýkačkyNastaviť mySlide = Application.ActiveWindow.View.slideNastaviť shp = mySlide.Shapes (1)'''Nahradiť dva statemetny vyššie za'' nasledujúce vyhlásenie, ak chcete'' rozbalí aktuálne vybraný tvar'' spôsobí chybu, ak nie je nič vybraté'Set shp = ActiveWindow.Selection.ShapeRange (1)S SHP.LockAspectRatio = False.Height = ActivePresentation.PageSetup.SlideHeight.Width = ActivePresentation.PageSetup.SlideWidth.Vľavo = 0.Najvyššie = 0Ukončiť sKoniec pod |
Ukončiť všetky spustené prezentácie
Ak máte otvorených viac prezentácií súčasne, môžete ich všetky zavrieť pomocou makra nižšie.
1234567 | Sub ExitAllRunningSlideShows ()Vykonajte aplikáciu SlideShowWindows.Count> 0SlideShowWindows (1). View.ExitSlučkaKoniec pod |
Automatizácia PowerPointu z Excelu
K aplikácii PowerPoint sa môžete pripojiť aj prostredníctvom iných aplikácií (napríklad Excel a Word). Ako prvý krok musíte použiť inštanciu programu PowerPoint.
Existujú dva spôsoby, ako to urobiť - skorá väzba a neskorá väzba .
Otvorte PowerPoint - skorá väzba
V „Early Binding“ musíte výslovne nastaviť odkaz na „Objektovú knižnicu Microsoft PowerPoint 16“ (pre MS Office 2022) vo VBE (editor Visual Basic) pomocou možnosti Nástroje-> Referencie.
123 | „Včasná väzbaDim pptApp ako aplikáciaNastaviť pptApp = nový PowerPoint.Application |
Otvorte PowerPoint - Neskorá väzba
V „Neskorej väzbe“ je aplikačná premenná deklarovaná ako objekt a motor VBA sa počas behu pripája k správnej aplikácii.
123 | „Neskorá väzbaDim pptApp ako objektNastaviť pptApp = CreateObject ("PowerPoint.Application") |
Zviditeľnite aplikáciu
Po nastavení odkazu na aplikáciu PowperPoint bude možno potrebné ho zviditeľniť.
1 | pptApp.Visible = Pravda |
Manipulujte PowerPoint
Môžete použiť všetky metódy na manipuláciu s prezentáciami z PowerPointu, popísané vyššie z Excelu, jednoduchým pridaním odkazu na PowerPoint, ktorý ste vytvorili vyššie.
Napríklad
1 | Presentations.Open ("My Presentation.pptx") |
musí sa používať takto
1 | pptApp .Presentations.Open („My Presentation.pptx“) |
Zatvorte aplikáciu
Keď dokončíte to, čo ste chceli s aplikáciou PowerPoint urobiť, musíte ju zavrieť a referenciu by ste mali uvoľniť.
12 | pptApp.UkončiťNastaviť pptApp = nič |
Skopírujte z Excelu do PowerPointu
Tento kód skopíruje rozsah z Excelu do PowerPointu:
Poznámka: Ukázalo sa, ako je možné skopírovať rozsah z programu Excel do programu PowerPoint pomocou jazyka VBA, ako je to len možné.
12345678910111213141516171819 | Sub copyRangeToPresentation ()„Otvorte novú inštanciu programu PowerPointNastaviť pptApp = CreateObject ("PowerPoint.Application")S pptApp„Vytvorte novú prezentáciuNastaviť ppt = .Presentations.Add„Pridajte prázdnu snímkuNastaviť newSlide = ppt.Slides.Add (1, 12) 'ppLayoutBlank = 12„Rozsah kopírovania z aktívneho hárka v programe ExcelActiveSheet.Range ("A1: E10"). Kopírovať„Prilepte do programu Powerpoint ako obrázoknewSlide.Shapes.PasteSpecial DataType: = 2 '2 = ppPasteEnhancedMetafile'Prepnúť na PowerPoint.AktivovaťUkončiť sKoniec pod |
PowerPoint VBA - časté otázky
Čo sú to makrá v PPT?
Makro je všeobecný termín, ktorý označuje súbor programovacích pokynov, ktoré automatizujú úlohy. Makrá PowerPoint (PPT) automatizujú úlohy v programe PowerPoint pomocou programovacieho jazyka VBA.
Ako môžem používať VBA v programe PowerPoint?
Ak chcete používať VBA v programe PowerPoint, otvorte editor VBA (ALT + F11 alebo Vývojár> Visual Basic).
Ako vytvorím makro v programe PowerPoint?
1. Otvorte editor VBA (ALT + F11 alebo Developer> Visual Basic)
2. Prejdite na položku Vložiť> Modul a vytvorte modul kódu
3. Napíšte „Sub HelloWorld“ a stlačte kláves Enter
4. Medzi riadky „Sub HelloWorld“ a „End Sub“ zadajte „MsgBox“ Hello World! “
5. Vytvorili ste makro!
6. Teraz stlačením „F5“ spustíte makro
Scenár: Vinamra Chandra