PowerPoint VBA makró példák és bemutató

Ez egy teljes útmutató a PowerPoint automatizálásához VBA (Visual Basic for Applications) makrók használatával. Az alábbiakban számos hasznos példát talál.

VBA PDF (ingyenes letöltések)

Töltse le ingyenes Microsoft PowerPoint VBA oktatóanyagunkat! Vagy VBA oktatóanyagok más irodai programokhoz!

Letöltés

PowerPoint VBA (makrók) bemutató

Mentés makróként használható prezentációként

A VBA kóddal ellátott prezentációt „Mentett másként” PowerPoint makró-engedélyezett prezentációnak kell lennie (*.pptm)

Engedélyezze a „Fejlesztő” fület a szalagon

A VBA -kód létrehozása előtt engedélyeznie kell a Fejlesztő fület a szalagon. Ehhez válassza a Fájl -> Beállítások lehetőséget, majd kattintson a „Szalag testreszabása” elemre, és jelölje be a jobb oldali ablaktábla „Fejlesztő” lap melletti négyzetet.

Hozzon létre PowerPoint makrót

Ez egy egyszerű példa a PowerPoint VBA makróra:

1234567891011 Sub SavePresentationAsPDF ()Dim pptName mint karakterláncHalvány PDFName, mint karakterlánc„Mentse a PowerPointot PDF -kéntpptName = ActivePresentation.FullName"Cserélje ki a névben lévő PowerPoint fájlkiterjesztést PDF -rePDFName = Bal (pptName, InStr (pptName, ".")) & "Pdf"ActivePresentation.ExportAsFixedFormat PDFName, 2 'ppFixedFormatTypePDF = 2End Sub

PDF formátumban menti az aktív prezentációt. Minden kódsor a következőket teszi:

  • Változókat hoz létre a PowerPoint névhez és a PDF névhez
  • Az aktív prezentációnevet hozzárendeli a pptName változóhoz
  • Létrehozza a teljes PDF nevet
  • A prezentációt PDF formátumban menti

PowerPoint alkalmazás

Ha a VBA -kód egy PowerPoint -bemutatón fut, a PowerPoint -alkalmazás az alapértelmezett alkalmazás, és kifejezett hivatkozás nélkül is kezelhető. Hozzon létre egy új prezentációt

Bemutató létrehozásához használja a PowerPoint alkalmazás Hozzáadás módszerét.

123 Application.Presentations.Add'vagy kifejezett hivatkozás nélkülBemutatók. Hozzáadás

Nyisson meg egy új bemutatót

Új és üres prezentáció megnyitásához használja az Application.Presentations gyűjtemény hozzáadásának módszerét

1 Bemutatók. Hozzáadás

Nyisson meg egy meglévő prezentációt

A már létrehozott prezentáció megnyitásához használja az Application.Presentations gyűjtemény Open módszerét

1 Presentations.Open ("Saját prezentáció.pptx")

A fenti kód feltételezi, hogy a prezentáció ugyanabban a könyvtárban található, mint a kódot tartalmazó PowerPoint bemutató.

Megnyitás és hozzárendelés egy változóhoz

A megnyitott prezentációt hozzá kell rendelni egy változóhoz, hogy igényei szerint kezelhesse.

12 Dim ppt prezentációkéntSet ppt = Presentations.Open ("Saját prezentáció.pptx")

Lásd: Aktív prezentáció

Az ActivePrentation hivatkozással manipulálhatja a GUI -ban aktív prezentációt a VBA -kód végrehajtásakor.

12 'Nyomtassa ki az ActivePresentation nevét az azonnali ablakbaHibakeresés. ActivePresentation nyomtatása. Név

Mentse az aktuális bemutatót

Az alábbi utasítás menti az aktív prezentációt, ha korábban mentette. Ha nem mentette el, akkor megjelenik a „Mentés másként” párbeszédpanel.

1 ActivePresentation.Save

Zárja be az aktuális bemutatót

Az alábbi utasítás bezárja az aktív prezentációt, még akkor is, ha nem mentette el az utolsó szerkesztés után.

1 ActivePresentation.Close

Hasznos referenciák

Rendelje hozzá a meglévő prezentációt (név szerint) a változóhoz

12 Dim myPresentationByName mint prezentációSet myPresentationByName = Application.Presentations ("Saját prezentáció")

Aktív dia hozzárendelése a változóhoz

12 Áram tompítása Csúsztassa diakéntCurrentSlide = Application.ActiveWindow.View.Slide beállítása

Dia indexelése a Változóhoz

12 Dim mySlide mint DiaA MySlide = ActivePresentation beállítása. Diák (11)

Diák száma

12 Dim slideCount As LongslideCount = ActivePresentation.Slides.Count

Dia index lekérése Az aktuális dia száma

12 Dim currentSlideIndex Dia névencurrentSlideIndex = Application.ActiveWindow.View.Slide.SlideIndex

Adjon hozzá egy üres diát a diavetítés végéhez

1234567 Dim slideCount As LongDim newSlide mint DiaslideCount = ActivePresentation.Slides.CountNewSlide = ActivePresentation.Slides.Add beállítása (slideCount + 1, 12)'vagy ppLayoutBlank = 12NewSlide = ActivePresentation.Slides.Add beállítása (slideCount + 1, ppLayoutBlank)

Dia hozzáadása az aktuális dia után

12345 Dim newSlide mint DiaA currentSlideIndex halványítása egész számkéntcurrentSlideIndex = Application.ActiveWindow.View.Slide.SlideIndexNewSlide = ActivePresentation.Slides.Add beállítása (currentSlideIndex, ppLayoutBlank)

Dia törlése

1234 A currentSlideIndex halványítása egész számkéntcurrentSlideIndex = Application.ActiveWindow.View.Slide.SlideIndexActivePresentation.Slides (currentSlideIndex). Törlés

Ugrás egy adott diára

12 'Ezzel eljuthat a 4 -es diáhozApplication.ActiveWindow.View.GotoSlide (4)

Dia áthelyezése

A diát áthelyezheti a régi helyzetéből az új pozícióba

123456 'Lépjen a 3. diáról az első diáraA régi pozíció elhalványítása egész számként, az új pozíció elhalványítása egész számkéntoldPosition = 3newPosition = 1ActivePresentation.Slides (oldPosition) .MoveTo toPos: = newPosition

Lépjen végig minden dián

Mindegyik diával tehet valamit, vagy az összes dián keresztül kereshet néhány diát, és tehet valamit a kód használatával;

123456 Dim mySlide mint DiaMinden MySlide -hoz az ActivePresentation.Slides -ban„Tegyen valamit a„ mySlide ”változóban említett aktuális diával"Hibakeresés. Nyomtassa ki a MySlide -t. NévKövetkező dia

Tekintse át az aktív dia minden formáját

A PowerPoint ereje a „Alakzatok” használatával valósítható meg. Az alábbi kód az aktuális dián lévő összes alakzaton keresztül cikázik, így tetszés szerint kezelheti őket;

123456789 Áram halványítása Csúsztassa diakéntDim shp mint ShapeCurrentSlide = Application.ActiveWindow.View.Slide beállításaMinden egyes shp -hez In currentSlide.Shapes„Csináljon valamit az„ shp ”változóban említett aktuális formával'Például nyomtassa ki az alakzat nevét az Azonnali ablakbanHibakeresés. Nyomtatás shp. NévKövetkező shp

Lépjen végig az összes dián az összes alakzaton

A prezentáció összes alakzatát végighurkolhatja, ha hurkot ad hozzá az összes diához.

123456789 Áram halványítása Csúsztassa diakéntDim shp mint ShapeMinden aktuálisSlide -hez az ActivePresentation.Slides -banMinden egyes shp -hez In currentSlide.Shapes„Csináljon valamit az„ shp ”változóban említett aktuális formávalHibakeresés. Nyomtatás shp. NévKövetkező shpKövetkező currentSlide

Lépjen végig az Active Slide összes szövegdobozán

A szövegdobozok a leggyakrabban használt alakzatok a PowerPoint prezentációkban. Az összes szövegdobozt végiglapozhatja, ha bejelöli az „Alakzat típusa” jelölőnégyzetet. A TexBoxok alaptípusa a mBATextBox VBA állandó (az állandó számértéke 17)

1234567891011 Áram halványítása Csúsztassa diakéntDim shp mint ShapeCurrentSlide = Application.ActiveWindow.View.Slide beállításaMinden egyes shp -hez In currentSlide.Shapes'Ellenőrizze, hogy az alakzat típusa msoTextBoxHa shp.Type = 17 Akkor 'msoTextBox = 17'Nyomtassa ki a szöveget a TextBoxbanDebug.Print shp.TextFrame2.TextRange.TextVége HaKövetkező shp

Lépjen végig az összes diák szövegdobozain

Ismét megismételheti a prezentáció összes szövegdobozát, ha hurkot ad hozzá az összes diához.

1234567891011 Slide mint Slide Dim shp mint AlakMinden aktuálisSlide -hez az ActivePresentation.Slides -banMinden egyes shp -hez In currentSlide.Shapes'Ellenőrizze, hogy az alakzat típusa msoTextBoxHa shp.Type = 17 Akkor 'msoTextBox = 17„Tegyen valamit az„ shp ”változóban említett TextBox -talDebug.Print shp.TextFrame2.TextRange.TextVége HaKövetkező shpKövetkező currentSlide

Másolja a kijelölt diákat új PPT bemutatóra

Ha bizonyos diákat új prezentációkba szeretne másolni, először válassza ki a kívánt diákat a meglévő prezentációban, majd futtassa az alábbi kódot;

123456789101112131415161718 Dim currentPresentation as PresentationÁram halványítása Csúsztassa diakéntDim newPresentation as Bemutató'Hivatkozás mentése az aktuális prezentációraSet currentPresentation = Application.ActivePresentation'Hivatkozás mentése az aktuális diáraCurrentSlide = Application.ActiveWindow.View.Slide beállítása'Új prezentáció hozzáadása és mentése hivatkozáshozSet NewPresentation = Application.Presentations.Add'Másolja a kijelölt diákatKiválasztás. Másolás'Illessze be az új prezentációbaNewPresentation.Slides.Paste

Másolja az aktív diát az aktív prezentáció végére

12345 'Másolja az aktuális diátApplication.ActiveWindow.View.Slide.Copy'Illessze be a végéreActivePresentation.Slides.Paste

Hasznos PowerPoint makró példák

Íme néhány hasznos makró példa, amely bemutatja a feladatok elvégzését. Ezek is bemutatják a fent leírt fogalmakat.

Dia módosítása diavetítés közben

1234567891011 Sub ChangeSlideDuringSlideShow ()Dim SlideIndex mint egészDim SlideIndexKorábbi mint egész'Diavetítés közben módosítsa az aktuális diát a kiválasztott 4. diáraSlideIndex = 4'Az aktuális diavetítés ablakának indexe 1 a SlideShowWindows gyűjteménybenSlideIndexPrevious = SlideShowWindows (1). View.CurrentShowPositionSlideShowWindows (1). View.GotoSlide SlideIndexEnd Sub

Betűtípus módosítása az összes dián az összes szövegdobozban

123456789101112131415 Sub ChangeFontOnAllSlides ()Dim mySlide Mint diátDim shp As Shape'Betűméret módosítása minden diánMinden MySlide -hoz az ActivePresentation.Slides -banMinden shp -hez A mySlide.Shapes -banHa shp.Type = 17 Akkor 'msoTextBox = 17"Módosítsa a betűméretet 24 -reshp.TextFrame.TextRange.Font.Size = 24Vége HaKövetkező shpKövetkező mySlideEnd Sub

Változtassa meg a kis- és nagybetűket felsőről normálra az összes szövegdobozban

123456789101112131415 Sub ChangeCaseFromUppertoNormal ()Dim mySlide Mint diátDim shp As Shape„Váltson a nagybetűkről a normál kisbetűkre minden diánálMinden MySlide -hoz az ActivePresentation.Slides -banMinden shp -hez A mySlide.Shapes -banHa shp.Type = 17 Akkor 'msoTextBox = 17„Változtassa meg a nagybetűket normál betűsreshp.TextFrame2.TextRange.Font.Allcaps = HamisVége HaKövetkező shpKövetkező mySlideEnd Sub

Váltás a kis- és nagybetűk között az összes szövegdobozban

12345678910111213141516 Sub ToggleCaseBetweenUpperAndNormal ()Dim mySlide Mint diátDim shp As Shape'Váltás a nagybetűk és a normál kisbetűk között minden diánálMinden MySlide -hoz az ActivePresentation.Slides -banMinden shp -hez A mySlide.Shapes -banHa shp.Type = 17 Akkor 'msoTextBox = 17'Váltás a nagybetűk és a normál kisbetűk közöttshp.TextFrame2.TextRange.Font.Allcaps = _Nem shp.TextFrame2.TextRange.Font.AllcapsVége HaKövetkező shpKövetkező mySlideEnd Sub

Távolítsa el az aláhúzást a leszármazottak közül

A tipográfiában az ereszkedő a betű azon része, amely a betűtípus alapvonala alá nyúlik. A legtöbb betűtípusban a leszármazottak kisbetűkre vannak fenntartva, mint például g, j, q, p, y és néha f.

Ha aláhúzza a szöveget, az nem tűnik szépnek az utódok alatt. Íme a kód, amely eltávolítja az aláhúzást az összes ilyen g, j, p, q és y karakterből a teljes prezentációban.

1234567891011121314151617181920212223242526 Sub RemoveUnderlineFromDescenders ()Dim mySlide Mint diátDim shp As ShapeDim descenders_list Dim karakterlánckéntHalvány kifejezés karakterlánckéntHalvány x Hosszú'Távolítsa el az aláhúzásokat a leszármazottakróldescenders_list = "gjpqy"Minden MySlide -hoz az ActivePresentation.Slides -banMinden shp -hez A mySlide.Shapes -banHa shp.Type = 17 Akkor 'msoTextBox = 17'Távolítsa el az aláhúzást a "gjpqy" betűkrőlShp.TextFrame.TextRange segítségévelkifejezés = .SzövegX = 1 esetén Len (.Text)Ha InStr (leszármazók_listája, Közép $ (kifejezés, x, 1))> 0 Akkor. Karakterek (x, 1). Betűtípus. Aláhúzott = HamisVége HaKövetkező xVége ezzelVége HaKövetkező shpKövetkező mySlideEnd Sub

Animációk eltávolítása az összes diáról

Használja az alábbi kódot a prezentációban beállított összes animáció eltávolításához.

123456789101112 Sub RemoveAnimationsFromAllSlides ()Dim mySlide Mint diátDim i As LongMinden MySlide -hoz az ActivePresentation.Slides -banAz i = mySlide.TimeLine.MainSequence.Count To 1 lépéshez -1'Távolítson el minden animációtmySlide.TimeLine.MainSequence.Item (i) .DeleteKövetkező iKövetkező mySlideEnd Sub

Bemutató mentése PDF formátumban

Könnyen mentheti az aktív prezentációt PDF formátumban.

1234567891011 Sub SavePresentationAsPDF ()Dim pptName mint karakterláncHalvány PDFName, mint karakterlánc„Mentse a PowerPointot PDF -kéntpptName = ActivePresentation.FullName"Cserélje ki a névben lévő PowerPoint fájlkiterjesztést PDF -rePDFName = Bal (pptName, InStr (pptName, ".")) & "Pdf"ActivePresentation.ExportAsFixedFormat PDFName, 2 'ppFixedFormatTypePDF = 2End Sub

Szöveg keresése és cseréje

Szöveget találhat és cserélhet az összes dia összes szövegdobozában. A keresni kívánt szöveg első példánya után (a findWhat határozza meg), át kell tekintenie a Find parancsot, hogy megtalálja a többi példányt, ha vannak ilyenek.

123456789101112131415161718192021222324252627282930313233 Sub FindAndReplaceText ()Dim mySlide Mint diátDim shp As ShapeDim findWhat As StringHalvány helyettesítés karakterlánccalDim ShpTxt mint TextRangeDim TmpTxt TextRange -kéntfindWhat = "sakál"csereWith = "róka""Keresse meg és cserélje kiMinden MySlide -hoz az ActivePresentation.Slides -banMinden shp -hez A mySlide.Shapes -banHa shp.Type = 17 Akkor 'msoTextBox = 17Állítsa be az ShpTxt = shp.TextFrame.TextRange parancsot"Keresse meg a" Keres "szó első példányát (ha létezik)Állítsa be a TmpTxt = ShpTxt.Replace (findWhat, _Replacewhat: = csereWith, _Egész szavak: = Igaz)"Keresse meg a" Keres "szó további példányait (ha létezik)Tedd, amíg nem A TmpTxt semmiShpTxt = ShpTxt.Characters (TmpTxt.Start + TmpTxt.Length, ShpTxt.Length) beállításaÁllítsa be a TmpTxt = ShpTxt.Replace (findWhat, _Replacewhat: = csereWith, _Egész szavak: = Igaz)HurokVége HaKövetkező shpKövetkező mySlideEnd Sub

Dia exportálása képként

Exportálhatja az Aktuális diát (vagy bármely más diát) PNG vagy JPG (JPEG) vagy BMP képként.

1234567891011121314 Sub ExportSlideAsImage ()Dim imageType mint karakterláncDim pptName mint karakterláncDim imageName mint karakterláncDim mySlide Mint diát'Exportálja az aktuális diát a képbeimageType = "png" 'vagy jpg vagy bmppptName = ActivePresentation.FullNameimageName = Bal (pptName, InStr (pptName, ".")) & imageTypeÁllítsa be a MySlide = Application.ActiveWindow.View.slide beállítástmySlide.Export imageName, imageTypeEnd Sub

Kép átméretezése a teljes diára

1234567891011121314151617181920212223242526 Sub ResizeImageToCoverFullSlide ()Dim mySlide Mint diátDim shp As Shape'A kép átméretezése teljes diaméretre'Módosítsa az aktuális dia első alakjának magasságát és szélességét'hogy illeszkedjen a csúszda méretéhezÁllítsa be a MySlide = Application.ActiveWindow.View.slide beállítástÁllítsa be az shp = mySlide.Shapes (1)'''' Cserélje ki a fenti két statemetnt a következővel:'' az alábbi állítást, ha akarja'' kibontja az éppen kiválasztott alakzatot'' hibát jelez, ha nincs kiválasztva semmi'Set shp = ActiveWindow.Selection.ShapeRange (1)Shp -vel.LockAspectRatio = Hamis.Height = ActivePresentation.PageSetup.SlideHeight.Width = ActivePresentation.PageSetup.SlideWidth.Bal = 0.Top = 0Vége ezzelEnd Sub

Kilépés az összes futó diavetítésből

Ha egyszerre több diavetítés is nyitva van, akkor az alábbi makróval bezárhatja mindegyiket.

1234567 Sub ExitAllRunningSlideShows ()Csináld a SlideShowWindows.Count> 0 lehetőségetSlideShowWindows (1). Nézet.KilépésHurokEnd Sub

A PowerPoint automatizálása Excelből

Más alkalmazások (például Excel és Word) segítségével is csatlakozhat a PowerPointhoz. Első lépésként a PowerPoint egy példányára kell hivatkoznia.

Ennek két módja van - korai kötés és késői kötés .

Nyissa meg a PowerPoint - Korai kötés lehetőséget

Az „Early Binding” szakaszban kifejezetten be kell állítania egy hivatkozást a „Microsoft PowerPoint 16 Object Library” -re (MS Office 2022 esetén) a VBE-ben (Visual Basic Editor) az Eszközök-> Referenciák menüpont segítségével.

123 'Korai kötésDim pptApp alkalmazáskéntÁllítsa be a pptApp = Új PowerPoint.Application lehetőséget

Nyissa meg a PowerPoint - Késői kötés lehetőséget

A „Late Binding” alkalmazásban az alkalmazásváltozót objektumként deklarálják, és a VBA motor futás közben csatlakozik a megfelelő alkalmazáshoz.

123 'Késői kötésDim pptApp objektumkéntÁllítsa be a pptApp = CreateObject ("PowerPoint.Application")

Tegye láthatóvá az alkalmazást

Miután beállította a hivatkozást a PowperPoint alkalmazásra, előfordulhat, hogy láthatóvá kell tennie.

1 pptApp.Visible = Igaz

Manipulálja a PowerPointot

Az összes módszert felhasználhatja a prezentációk manipulálására a PowerPoint -on belül, amelyet fent leírtak az Excelből, csak hozzáadva a hivatkozást a fent létrehozott PowerPointhoz.

Például

1 Presentations.Open ("Saját prezentáció.pptx")

használni kell ezt tetszett

1 pptApp .Presentations.Open ("Saját prezentáció.pptx")

Zárja be az alkalmazást

Miután befejezte, amit a PowerPoint alkalmazással akart csinálni, be kell zárnia azt, és fel kell oldania a hivatkozást.

12 pptApp.Lépjen kiSet pptApp = Semmi

Másolás Excelből PowerPointba

Ez a kód egy tartományt másol az Excelből a PowerPointba:

jegyzet: A lehető legegyszerűbben mutattuk be, hogyan másolható át egy tartomány az Excelből a PowerPointba a VBA segítségével.

12345678910111213141516171819 Sub copyRangeToPresentation ()"Nyissa meg az új PowerPoint példánytÁllítsa be a pptApp = CreateObject ("PowerPoint.Application")A pptApp segítségével'Hozzon létre egy új prezentációtÁllítsa be a ppt = .Presentations.Add'Adjon hozzá egy üres diátNewSlide = ppt.Slides.Add (1, 12) 'ppLayoutBlank = 12'Tartomány másolása az Excel aktív lapjárólActiveSheet.Range ("A1: E10"). Másolat'Illessze be a Powerpointba képkéntnewSlide.Shapes.PasteSpecial DataType: = 2 '2 = ppPasteEnhancedMetafile'Váltás a PowerPointra.AktiváljaVége ezzelEnd Sub

PowerPoint VBA GYIK

Mik a makrók a PPT -ben?

A makró egy általános kifejezés, amely a feladatokat automatizáló programozási utasítások összességére utal. PowerPoint (PPT) A makrók automatizálják a feladatokat a PowerPointban a VBA programozási nyelv használatával.

Hogyan használhatom a VBA -t a PowerPointban?

A VBA PowerPointban való használatához nyissa meg a VBA szerkesztőt (ALT + F11 vagy Fejlesztő> Visual Basic).

Hogyan hozhatok létre makrót a PowerPointban?

1. Nyissa meg a VBA szerkesztőt (ALT + F11 vagy Fejlesztő> Visual Basic)
2. Kódmodul létrehozásához lépjen a Beszúrás> Modul menüpontba
3. Írja be a „Sub HelloWorld” szót, és nyomja meg az Enter billentyűt
4. A „Sub HelloWorld” és az „End Sub” sorok közé írja be az „MsgBox„ Hello World! ”
5. Létrehoztál egy makrót!
6. Most nyomja meg az „F5” gombot a makró futtatásához

Írta: Vinamra Chandra

Segít a fejlesztés a helyszínen, megosztva az oldalt a barátaiddal

wave wave wave wave wave