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