Příklady makra PowerPoint VBA a návod

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

Vám pomůže rozvoji místa, sdílet stránku s přáteli

wave wave wave wave wave