Primjeri i vodiči za makroe PowerPoint VBA

Ovo je potpuni vodič za automatiziranje programa PowerPoint pomoću VBA (Visual Basic za aplikacije) makronaredbi. U nastavku ćete pronaći mnoge korisne primjere.

VBA PDF (besplatno preuzimanje)

Preuzmite naš besplatni vodič za Microsoft PowerPoint VBA! Ili VBA vodiči za druge Office programe!

preuzimanje datoteka

Vodič za PowerPoint VBA (makronaredbe)

Spremi kao prezentaciju s omogućenim makronaredbama

Prezentacija s VBA kodom trebala bi biti "Spremljena kao" PowerPoint prezentacija s omogućenim makronaredbama (*.pptm)

Omogućite karticu "Developer" na vrpci

Prije stvaranja VBA koda trebate omogućiti karticu Developer na vrpci. Da biste to učinili, odaberite Datoteka -> Opcije, zatim kliknite "Prilagodi vrpcu" i potvrdite okvir pored kartice "Razvojni programer" u desnom oknu.

Napravite PowerPoint makronaredbu

Ovo je jednostavan primjer PowerPoint VBA makronaredbe:

1234567891011 Sub SavePresentationAsPDF ()Dim pptName As StringDim PDFName As String'Spremite PowerPoint kao PDFpptName = ActivePresentation.FullName'Zamijenite proširenje datoteke PowerPoint u imenu u PDFPDFName = Lijevo (pptName, InStr (pptName, ".")) & "Pdf"ActivePresentation.ExportAsFixedFormat PDFName, 2 'ppFixedFormatTypePDF = 2Kraj podm

Sprema aktivnu prezentaciju kao PDF. Svaki red koda čini sljedeće:

  • Stvara varijable za naziv programa PowerPoint i naziv PDF -a
  • Dodjeljuje ime aktivne prezentacije varijabli pptName
  • Stvara puni naziv PDF -a
  • Sprema prezentaciju kao PDF

PowerPoint aplikacija

Kad se VBA kôd izvodi u PowerPoint prezentaciji, PowerPoint aplikacija zadana je aplikacija i njome se može manipulirati bez izričite reference. Napravite novu prezentaciju

Za izradu prezentacije upotrijebite metodu dodavanja aplikacije PowerPoint.

123 Primjena.Prezentacije.Dodati'ili bez izričite referencePrezentacije.Dodati

Otvorite novu prezentaciju

Za otvaranje nove i prazne prezentacije upotrijebite metodu Dodavanje zbirke Application.Presetations

1 Prezentacije.Dodati

Otvorite postojeću prezentaciju

Da biste otvorili prezentaciju koju ste već stvorili, upotrijebite metodu Open zbirke Application.Presetations

1 Prezentacije.Open ("Moja prezentacija.pptx")

Gornji kôd pretpostavlja da je prezentacija u istom direktoriju kao PowerPoint prezentacija koja sadrži kôd.

Otvori i dodijeli varijabli

Prezentaciju koju otvorite trebate dodijeliti varijabli tako da njome možete manipulirati prema svojim zahtjevima.

12 Dim ppt kao prezentacijaPostavi ppt = Prezentacije.Open ("Moja prezentacija.pptx")

Pogledajte Aktivna prezentacija

Koristite referentnu ActivePrentation za upravljanje prezentacijom aktivnom u grafičkom sučelju kada se izvršava VBA kôd.

12 'Ispišite naziv aktivne prezentacije u neposredni prozorDebug.Print ActivePresentation.Name

Spremi trenutnu prezentaciju

Donja izjava spremit će aktivnu prezentaciju ako je prethodno spremljena. Ako nije spremljeno, od vas će se zatražiti dijalog "Spremi kao".

1 ActivePresentation.Save

Zatvorite trenutnu prezentaciju

Izjava ispod zatvara aktivnu prezentaciju čak i ako nije spremljena nakon zadnjeg uređivanja.

1 ActivePresentation.Close

Korisne reference

Dodijelite postojeću prezentaciju (po imenu) varijabli

12 Zatamnite myPresentationByName As PresentationPostavi myPresentationByName = Application.Presetations ("Moja prezentacija")

Dodijelite aktivni slajd varijabli

12 Priguši strujuSklizni kao slajdPostavi currentSlide = Application.ActiveWindow.View.Slide

Dodijelite slajd prema indeksu varijabli

12 Zatamnite mySlide kao SlidePostavi mySlide = ActivePresentation.Slides (11)

Broji broj slajdova

12 Dim slideCount As LongslideCount = ActivePresentation.Slides.Count

Dohvati indeks slajda Broj trenutnog slajda

12 Zatamni trenutniSlideIndex kao slajdcurrentSlideIndex = Aplikacija.ActiveWindow.View.Slide.SlideIndex

Dodajte prazan slajd na kraj dijaprojekcije

1234567 Dim slideCount As LongZatamni noviSlide kao SlideslideCount = ActivePresentation.Slides.CountPostavi newSlide = ActivePresentation.Slides.Add (slideCount + 1, 12)'ili kao ppLayoutBlank = 12Postavi newSlide = ActivePresentation.Slides.Add (slideCount + 1, ppLayoutBlank)

Dodajte slajd nakon trenutnog slajda

12345 Zatamni noviSlide As SlideZatamni currentSlideIndex kao cijeli brojcurrentSlideIndex = Aplikacija.ActiveWindow.View.Slide.SlideIndexPostavi newSlide = ActivePresentation.Slides.Add (currentSlideIndex, ppLayoutBlank)

Izbrišite slajd

1234 Zatamni currentSlideIndex kao cijeli brojcurrentSlideIndex = Aplikacija.ActiveWindow.View.Slide.SlideIndexActivePresentation.Slides (currentSlideIndex) .Delete

Idite na određeni slajd

12 'Ovo će vas odvesti na slajd broj 4Application.ActiveWindow.View.GotoSlide (4)

Premjesti slajd

Slajd možete premjestiti sa starog na novi položaj

123456 'Prijeđite sa slajda 3 na prvi slajdZatamni oldPosition kao cijeli broj, zatamni newPosition kao cijeli brojoldPosition = 3newPosition = 1ActivePresentation.Slides (oldPosition) .MoveTo toPos: = newPosition

Prođite kroz sve slajdove

Sa svakim slajdom možete učiniti nešto ili proći kroz sve slajdove kako biste pronašli nekoliko slajdova i učiniti nešto oko korištenja koda;

123456 Zatamnite mySlide kao SlideZa svaki mySlide u ActivePresentation.Slides'Učinite nešto s trenutnim slajdom navedenim u varijabli' mySlide ''Debug.Print mySlide.NameSljedeći slajd

Prođite kroz sve oblike aktivnog slajda

Snaga PowerPointa može se ostvariti korištenjem ‘Oblici.’ Donji kôd ponavlja sve oblike na trenutačnom slajdu tako da njima možete manipulirati kako želite;

123456789 Prigušivanje struje Klizni kao slajdDim shp kao OblikPostavi currentSlide = Application.ActiveWindow.View.SlideZa svaki shp U currentSlide.Shapes'Učinite nešto s trenutnim oblikom navedenim u varijabli' shp ''Na primjer, ispišite naziv oblika u neposrednom prozoruOtklanjanje pogrešaka. Ispis shp.NameSljedeći shp

Prođite kroz sve oblike u svim slajdovima

Možete proći kroz sve oblike prezentacije dodavanjem petlje za prolaz kroz sve slajdove.

123456789 Prigušivanje struje Klizni kao slajdDim shp kao OblikZa svaki currentSlide u ActivePresentation.SlidesZa svaki shp U currentSlide.Shapes'Učinite nešto s trenutnim oblikom navedenim u varijabli' shp 'Otklanjanje pogrešaka. Ispis shp.NameSljedeći shpSljedeći trenutni slajd

Prođite kroz sve tekstualne okvire aktivnog slajda

TextBoxovi su najčešće korišteni oblik u PowerPoint prezentacijama. Možete proći kroz sve tekstualne okvire dodavanjem kvačice za "Vrsta oblika." TexBoxovi imaju oblik oblika definiran kao VBA konstanta msoTextBox (numerička vrijednost konstante je 17)

1234567891011 Prigušivanje struje Klizni kao slajdDim shp kao OblikPostavi currentSlide = Application.ActiveWindow.View.SlideZa svaki shp U currentSlide.Shapes'Provjerite je li tip oblika msoTextBoxAko je shp.Type = 17 Tada je 'msoTextBox = 17'Ispišite tekst u TextBoxuIspravljanje ispisa shp.TextFrame2.TextRange.TextZavrši akoSljedeći shp

Prođite kroz sve tekstualne okvire na svim slajdovima

Opet, možete proći kroz sve tekstualne okvire u prezentaciji dodavanjem petlje za pregled svih slajdova.

1234567891011 Priguši struju Klizni kao slajd Zatamni shp kao oblikZa svaki currentSlide u ActivePresentation.SlidesZa svaki shp U currentSlide.Shapes'Provjerite je li tip oblika msoTextBoxAko je shp.Type = 17 Tada je 'msoTextBox = 17'Učinite nešto s TextBoxom koji se spominje u varijabli' shp 'Debug.Print shp.TextFrame2.TextRange.TextZavrši akoSljedeći shpSljedeći trenutni slajd

Kopirajte odabrane slajdove u novu PPT prezentaciju

Da biste kopirali određene slajdove u novu prezentaciju, najprije odaberite željene slajdove u postojećoj prezentaciji, a zatim pokrenite donji kod;

123456789101112131415161718 Priguši trenutnu prezentaciju kao prezentacijuPrigušivanje struje Klizni kao slajdZatamni novu prezentaciju kao prezentaciju'Spremi referencu na trenutnu prezentacijuPostavi currentPresentation = Application.ActivePresentation'Spremi referencu na trenutni slajdPostavi currentSlide = Application.ActiveWindow.View.Slide'Dodajte novu prezentaciju i spremite kao referencuPostavite NewPresentation = Application.Presetations.Add'Kopirajte odabrane slajdoveOdabir.Kopiraj'Zalijepite ga u novu prezentacijuNewPresentation.Slides.Paste

Kopirajte aktivni slajd na kraj aktivne prezentacije

12345 'Kopiraj trenutni slajdApplication.ActiveWindow.View.Slide.Copy'Zalijepi na krajuActivePresentation.Slides.Paste

Korisni primjeri PowerPoint makronaredbi

Evo nekoliko korisnih primjera makroa koji pokazuju kako se izvršavaju zadaci. Oni će također pokazati gore opisane koncepte.

Promijenite dijaprojekciju tijekom dijaprojekcije

1234567891011 Sub ChangeSlideDuringSlideShow ()Zatamnite SlideIndex kao cijeli brojZatamni SlideIndexPrethodni kao cijeli broj'Promijenite trenutni slajd u odabrani slajd 4 tijekom slide showaSlideIndex = 4'Indeks trenutnog prozora dijaprojekcije je 1 u zbirci SlideShowWindowsSlideIndexPrevious = SlideShowWindows (1) .View.CurrentShowPositionSlideShowWindows (1) .View.GotoSlide SlideIndexKraj podm

Promijenite font na svim slajdovima u svim tekstualnim okvirima

123456789101112131415 Sub ChangeFontOnAllSlides ()Zatamni mySlide Kao slajdDim shp As Shape'Promijenite veličinu fonta na svim slajdovimaZa svaki mySlide u ActivePresentation.SlidesZa svaki shp U mySlide.obliciAko je shp.Type = 17 Tada je 'msoTextBox = 17'Promijenite veličinu slova na 24shp.TextFrame.TextRange.Font.Size = 24Završi akoSljedeći shpSljedeći mySlideKraj podm

Promijenite velika slova iz gornjih u normalne u svim tekstualnim okvirima

123456789101112131415 Sub ChangeCaseFromUppertoNormal ()Zatamni mySlide Kao slajdDim shp As Shape'Promijenite iz velikih slova u normalna slova za sve slajdoveZa svaki mySlide u ActivePresentation.SlidesZa svaki shp U mySlide.obliciAko je shp.Type = 17 Tada je 'msoTextBox = 17'Promijenite velika slova u normalna slovashp.TextFrame2.TextRange.Font.Allcaps = FalseZavrši akoSljedeći shpSljedeći mySlideKraj podm

Promjena velikih i malih slova u svim tekstualnim okvirima

12345678910111213141516 Sub ToggleCaseBetweenUpperAndNormal ()Zatamni mySlide Kao slajdDim shp As Shape'Prebacivanje između velikih slova i normalnih slova za sve slajdoveZa svaki mySlide u ActivePresentation.SlidesZa svaki shp U mySlide.obliciAko je shp.Type = 17 Tada je 'msoTextBox = 17'Prebacivanje između velikih i velikih slovashp.TextFrame2.TextRange.Font.Allcaps = _Nije shp.TextFrame2.TextRange.Font.AllcapsZavrši akoSljedeći shpSljedeći mySlideKraj podm

Uklonite podcrtavanje s Descendera

U tipografiji silazni je dio slova koji se proteže ispod osnovne crte fonta. U većini fontova spuštači su rezervirani za male slova kao što su g, j, q, p, y, a ponekad i f.

Kad podcrtate tekst, ne izgleda lijepo ispod spuštača. Ovdje je kôd za uklanjanje podcrtavanja sa svih takvih znakova g, j, p, q i y u cijeloj prezentaciji.

1234567891011121314151617181920212223242526 Sub RemoveUnderlineFromDescenders ()Zatamni mySlide Kao slajdDim shp As ShapeZatamni descenders_list kao nizZatamni izraz As StringDim x As Long'Uklonite podcrtave iz Descendersadescenders_list = "gjpqy"Za svaki mySlide u ActivePresentation.SlidesZa svaki shp U mySlide.obliciAko je shp.Type = 17 Tada je 'msoTextBox = 17'Ukloni podcrtavanje iz slova "gjpqy"S shp.TextFrame.TextRangeizraz = .TekstZa x = 1 To Len (. Tekst)Ako je InStr (descenders_list, Mid $ (izraz, x, 1))> 0 Zatim.Znakovi (x, 1) .Font.Underline = FalseZavrši akoSljedeći xZavrši sZavrši akoSljedeći shpSljedeći mySlideKraj podm

Ukloni animacije sa svih slajdova

Upotrijebite donji kod za uklanjanje svih animacija postavljenih u prezentaciji.

123456789101112 Sub RemoveAnimationsFromAllSlides ()Zatamni mySlide Kao slajdDim i As LongZa svaki mySlide u ActivePresentation.SlidesZa i = mySlide.TimeLine.MainSequence.Count To 1 Step -1'Ukloni svaku animacijumySlide.TimeLine.MainSequence.Item (i) .BrisatiSljedeći iSljedeći mySlideKraj podm

Spremi prezentaciju kao PDF

Aktivnu prezentaciju možete jednostavno spremiti u PDF formatu.

1234567891011 Sub SpremiPresentationAsPDF ()Dim pptName As StringDim PDFName As String'Spremite PowerPoint kao PDFpptName = ActivePresentation.FullName'Zamijenite proširenje datoteke PowerPoint u imenu u PDFPDFName = Lijevo (pptName, InStr (pptName, ".")) & "Pdf"ActivePresentation.ExportAsFixedFormat PDFName, 2 'ppFixedFormatTypePDF = 2Kraj podm

Pronađi i zamijeni tekst

Tekst možete pronaći i zamijeniti u svim tekstualnim okvirima svih slajdova. Nakon prve instance teksta koji želite pronaći (definira ga findWhat), morate proći kroz naredbu Find kako biste pronašli druge instance, ako ih ima.

123456789101112131415161718192021222324252627282930313233 Sub FindAndReplaceText ()Zatamni mySlide Kao slajdDim shp As ShapeZatamni nalazŠto kao nizPriguši zamjenu sa nizomZatamnite ShpTxt kao raspon tekstaZatamni TmpTxt kao tekstualni rasponfindWhat = "šakal"replaceWith = "lisica"'Pronađi i pronađi i zamijeniZa svaki mySlide u ActivePresentation.SlidesZa svaki shp U mySlide.obliciAko je shp.Type = 17 Tada je 'msoTextBox = 17Postavite ShpTxt = shp.TextFrame.TextRange'Pronađi prvi primjer riječi "Pronađi" (ako postoji)Postavi TmpTxt = ShpTxt.Replace (findWhat, _Zamijeni što: = zamijeni sa, _WholeWords: = Istina)'Pronađi sve dodatne instance riječi "Pronađi" (ako postoji)Raditi dok nije TmpTxt nije ništaPostavi ShpTxt = ShpTxt.Caracters (TmpTxt.Start + TmpTxt.Length, ShpTxt.Length)Postavi TmpTxt = ShpTxt.Replace (findWhat, _Zamijeni što: = zamijeni sa, _WholeWords: = Istina)PetljaZavrši akoSljedeći shpSljedeći mySlideKraj podm

Izvezite slajd kao sliku

Trenutni slajd (ili bilo koji drugi slajd) možete izvesti kao PNG ili JPG (JPEG) ili BMP sliku.

1234567891011121314 Sub ExportSlideAsImage ()Zatamni imageType As StringDim pptName As StringDim imageName As StringZatamni mySlide Kao slajd'Izvezite trenutni slajd u slikuimageType = "png" 'ili jpg ili bmppptName = ActivePresentation.FullNameimageName = Lijevo (pptName, InStr (pptName, ".")) & imageTypePostavite mySlide = Application.ActiveWindow.View.slidemySlide.Export imageName, imageTypeKraj podm

Promijenite veličinu slike tako da pokrije cijeli slajd

1234567891011121314151617181920212223242526 Sub ResizeImageToCoverFullSlide ()Zatamni mySlide Kao slajdDim shp As Shape'Promijenite veličinu slike na punu veličinu slajda'Promijenite visinu i širinu prvog oblika na trenutnom slajdu'da odgovaraju dimenzijama klizačaPostavite mySlide = Application.ActiveWindow.View.slidePostavi shp = mySlide.Oblici (1)'''' Zamijenite dva gornja stanja sa'' sljedeću izjavu ako želite'' proširiti trenutno odabrani oblik'' će dati pogrešku ako ništa nije odabrano'Postavi shp = ActiveWindow.Selection.ShapeRange (1)Sa shp.LockAspectRatio = Netačno.Height = ActivePresentation.PageSetup.SlideHeight.Width = ActivePresentation.PageSetup.SlideWidth.Lijevo = 0.Top = 0Završi sKraj podm

Izađite iz svih pokrenutih dijaprojekcija

Ako imate više otvorenih dijaprojekcija istovremeno otvorenih, sve ih možete zatvoriti pomoću dolje navedene makronaredbe.

1234567 PodizlazAllRunningSlideShows ()Učinite Dok SlideShowWindows.Count> 0SlideShowWindows (1) .View.ExitPetljaKraj podm

Automatiziranje programa PowerPoint iz programa Excel

Također se možete povezati s PowerPointom putem drugih aplikacija (poput programa Excel i Word). Kao prvi korak morate se obratiti instanci PowerPointa.

Postoje dva načina za to - rano vezivanje i kasno vezivanje .

Otvorite PowerPoint - Rano povezivanje

U "Ranom povezivanju" morate izričito postaviti referencu na "Knjižnicu objekata Microsoft PowerPoint 16" (za MS Office 2022) u VBE-u (Uređivač Visual Basic-a) pomoću opcije Alati-> Reference.

123 'Rano vezivanjeZatamnite pptApp kao aplikacijuPostavite pptApp = Nova PowerPoint.Application

Otvorite PowerPoint - kašnjenje

U ‘Late Binding’ varijabla aplikacije deklarirana je kao objekt, a VBA engine se povezuje s ispravnom aplikacijom tijekom izvođenja.

123 'Kasno vezivanjeZatamnite pptApp kao objektPostavi pptApp = CreateObject ("PowerPoint.Application")

Učinite aplikaciju vidljivom

Nakon što postavite referencu na aplikaciju PowperPoint, možda ćete je morati učiniti vidljivom.

1 pptApp.Visible = Istina

Manipulirajte PowerPoint

Možete koristiti sve metode za upravljanje prezentacijama iz PowerPointa, gore opisanog u Excelu, samo dodavanjem reference na PowerPoint koju ste gore stvorili.

Na primjer

1 Prezentacije.Open ("Moja prezentacija.pptx")

mora se koristiti ovako

1 pptApp .Presentation.Open ("Moja prezentacija.pptx")

Zatvorite aplikaciju

Nakon što dovršite ono što ste htjeli učiniti s PowerPoint aplikacijom, morate je zatvoriti i otpustiti referencu.

12 pptApp.OdustaniPostavite pptApp = Ništa

Kopirajte iz programa Excel u PowerPoint

Ovaj će kôd kopirati raspon iz Excela u PowerPoint:

Bilješka: Zadržano je što je moguće jednostavnije kako bi se pokazalo kako se raspon iz Excela može kopirati u PowerPoint pomoću VBA.

12345678910111213141516171819 Sub copyRangeToPresentation ()'Otvorite novu instancu PowerPointPostavi pptApp = CreateObject ("PowerPoint.Application")Uz pptApp'Napravite novu prezentacijuPostavite ppt = .Prezentacije.Dodaj'Dodajte prazan slajdPostavite newSlide = ppt.Slides.Add (1, 12) 'ppLayoutBlank = 12'Kopiraj raspon s aktivnog lista u ExceluActiveSheet.Range ("A1: E10"). Kopiraj'Zalijepite u Powerpoint kao slikunewSlide.Shapes.PasteSpecial DataType: = 2 '2 = ppPasteEnhancedMetafile'Prijeđite na PowerPoint.AktiviratiZavrši sKraj podm

Često postavljana pitanja o PowerPoint VBA

Što su makroi u PPT -u?

Makro je opći pojam koji se odnosi na skup programskih uputa koje automatiziraju zadatke. PowerPoint (PPT) makroi automatiziraju zadatke u PowerPointu pomoću programskog jezika VBA.

Kako mogu koristiti VBA u PowerPointu?

Da biste koristili VBA u PowerPointu, otvorite VBA Editor (ALT + F11 ili Developer> Visual Basic).

Kako mogu stvoriti makronaredbu u PowerPointu?

1. Otvorite VBA Editor (ALT + F11 ili Developer> Visual Basic)
2. Idite na Umetni> Modul da biste stvorili kodni modul
3. Upišite ‘Sub HelloWorld’ i pritisnite Enter
4. Između redaka ‘Sub HelloWorld’ i ‘End Sub’ upišite ‘MsgBox“ Hello World! ”
5. Napravili ste makro!
6. Sada pritisnite ‘F5’ za pokretanje makronaredbe

Napisala: Vinamra Chandra

Vi ćete pomoći u razvoju web stranice, dijeljenje stranicu sa svojim prijateljima

wave wave wave wave wave