Tämä on täydellinen opas PowerPointin automatisointiin VBA (Visual Basic for Applications) -makrojen avulla. Alta löydät monia hyödyllisiä esimerkkejä.
VBA PDF (ilmaiset lataukset)
Lataa ilmainen Microsoft PowerPoint VBA -opetusohjelma! Tai VBA -oppaita muille Office -ohjelmille!
ladata
PowerPoint VBA (makrot) -opetusohjelma
Tallenna makro-yhteensopivana esityksenä
VBA-koodilla varustetun esityksen tulee olla Tallennettu nimellä PowerPoint-makro-esitys (*.pptm)
Ota Kehittäjä -välilehti käyttöön nauhassa
Ota Kehittäjä -välilehti käyttöön valintanauhassa ennen VBA -koodin luomista. Voit tehdä tämän valitsemalla Tiedosto -> Asetukset ja napsauttamalla sitten Muokkaa valintanauhaa ja valitsemalla oikeanpuoleisen ruudun Kehittäjä -välilehden vieressä olevan valintaruudun.
Luo PowerPoint -makro
Tämä on yksinkertainen esimerkki PowerPoint VBA -makrosta:
1234567891011 | Tallenna esitysAsPDF ()Dim pptName kuin merkkijonoDim PDFName As StringTallenna PowerPoint PDF -tiedostonapptName = ActivePresentation.FullName'Korvaa nimessä oleva PowerPoint -tiedostopääte PDF -muotoonPDFName = Vasen (pptName, InStr (pptName, ".")) & "Pdf"ActivePresentation.ExportAsFixedFormat PDFName, 2 'ppFixedFormatTypePDF = 2End Sub |
Se tallentaa aktiivisen esityksen PDF -tiedostona. Jokainen koodirivi toimii seuraavasti:
- Luo muuttujia PowerPoint -nimelle ja PDF -nimelle
- Määrittää aktiivisen esityksen nimen pptName -muuttujalle
- Luo koko PDF -nimen
- Tallentaa esityksen PDF -tiedostona
PowerPoint -sovellus
Kun VBA -koodi on käynnissä PowerPoint -esityksessä, PowerPoint -sovellus on oletussovellus, ja sitä voidaan käsitellä ilman nimenomaista viittausta. Luo uusi esitys
Voit luoda esityksen käyttämällä PowerPoint -sovelluksen Lisää -menetelmää.
123 | Sovellus Esitykset Lisää'tai ilman nimenomaista viittaustaEsitykset.Lisää |
Avaa uusi esitys
Avaa uusi ja tyhjä esitys käyttämällä Add -sovellusta
1 | Esitykset.Lisää |
Avaa olemassa oleva esitys
Voit avata jo luomasi esityksen käyttämällä Open Application -menetelmää
1 | Presentations.Open ("Oma esitys.pptx") |
Yllä oleva koodi olettaa, että esitys on samassa hakemistossa kuin koodin sisältävä PowerPoint -esitys.
Avaa ja määritä muuttujaan
Sinun tulee liittää avaamasi esitys muuttujaan, jotta voit muokata sitä vaatimustesi mukaisesti.
12 | Dim ppt esityksenäAseta ppt = Presentations.Open ("Oma esitys.pptx") |
Katso Aktiivinen esitys
Käytä viitettä ActivePrentation manipuloidaksesi GUI: ssa aktiivista esitystä, kun VBA -koodi suoritetaan.
12 | 'Tulosta ActivePresentation -nimi välittömään ikkunaanDebug.Print ActivePresentation.Name |
Tallenna nykyinen esitys
Alla oleva lausunto tallentaa aktiivisen esityksen, jos se on tallennettu aiemmin. Jos sitä ei ole tallennettu, sinua kehotetaan näyttämään Tallenna nimellä -valintaikkuna.
1 | ActivePresentation.Save |
Sulje nykyinen esitys
Alla oleva lause sulkee aktiivisen esityksen, vaikka sitä ei olisi tallennettu edellisen muokkauksen jälkeen.
1 | ActivePresentation.Sulje |
Hyödyllisiä viitteitä
Määritä olemassa oleva esitys (nimellä) muuttujalle
12 | Dim myPresentationByName As EsitysAseta myPresentationByName = Application.Presentations ("Oma esitykseni") |
Määritä aktiivinen dia muuttujaan
12 | Himmennä virtaa Dia liukumanaAseta currentSlide = Application.ActiveWindow.View.Slide |
Määritä dia indeksin mukaan muuttujaan
12 | Himmennä mySlide diaksiAseta mySlide = ActivePresentation.Dias (11) |
Laske diojen määrä
12 | Dim slideCount As LongslideCount = ActivePresentation.Slides.Count |
Hae diahakemisto Nykyisen dian numero
12 | Himmennä nykyinen SlideIndex DianäcurrentSlideIndex = Application.ActiveWindow.View.Slide.SlideIndex |
Lisää tyhjä dia diaesityksen loppuun
1234567 | Dim slideCount As LongHimmennä uusi dia diaksislideCount = ActivePresentation.Slides.CountAseta newSlide = ActivePresentation.Slides.Add (slideCount + 1, 12)'tai ppLayoutBlank = 12Aseta newSlide = ActivePresentation.Slides.Add (slideCount + 1, ppLayoutBlank) |
Lisää dia nykyisen dian jälkeen
12345 | Dim newSlide As DiaHimmennä currentSlideIndex kokonaislukunacurrentSlideIndex = Application.ActiveWindow.View.Slide.SlideIndexAseta newSlide = ActivePresentation.Slides.Add (currentSlideIndex, ppLayoutBlank) |
Poista dia
1234 | Himmennä currentSlideIndex kokonaislukunacurrentSlideIndex = Application.ActiveWindow.View.Slide.SlideIndexActivePresentation.Slides (currentSlideIndex) .Poista |
Siirry tiettyyn diaan
12 | 'Tämä vie sinut diaan 4Application.ActiveWindow.View.GotoSlide (4) |
Siirrä dia
Voit siirtää dian vanhasta paikasta uuteen paikkaan
123456 | 'Siirry diasta 3 ensimmäiseen diaanHimmennä oldPosition kokonaislukuna, himmentä newPosition kokonaislukunaoldPosition = 3newPosition = 1ActivePresentation.Slides (oldPosition) .MoveTo toPos: = newPosition |
Selaa kaikki diat läpi
Voit tehdä jotain jokaisella dialla tai käydä läpi kaikki diat löytääksesi muutaman dian ja tehdä jotain koodin käyttämisellä.
123456 | Himmennä mySlide diaksiJokaiselle mySlide ActivePresentation.Slides -palvelussa'Tee jotain nykyisellä dialla, johon viitataan muuttujassa' mySlide ''Virheenkorjaus, Tulosta mySlide.NameSeuraava dia |
Käy läpi kaikki aktiivisen dian muodot
PowerPointin voima voidaan toteuttaa käyttämällä muotoja. Alla oleva koodi kulkee läpi kaikki nykyisen dian muodot, jotta voit muokata niitä haluamallasi tavalla;
123456789 | Himmennä virtaa Slide diaDim shp kuin muotoAseta currentSlide = Application.ActiveWindow.View.SlideJokaiselle shp: lle currentSlide.Shapes'Tee jotain nykyisellä muodolla, johon viitataan muuttujassa' shp ''Tulosta esimerkiksi muodon nimi Välitön -ikkunaanVirheenkorjaus Tulosta shp.NameSeuraava shp |
Selaa kaikki muodot kaikissa dioissa
Voit kiertää kaikki esityksen muodot lisäämällä silmukan kaikkien diojen läpi.
123456789 | Himmennä virtaa Slide diaDim shp kuin muotoJokaiselle CurrentSlide ActivePresentation.Slides -palvelussaJokaiselle shp: lle currentSlide.Shapes'Tee jotain nykyisellä muodolla, johon viitataan muuttujassa' shp 'Virheenkorjaus Tulosta shp.NameSeuraava shpSeuraava nykyinen dia |
Selaa kaikki Active Sliden tekstikentät läpi
TextBoxet ovat useimmin käytetty muoto PowerPoint -esityksissä. Voit selata kaikkia tekstiruutuja lisäämällä Shape Type -valintaruudun. TexBoxien muoto on määritelty VBA -vakiona msoTextBox (vakion numeerinen arvo on 17)
1234567891011 | Himmennä virtaa Slide diaDim shp kuin muotoAseta currentSlide = Application.ActiveWindow.View.SlideJokaiselle shp: lle currentSlide.Shapes'Tarkista, onko muodon tyyppi msoTextBoxJos shp.Type = 17 Sitten 'msoTextBox = 17'Tulosta teksti TextBoxissaDebug.Print shp.TextFrame2.TextRange.TextLoppu JosSeuraava shp |
Selaa kaikkia tekstikenttiä kaikissa dioissa
Jälleen voit selata kaikkia esityksen tekstiruutuja lisäämällä silmukan kaikkien diojen läpi.
1234567891011 | Himmennä virtaa Slide Slide Dim shp muodossaJokaiselle CurrentSlide ActivePresentation.Slides -palvelussaJokaiselle shp: lle currentSlide.Shapes'Tarkista, onko muodon tyyppi msoTextBoxJos shp.Type = 17 Sitten 'msoTextBox = 17'Tee jotain muuttujassa' shp 'tarkoitetun TextBoxin avullaDebug.Print shp.TextFrame2.TextRange.TextLoppu JosSeuraava shpSeuraava nykyinen dia |
Kopioi valitut diat uuteen PPT -esitykseen
Jos haluat kopioida tietyt diat uuteen esitykseen, valitse ensin haluamasi diat olemassa olevasta esityksestä ja suorita sitten alla oleva koodi;
123456789101112131415161718 | Himmennä nykyinen esitys esityksenäHimmennä virtaa Slide diaHimmennä uusi esitys esityksenä'Tallenna viittaus nykyiseen esitykseenAseta currentPresentation = Application.ActivePresentation'Tallenna viittaus nykyiseen diaanAseta currentSlide = Application.ActiveWindow.View.Slide'Lisää uusi esitys ja tallenna viitteeseenAseta NewPresentation = Application.Presentations.Add'Kopioi valitut diatValinta KopioiLiitä se uuteen esitykseenNewPresentation.Slides.Paste |
Kopioi aktiivinen dia aktiivisen esityksen loppuun
12345 | 'Kopioi nykyinen diaApplication.ActiveWindow.View.Dia.Copy'Liitä lopussaActivePresentation.Slides.Paste |
Hyödyllisiä PowerPoint -makroesimerkkejä
Tässä on muutamia hyödyllisiä makroesimerkkejä tehtävien suorittamisesta. Ne osoittavat myös edellä kuvatut käsitteet.
Vaihda dia diaesityksen aikana
1234567891011 | Sub ChangeSlideDuringSlideShow ()Dim SlideIndex kokonaislukunaDim SlideIndexEdellinen kokonaislukuna'Vaihda nykyinen dia valittuun diaan 4 diaesityksen aikanaSlideIndex = 4'Nykyisen kuvaesityksen ikkuna on 1 SlideShowWindows -kokoelmassaSlideIndexPrevious = SlideShowWindows (1) .View.CurrentShowPositionSlideShowWindows (1) .View.GotoSlide SlideIndexEnd Sub |
Vaihda fonttia kaikissa dioissa kaikissa tekstikentissä
123456789101112131415 | Sub ChangeFontOnAllSlides ()Dim mySlide As diaDim shp kuten muoto'Muuta fonttikokoa kaikissa dioissaJokaiselle mySlide ActivePresentation.Slides -palvelussaJokaiselle shp: lle MySlide.ShapesissaJos shp.Type = 17 Sitten 'msoTextBox = 17Muuta kirjasinkoko 24: ksishp.TextFrame.TextRange.Font.Size = 24Loppu JosSeuraava shpSeuraava mySlideEnd Sub |
Vaihda kirjain ylimmästä normaaliksi kaikissa tekstikentissä
123456789101112131415 | Sub ChangeCaseFromUppertoNormal ()Dim mySlide As diaDim shp kuten muoto'Vaihda isoista kirjaimista normaalikokoisiksi kaikille dioilleJokaiselle mySlide ActivePresentation.Slides -palvelussaJokaiselle shp: lle MySlide.ShapesissaJos shp.Type = 17 Sitten 'msoTextBox = 17'Vaihda isot kirjaimet normaaliksishp.TextFrame2.TextRange.Font.Allcaps = VääräLoppu JosSeuraava shpSeuraava mySlideEnd Sub |
Vaihda kirjain ylemmän ja normaalin välillä kaikissa tekstikentissä
12345678910111213141516 | Sub ToggleCaseBetweenUpperAndNormal ()Dim mySlide As diaDim shp kuten muoto'Vaihda suurten ja tavallisten kirjainten välillä kaikille dioilleJokaiselle mySlide ActivePresentation.Slides -palvelussaJokaiselle shp: lle MySlide.ShapesissaJos shp.Type = 17 Sitten 'msoTextBox = 17'Vaihda isojen ja tavallisten kirjainten välilläshp.TextFrame2.TextRange.Font.Allcaps = _Ei shp.TextFrame2.TextRange.Font.AllcapsLoppu JosSeuraava shpSeuraava mySlideEnd Sub |
Poista Underline Descendersista
Typografiassa laskeva on kirjaimen osa, joka ulottuu fontin perusviivan alapuolelle. Useimmissa kirjasimissa jälkeläiset on varattu pienille kirjaimille, kuten g, j, q, p, y ja joskus f.
Kun alleviivataan tekstiä, se ei näytä hyvältä jälkeläisten alla. Tässä on koodi, jolla poistetaan alleviivaus kaikista tällaisista merkeistä g, j, p, q ja y koko esityksessä.
1234567891011121314151617181920212223242526 | Sub RemoveUnderlineFromDescenders ()Dim mySlide As diaDim shp kuten muotoDim descenders_list Himmennä merkkijononaHämärä lause merkkijononaDim x niin pitkä'Poista alleviivatut jälkeläisetdescenders_list = "gjpqy"Jokaiselle mySlide ActivePresentation.Slides -palvelussaJokaiselle shp: lle MySlide.ShapesissaJos shp.Type = 17 Sitten 'msoTextBox = 17Poista alleviivaus kirjaimista "gjpqy"Sisältää shp.TextFrame.TextRangelause = .tekstiX = 1 Lenille (.teksti)Jos InStr (descenders_list, Mid $ (fraasi, x, 1))> 0 Sitten.Merkit (x, 1) .Font.Underline = FalseLoppu JosSeuraava xLopetaLoppu JosSeuraava shpSeuraava mySlideEnd Sub |
Poista animaatiot kaikista dioista
Käytä alla olevaa koodia poistaaksesi kaikki esityksessä asetetut animaatiot.
123456789101112 | Sub RemoveAnimationsFromAllSlides ()Dim mySlide As diaDim niin kauanJokaiselle mySlide ActivePresentation.Slides -palvelussaSillä i = mySlide.TimeLine.MainSequence.Count To 1 Step -1'Poista jokainen animaatiomySlide.TimeLine.MainSequence.Item (i) .DeleteSeuraavaksi minäSeuraava mySlideEnd Sub |
Tallenna esitys PDF -tiedostona
Voit tallentaa aktiivisen esityksen helposti PDF -muodossa.
1234567891011 | Sub SavePresentationAsPDF ()Dim pptName kuin merkkijonoDim PDFName As StringTallenna PowerPoint PDF -tiedostonapptName = ActivePresentation.FullName'Korvaa nimessä oleva PowerPoint -tiedostopääte PDF -muotoonPDFName = Vasen (pptName, InStr (pptName, ".")) & "Pdf"ActivePresentation.ExportAsFixedFormat PDFName, 2 'ppFixedFormatTypePDF = 2End Sub |
Etsi ja korvaa teksti
Voit etsiä ja korvata tekstiä kaikkien diojen kaikista tekstikentistä. Löydettävän tekstin ensimmäisen esiintymän jälkeen (määritelmä findWhat), sinun täytyy selata Etsi -komentoa löytääksesi muita esiintymiä, jos sellaisia on.
123456789101112131415161718192021222324252627282930313233 | Sub FindAndReplaceText ()Dim mySlide As diaDim shp kuten muotoDim findWhat As StringHimmennä Korvaa merkkijonollaHimmennä ShpTxt TextRange -muodossaHimmennä TmpTxt TextRange -muodossafindWhat = "sakaali"korvataWith = "kettu"'Etsi ja etsi ja korvaaJokaiselle mySlide ActivePresentation.Slides -palvelussaJokaiselle shp: lle MySlide.ShapesissaJos shp.Type = 17 Sitten 'msoTextBox = 17Aseta ShpTxt = shp.TextFrame.TextRangeEtsi Etsi -sanan ensimmäinen esiintymä (jos sellainen on)Aseta TmpTxt = ShpTxt.Replace (findWhat, _Korvaa mitä: = korvata, _Koko sana: = totta)"Etsi muita" Etsi "-sanan esiintymiä (jos sellainen on)Tee vaikka ei TmpTxt ei ole mitäänAseta ShpTxt = ShpTxt.Characters (TmpTxt.Start + TmpTxt.Length, ShpTxt.Length)Aseta TmpTxt = ShpTxt.Replace (findWhat, _Korvaa mitä: = korvata, _Koko sana: = totta)SilmukkaLoppu JosSeuraava shpSeuraava mySlideEnd Sub |
Vie dia kuvaksi
Voit viedä Nykyisen dian (tai minkä tahansa muun dian) PNG- tai JPG- (JPEG) tai BMP -kuvaksi.
1234567891011121314 | Sub ExportSlideAsImage ()Himmentää kuvan tyyppiä merkkijononaDim pptName kuin merkkijonoDim imageName As StringDim mySlide As dia'Vie nykyinen dia kuvaanimageType = "png" 'tai jpg tai bmppptName = ActivePresentation.FullNameimageName = Vasen (pptName, InStr (pptName, ".")) & imageTypeAseta mySlide = Application.ActiveWindow.View.slidemySlide.Export imageName, imageTypeEnd Sub |
Muuta kuvan kokoa kattamaan koko dia
1234567891011121314151617181920212223242526 | Sub ResizeImageToCoverFullSlide ()Dim mySlide As diaDim shp kuten muoto'Muuta kuvan koko dian koko'Muuta nykyisen dian ensimmäisen muodon korkeutta ja leveyttä'liukumäen mittojen mukaanAseta mySlide = Application.ActiveWindow.View.slideAseta shp = mySlide.Shapes (1)'''' Korvaa kaksi yllä olevaa tilastotunnusta merkillä'' seuraava lausunto, jos haluat'' laajentaa valittua muotoa'' antaa virheen, jos mitään ei ole valittu'Aseta shp = ActiveWindow.Selection.ShapeRange (1)Shp: n kanssa.LockAspectRatio = Väärä.Height = ActivePresentation.PageSetup.SlideHeight.Width = ActivePresentation.PageSetup.SlideWidthVasen = 0Ylös = 0LopetaEnd Sub |
Lopeta kaikki käynnissä olevat diaesitykset
Jos sinulla on useita diaesityksiä auki samanaikaisesti, voit sulkea ne kaikki alla olevan makron avulla.
1234567 | Sub ExitAllRunningSlideShows ()Tee samalla SlideShowWindows.Count> 0SlideShowWindows (1) .View.ExitSilmukkaEnd Sub |
PowerPointin automatisointi Excelistä
Voit myös muodostaa yhteyden PowerPointiin muiden sovellusten (kuten Excelin ja Wordin) kautta. Ensimmäisenä vaiheena sinun on viitattava PowerPoint -ilmentymään.
On kaksi tapaa tehdä se - varhainen sitominen ja myöhäinen sidonta .
Avaa PowerPoint - Early Binding
Early Binding -kohdassa sinun on nimenomaisesti asetettava viittaus Microsoft PowerPoint 16 -objektikirjastoon (MS Office 2022) VBE: ssä (Visual Basic Editor) käyttämällä Työkalut-> Viitteet.
123 | 'Varhainen sitominenDim pptApp sovelluksenaAseta pptApp = Uusi PowerPoint.Application |
Avaa PowerPoint - Late Binding
Late Binding -sovellusmuuttuja ilmoitetaan objektina ja VBA -moottori muodostaa yhteyden oikeaan sovellukseen ajon aikana.
123 | 'Myöhäinen sidontaDim pptApp objektinaAseta pptApp = CreateObject ("PowerPoint.Application") |
Tee sovelluksesta näkyvä
Kun olet määrittänyt viittauksen PowperPoint -sovellukseen, sinun on ehkä tehtävä se näkyväksi.
1 | pptApp.Visible = Totta |
Hallitse PowerPointia
Voit käyttää kaikkia menetelmiä PowerPointin esitysten manipulointiin, jotka on kuvattu edellä Excelistä lisäämällä vain yllä luomasi viittaus PowerPointiin.
Esimerkiksi
1 | Presentations.Open ("Oma esitys.pptx") |
täytyy käyttää tästä
1 | pptApp .Presentations.Open ("Oma esitys.pptx") |
Sulje sovellus
Kun olet suorittanut sen, mitä halusit tehdä PowerPoint -sovelluksella, sinun on suljettava se ja julkaistava viite.
12 | pptApp.LopetaAseta pptApp = ei mitään |
Kopioi Excelistä PowerPointiin
Tämä koodi kopioi alueen Excelistä PowerPointiin:
Huomautus: On pidetty mahdollisimman yksinkertaisena näyttää, kuinka Excel -alue voidaan kopioida PowerPoint -ohjelmaan VBA: n avulla.
12345678910111213141516171819 | Sub copyRangeToPresentation ()'Avaa uusi PowerPoint -instanssiAseta pptApp = CreateObject ("PowerPoint.Application")PptAppin kanssa'Luo uusi esitysAseta ppt = .Presentations.Add'Lisää tyhjä diaAseta newSlide = ppt.Slides.Add (1, 12) 'ppLayoutBlank = 12Kopioi alue Active Sheetistä ExcelissäActiveSheet.Range ("A1: E10"). Kopioi'Liitä Powerpointiksi kuvananewSlide.Shapes.PasteSpecial DataType: = 2 '2 = ppPasteEnhancedMetafile'Vaihda PowerPointiin.AktivoidaLopetaEnd Sub |
PowerPoint VBA: n usein kysytyt kysymykset
Mitä makrot ovat PPT: ssä?
Makro on yleinen termi, joka viittaa ohjelmointiohjeiden joukkoon, joka automatisoi tehtävät. PowerPoint (PPT) -makrot automatisoivat tehtävät PowerPointissa VBA -ohjelmointikielellä.
Kuinka voin käyttää VBA: ta PowerPointissa?
Jos haluat käyttää VBA: ta PowerPointissa, avaa VBA -editori (ALT + F11 tai kehittäjä> Visual Basic).
Kuinka luon makron PowerPointissa?
1. Avaa VBA -editori (ALT + F11 tai kehittäjä> Visual Basic)
2. Luo koodimoduuli valitsemalla Lisää> Moduuli
3. Kirjoita "Sub HelloWorld" ja paina Enter
4. Kirjoita rivien "Sub HelloWorld" ja "End Sub" väliin "MsgBox" Hello World! "
5. Olet luonut makron!
6. Suorita makro painamalla F5 -näppäintä
Käsikirjoitus: Vinamra Chandra