Toto je kompletní průvodce automatizací aplikace PowerPoint pomocí maker VBA (Visual Basic for Applications). Níže najdete mnoho užitečných příkladů.
VBA PDF (bezplatné stahování)
Stáhněte si zdarma výukový program Microsoft PowerPoint VBA! Nebo výukové programy VBA pro jiné programy Office!
Stažení
Výukový program PowerPoint VBA (makra)
Uložit jako prezentaci povolenou v makru
Prezentace s kódem VBA by měla být „Uložena jako“ Prezentace s podporou makra PowerPoint (*.pptm)
Na pásu karet aktivujte kartu „Vývojář“
Před vytvořením kódu VBA byste měli povolit kartu Vývojář na pásu karet. Chcete -li to provést, vyberte Soubor -> Možnosti, poté klikněte na „Přizpůsobit pás karet“ a zaškrtněte políčko vedle karty „Vývojář“ v pravém podokně.
Vytvořte makro PowerPoint
Toto je jednoduchý příklad makra PowerPoint VBA:
1234567891011 | Dílčí SavePresentationAsPDF ()Dim pptName As StringDim PDFName As String'Uložit PowerPoint jako PDFpptName = ActivePresentation.FullName'Nahradit příponu souboru PowerPoint v názvu na PDFPDFName = vlevo (pptName, InStr (pptName, ".")) & "Pdf"ActivePresentation.ExportAsFixedFormat PDFName, 2 'ppFixedFormatTypePDF = 2End Sub |
Uloží aktivní prezentaci jako PDF. Každý řádek kódu provádí následující:
- Vytváří proměnné pro název PowerPoint a název PDF
- Přiřadí aktivní název prezentace proměnné pptName
- Vytvoří úplný název PDF
- Uloží prezentaci jako PDF
Aplikace PowerPoint
Když je kód VBA spuštěn v rámci prezentace PowerPoint, je aplikace PowerPoint výchozí aplikací a lze s ní manipulovat bez výslovného odkazu. Vytvořte novou prezentaci
Chcete -li vytvořit prezentaci, použijte metodu Add aplikace PowerPoint.
123 | Aplikace.Prezentace.Přidat“nebo bez výslovného odkazuPrezentace. Přidat |
Otevřete novou prezentaci
Chcete -li otevřít novou a prázdnou prezentaci, použijte metodu Add kolekce Application.Presentations
1 | Prezentace. Přidat |
Otevřete existující prezentaci
Chcete -li otevřít prezentaci, kterou jste již vytvořili, použijte metodu Open kolekce Application.Presentations
1 | Presentations.Open („My Presentation.pptx“) |
Výše uvedený kód předpokládá, že je prezentace ve stejném adresáři jako prezentace PowerPoint obsahující kód.
Otevřete a přiřaďte proměnné
Prezentaci, kterou otevřete, byste měli přiřadit k proměnné, abyste s ní mohli manipulovat podle svých požadavků.
12 | Dim ppt jako prezentaceNastavit ppt = Presentations.Open ("My Presentation.pptx") |
Viz Aktivní prezentace
Při provádění kódu VBA použijte odkaz ActivePrentation k manipulaci s prezentací aktivní v GUI.
12 | 'Vytiskněte název ActivePresentation do okamžitého okna.'Debug.Print ActivePresentation.Name |
Uložit aktuální prezentaci
Níže uvedený příkaz uloží aktivní prezentaci, pokud byla uložena dříve. Pokud nebyl uložen, budete vyzváni k zobrazení dialogového okna „Uložit jako“.
1 | ActivePresentation.Save |
Zavřít aktuální prezentaci
Níže uvedené prohlášení zavře aktivní prezentaci, i když nebylo uloženo po poslední úpravě.
1 | ActivePresentation.Close |
Užitečné reference
Přiřadit existující prezentaci (podle názvu) proměnné
12 | Dim myPresentationByName jako prezentaciNastavit myPresentationByName = Application.Presentations ("Moje prezentace") |
Přiřadit aktivní snímek proměnné
12 | Ztlumit proudSlide As SlideNastavit currentSlide = Application.ActiveWindow.View.Slide |
Přiřadit snímek podle indexu proměnné
12 | Dim mySlide As SlideNastavit mySlide = ActivePresentation.Slides (11) |
Spočítat počet snímků
12 | Dim slidCount jako dlouhýslideCount = ActivePresentation.Slides.Count |
Získat index snímků Počet aktuálních snímků
12 | Dim currentSlideIndex As SlidecurrentSlideIndex = Application.ActiveWindow.View.Slide.SlideIndex |
Přidejte prázdný snímek na konec prezentace
1234567 | Dim slidCount jako dlouhýDim newSlide as SlideslideCount = ActivePresentation.Slides.CountNastavit newSlide = ActivePresentation.Slides.Add (slideCount + 1, 12)'nebo jako ppLayoutBlank = 12Nastavit newSlide = ActivePresentation.Slides.Add (slideCount + 1, ppLayoutBlank) |
Přidat snímek za aktuální snímek
12345 | Dim newSlide As SlideDim currentSlideIndex ztlumit jako celé číslocurrentSlideIndex = Application.ActiveWindow.View.Slide.SlideIndexNastavit newSlide = ActivePresentation.Slides.Add (currentSlideIndex, ppLayoutBlank) |
Odstranit snímek
1234 | Dim currentSlideIndex ztlumit jako celé číslocurrentSlideIndex = Application.ActiveWindow.View.Slide.SlideIndexActivePresentation.Slides (currentSlideIndex) .Delete |
Přejít na konkrétní snímek
12 | „Tím se dostanete na snímek číslo 4Application.ActiveWindow.View.GotoSlide (4) |
Přesunout snímek
Snímek můžete přesunout ze staré polohy do nové polohy
123456 | 'Přechod ze snímku 3 na první snímekDim oldPosition jako celé číslo, dim newPosition jako celé číslostará pozice = 3nová pozice = 1ActivePresentation.Slides (oldPosition) .MoveTo toPos: = newPosition |
Smyčka přes všechny snímky
S každým snímkem můžete něco udělat nebo procházet všechny snímky, abyste našli několik snímků a něco s tím udělali pomocí kódu;
123456 | Dim mySlide as SlidePro každý mySlide v ActivePresentation.Slides`` Udělejte něco s aktuálním snímkem uvedeným v proměnné 'mySlide'„Debug.Print mySlide.NameDalší snímek |
Projděte všechny tvary aktivního snímku
Sílu PowerPointu lze realizovat pomocí ‘Tvarů.‘ Níže uvedený kód prochází všemi tvary na aktuálním snímku, takže s nimi můžete manipulovat, jak chcete;
123456789 | Ztlumit proud Posuňte jako snímekDim shp jako ShapeNastavit currentSlide = Application.ActiveWindow.View.SlidePro každý SHP In currentSlide.Shapes`` Udělejte něco se současným tvarem uvedeným v proměnné 'shp''Například vytiskněte název obrazce v okamžitém okně.'Debug.Print shp.NameDalší shp |
Projděte všechny tvary na všech snímcích
Můžete procházet všemi tvary v prezentaci přidáním smyčky procházet všechny snímky.
123456789 | Ztlumit proud Posuňte jako snímekDim shp jako ShapePro každý aktuální snímek v ActivePresentation.SlidesPro každý SHP In currentSlide.Shapes`` Udělejte něco se současným tvarem uvedeným v proměnné 'shp'Debug.Print shp.NameDalší shpDalší aktuální snímek |
Projděte všechny textové boxy aktivního snímku
Textové boxy jsou nejčastěji používaným tvarem v prezentacích aplikace PowerPoint. Můžete procházet všechna textová pole přidáním zaškrtnutí „Typ tvaru“. TexBoxy mají typ tvaru definovaný jako VBA konstanta msoTextBox (číselná hodnota konstanty je 17)
1234567891011 | Ztlumit proud Posuňte jako snímekDim shp jako ShapeNastavit currentSlide = Application.ActiveWindow.View.SlidePro každý SHP In currentSlide.Shapes'Zkontrolujte, zda je typ tvaru msoTextBox.'Pokud shp.Type = 17 Then 'msoTextBox = 17'Vytiskněte text v textovém poliDebug.Print shp.TextFrame2.TextRange.TextKonec IfDalší shp |
Projděte všechny textová pole na všech snímcích
Opět můžete procházet všechna textová pole v prezentaci přidáním smyčky procházet všechny snímky.
1234567891011 | Dim currentSlide as Slide Dim shp as ShapePro každý aktuální snímek v ActivePresentation.SlidesPro každý SHP In currentSlide.Shapes'Zkontrolujte, zda je typ tvaru msoTextBoxPokud shp.Type = 17 Then 'msoTextBox = 17„Udělejte něco s TextBoxem uvedeným v proměnné„ shp “Debug.Print shp.TextFrame2.TextRange.TextKonec IfDalší shpDalší aktuální snímek |
Zkopírujte vybrané snímky do nové prezentace PPT
Chcete -li zkopírovat určité snímky do nových prezentací, nejprve vyberte požadované snímky ve stávající prezentaci a poté spusťte níže uvedený kód;
123456789101112131415161718 | Ztlumit aktuální prezentaci jako prezentaciZtlumit proud Posuňte jako snímekZtlumit novéPrezentace jako prezentace'Uložit odkaz na aktuální prezentaciNastavit currentPresentation = Application.ActivePresentation'Uložit odkaz na aktuální snímekNastavit currentSlide = Application.ActiveWindow.View.Slide„Přidejte novou prezentaci a uložte ji jako referenciNastavit NewPresentation = Application.Presentations.Add'Zkopírujte vybrané snímkyVýběr. Kopírovat„Vložte to do nové prezentaceNewPresentation.Slides.Paste |
Kopírovat aktivní snímek na konec aktivní prezentace
12345 | 'Zkopírujte aktuální snímekApplication.ActiveWindow.View.Slide.Copy„Vložit na konecActivePresentation.Slides.Paste |
Užitečné příklady maker aplikace PowerPoint
Zde je několik užitečných příkladů maker, které ukazují, jak provádět úkoly. Ty také ukážou výše popsané koncepty.
Změnit prezentaci během prezentace
1234567891011 | Sub ChangeSlideDuringSlideShow ()Dim SlideIndex jako celé čísloDim SlideIndexPředchozí jako celé číslo'Během prezentace změňte aktuální snímek na vybraný snímek 4SlideIndex = 4'Index aktuálního okna prezentace je 1 v kolekci SlideShowWindowsSlideIndexPrevious = SlideShowWindows (1) .View.CurrentShowPositionSlideShowWindows (1) .View.GotoSlide SlideIndexEnd Sub |
Změnit písmo na všech snímcích ve všech textových polích
123456789101112131415 | Dílčí ChangeFontOnAllSlides ()Dim mySlide As snímekDim shp As Shape'Změnit velikost písma na všech snímcíchPro každý mySlide v ActivePresentation.SlidesPro každý SHP v mySlide.ShapesPokud shp.Type = 17 Then 'msoTextBox = 17„Změňte velikost písma na 24shp.TextFrame.TextRange.Font.Size = 24Konec IfDalší shpDalší mySlideEnd Sub |
Změnit velikost písmen z horní na normální ve všech textových polích
123456789101112131415 | Sub ChangeCaseFromUppertoNormal ()Dim mySlide As snímekDim shp As Shape'Změnit z velkých písmen na normální velikost u všech snímkůPro každý mySlide v ActivePresentation.SlidesPro každý SHP v mySlide.ShapesPokud shp.Type = 17 Then 'msoTextBox = 17„Změňte velká písmena na normální písmenashp.TextFrame2.TextRange.Font.Allcaps = FalseKonec IfDalší shpDalší mySlideEnd Sub |
Přepnout velká a normální písmena ve všech textových polích
12345678910111213141516 | Sub ToggleCaseBetweenUpperAndNormal ()Dim mySlide As snímekDim shp As Shape'Přepínání mezi velkými a normálními písmeny u všech snímkůPro každý mySlide v ActivePresentation.SlidesZa každý shp v mySlide.ShapesPokud shp.Type = 17 Then 'msoTextBox = 17„Přepínejte mezi velkými a malými písmenyshp.TextFrame2.TextRange.Font.Allcaps = _Ne shp.TextFrame2.TextRange.Font.AllcapsKonec IfDalší shpDalší mySlideEnd Sub |
Odebrat podtržení z Descenders
V typografii je sestupník část písmene, která sahá pod základní čáru písma. Ve většině písem jsou potomky vyhrazeny pro malá písmena jako g, j, q, p, y a někdy i f.
Když podtrhnete text, pod podřadníky to nevypadá hezky. Zde je kód pro odstranění podtržení ze všech takových znaků g, j, p, q a y v celé prezentaci.
1234567891011121314151617181920212223242526 | Sub OdebratUnderlineFromDescenders ()Dim mySlide As snímekDim shp As ShapeDim descenders_list jako řetězecTlumená fráze jako řetězecDim x As Long"Odstraňte podtržení z Descenders."descenders_list = "gjpqy"Pro každý mySlide v ActivePresentation.SlidesPro každý SHP v mySlide.ShapesPokud shp.Type = 17 Then 'msoTextBox = 17'Odstranit podtržení z písmen „gjpqy“S shp.TextFrame.TextRangefráze = .TextPro x = 1 To Len (.Text)Pokud InStr (descenders_list, Mid $ (fráze, x, 1))> 0 Pak.Znaky (x, 1) .Font.Underline = FalseKonec IfDalší xKonec sKonec IfDalší shpDalší mySlideEnd Sub |
Odebrat animace ze všech snímků
Pomocí níže uvedeného kódu odeberte všechny animace nastavené v prezentaci.
123456789101112 | Sub RemoveAnimationsFromAllSlides ()Dim mySlide As snímekDim i As LongPro každý mySlide v ActivePresentation.SlidesPro i = mySlide.TimeLine.MainSequence.Count To 1 Krok -1'Odebrat každou animacimySlide.TimeLine.MainSequence.Item (i) .DeletePříště jáDalší mySlideEnd Sub |
Uložit prezentaci jako PDF
Aktivní prezentaci můžete snadno uložit ve formátu PDF.
1234567891011 | Dílčí SavePresentationAsPDF ()Dim pptName As StringDim PDFName As String'Uložit PowerPoint jako PDFpptName = ActivePresentation.FullName'Nahradit příponu souboru PowerPoint v názvu na PDFPDFName = vlevo (pptName, InStr (pptName, ".")) & "Pdf"ActivePresentation.ExportAsFixedFormat PDFName, 2 'ppFixedFormatTypePDF = 2End Sub |
Najít a nahradit text
Text můžete najít a nahradit ve všech textových polích všech snímků. Po první instanci textu, který chcete najít (definovaném findWhat), musíte projít příkazem Find a najít další instance, pokud existují.
123456789101112131415161718192021222324252627282930313233 | Sub FindAndReplaceText ()Dim mySlide As snímekDim shp As ShapeDim findChat As StringDim replaceWith As StringDim ShpTxt jako TextRangeDim TmpTxt jako TextRangefindWhat = "šakal"replaceWith = "liška"„Najít a najít a vyměnitPro každý mySlide v ActivePresentation.SlidesPro každý SHP v mySlide.ShapesPokud shp.Type = 17 Then 'msoTextBox = 17Nastavit ShpTxt = shp.TextFrame.TextRange„Najít první instanci slova„ Najít “(pokud existuje)Nastavit TmpTxt = ShpTxt.Replace (findWhat, _Nahradit co: = nahraditWith, _Celá slova: = pravda)'Najít jakékoli další instance slova „Najít“ (pokud existuje)Dělat, když není TmpTxt není nicNastavit ShpTxt = ShpTxt.Character (TmpTxt.Start + TmpTxt.Length, ShpTxt.Length)Nastavit TmpTxt = ShpTxt.Replace (findWhat, _Nahradit co: = nahraditWith, _Celá slova: = pravda)SmyčkaKonec IfDalší shpDalší mySlideEnd Sub |
Exportovat snímek jako obrázek
Aktuální SLide (nebo jakýkoli jiný snímek) můžete exportovat jako obrázek PNG nebo JPG (JPEG) nebo BMP.
1234567891011121314 | Dílčí exportSlideAsImage ()Dim imageType As StringDim pptName As StringDim imageName As StringDim mySlide As snímek'Export aktuálního snímku do obrázkuimageType = "png" 'nebo jpg nebo bmppptName = ActivePresentation.FullNameimageName = Vlevo (pptName, InStr (pptName, ".")) & imageTypeNastavit mySlide = Application.ActiveWindow.View.slidemySlide.Export imageName, imageTypeEnd Sub |
Změnit velikost obrázku na celý snímek
1234567891011121314151617181920212223242526 | Sub ResizeImageToCoverFullSlide ()Dim mySlide As snímekDim shp As Shape„Změňte velikost obrázku na celou velikost snímku'Změňte výšku a šířku prvního tvaru na aktuálním snímku'aby odpovídaly rozměrům skluzavkyNastavit mySlide = Application.ActiveWindow.View.slideNastavit shp = mySlide.Shapes (1)'''Nahraďte dva statemetny výše za'' následující prohlášení, pokud chcete'' rozbalte aktuálně vybraný tvar'' způsobí chybu, pokud není vybráno nic'Set shp = ActiveWindow.Selection.ShapeRange (1)S shp.LockAspectRatio = False.Height = ActivePresentation.PageSetup.SlideHeight.Width = ActivePresentation.PageSetup.SlideWidth.Vlevo = 0.Nahoře = 0Konec sEnd Sub |
Ukončete všechny spuštěné prezentace
Pokud máte otevřeno více prezentací současně, můžete je všechny zavřít pomocí níže uvedeného makra.
1234567 | Sub ExitAllRunningSlideShows ()Do While SlideShowWindows.Count> 0SlideShowWindows (1) .View.ExitSmyčkaEnd Sub |
Automatizace PowerPointu z Excelu
Můžete se také připojit k PowerPointu prostřednictvím jiných aplikací (například Excel a Word). Jako první krok musíte odkázat na instanci aplikace PowerPoint.
Existují dva způsoby, jak to udělat - časná vazba a pozdní vazba .
Otevřete PowerPoint - Early Binding
V „Early Binding“ musíte výslovně nastavit odkaz na „Object Library Microsoft PowerPoint 16“ (pro MS Office 2022) ve VBE (Editor jazyka) pomocí možnosti Nástroje-> Reference.
123 | „Včasná vazbaDim pptApp jako aplikaceSet pptApp = New PowerPoint.Application |
Otevřete PowerPoint - Pozdní vazba
V „Pozdní vazbě“ je proměnná aplikace deklarována jako objekt a motor VBA se za běhu připojí ke správné aplikaci.
123 | „Pozdní vazbaDim pptApp jako objektNastavit pptApp = CreateObject ("PowerPoint.Application") |
Zajistěte viditelnost aplikace
Po nastavení odkazu na aplikaci PowperPoint bude možná nutné jej zviditelnit.
1 | pptApp.Visible = True |
Maniplulate PowerPoint
Můžete použít všechny metody k manipulaci s prezentacemi z aplikace PowerPoint, popsané výše z Excelu, pouhým přidáním odkazu na PowerPoint, který jste vytvořili výše.
Například
1 | Presentations.Open („My Presentation.pptx“) |
musí být používán takto
1 | pptApp .Presentations.Open („My Presentation.pptx“) |
Zavřete aplikaci
Jakmile dokončíte, co jste chtěli s aplikací PowerPoint udělat, musíte ji zavřít a měli byste uvolnit odkaz.
12 | pptApp.QuitNastavit pptApp = Nic |
Zkopírujte z Excelu do PowerPointu
Tento kód zkopíruje rozsah z Excelu do PowerPointu:
Poznámka: Bylo co nejjednodušší ukázat, jak lze rozsah z Excelu zkopírovat do PowerPointu pomocí VBA.
12345678910111213141516171819 | Dílčí copyRangeToPresentation ()'Otevřete novou instanci aplikace PowerPointNastavit pptApp = CreateObject ("PowerPoint.Application")S pptApp'Vytvořte novou prezentaciNastavit ppt = .Presentations.Add„Přidejte prázdný snímekNastavit newSlide = ppt.Slides.Add (1, 12) 'ppLayoutBlank = 12'Zkopírujte rozsah z aktivního listu v aplikaci ExcelActiveSheet.Range ("A1: E10"). Kopírovat„Vložit do Powerpointu jako obrázeknewSlide.Shapes.PasteSpecial DataType: = 2 '2 = ppPasteEnhancedMetafile'Přepnout na PowerPoint.AktivovatKonec sEnd Sub |
PowerPoint VBA Časté dotazy
Co jsou makra v PPT?
Makro je obecný termín, který odkazuje na sadu programovacích pokynů, které automatizují úkoly. Makra PowerPoint (PPT) automatizují úkoly v PowerPointu pomocí programovacího jazyka VBA.
Jak mohu použít VBA v PowerPointu?
Chcete -li používat VBA v PowerPointu, otevřete editor VBA (ALT + F11 nebo Developer> Visual Basic).
Jak vytvořím makro v PowerPointu?
1. Otevřete editor VBA (ALT + F11 nebo Developer> Visual Basic)
2. Přejděte na Vložit> Modul a vytvořte modul kódu
3. Zadejte „Sub HelloWorld“ a stiskněte Enter
4. Mezi řádky „Sub HelloWorld“ a „End Sub“ zadejte „MsgBox“ Hello World!
5. Vytvořili jste makro!
6. Nyní stiskněte „F5“ pro spuštění makra
Autor: Vinamra Chandra