Pari päivää sitten halusin automatisoida melko arkipäiväisen tehtävän luoda PowerPoint-dioja. Kun automatisoit PowerPointia, työskentelet yleensä Slides and Shapes -kokoelman kanssa. Slides on melko itsestään selvä, ja muodot ovat melkein kaikkea muuta, mukaan lukien tekstilaatikot, toimintapainikkeet, mediaobjektit, tarrat, kuvat, huomiotekstit, vuokaaviot ja niin edelleen ja niin edelleen. Vaikka aion esitellä tekniikat PowerPointilla, osa syntaksista on itse asiassa melko sovellettavissa Microsoft Wordiin ja Exceliin.
Kertauksena totean, että ennen kuin aloitat VBA-makrokehityksen PowerPointissa, sinun on otettava kehitysvälilehti käyttöön .
Aloitetaan luomalla automaattisesti esitys joissakin dioissa, kuten tässä opetusohjelmassa näytetään: esityksen luominen VBA :ssa .
Nyt voimme alkaa työskennellä Shapesin kanssa. Ensinnäkin, mennään eteenpäin ja avataan VBA-editori painamalla Alt+ F11. Jos noudatit edellistä opetusohjelmaa, moduulin 1 pitäisi olla moduuliluettelossasi (kuten alla näkyy)
Työskentely muotojen kanssa VBA:lla
Tekstilaatikon lisääminen VBA:lla
Aloitamme lisäämällä pystysuoran tekstikentän esityksen ensimmäiseen diaan. Lisää seuraava koodi Module1:een, siirry sitten eteenpäin ja paina Tallenna-painiketta (Ctrl+s) ja Suorita makro (paina F5 tai paina Suorita ali-/käyttäjälomake).
Sub CreateTextBox()
Set MySlide = ActivePresentation.Slides(2)
With MySlide.Shapes
.AddTextbox(Orientation:=msoTextOrientationVertical, _
Left:=90, Top:=200, Width:=80, _
Height:=200).TextFrame.TextRange.Text _
= ("This is my vertical text box")
End With
End Sub
Huomaa, että voit muuttaa tekstilaatikon kokoa melko helposti VBA: lla. Tässä tapauksessa muutamme ensimmäisen muodon kokoa toisessa diassa, voit muokata sitä tarvittaessa.
Sub ResizeText()
Set MyShape = ActivePresentation.Slides(2).Shapes(1)
'Add your required dimensions as needed below
With MyShape
.Width = 200
.Height = 35
End With
End Sub
Tekstitehosteet VBA:lla
Oletetaan nyt, että haluamme lisätä tekstilaatikon kaikkiin esityksen dioihin, tällä kertaa hieman visuaalisesti houkuttelevammin. Tätä varten luomme VBA:n avulla mukautettuja tekstitehosteita, jotka voimme upottaa esityksen yhteen tai useampaan diaan. Käymme ensin läpi esitysdiat ja lisäämme sitten tekstitehosteen tarpeen mukaan.
Sub SetEffects()
Dim i As Integer
For i = 1 To ActivePresentation.Slides.Count
ActivePresentation.Slides(i) _
.Shapes.AddTextEffect msoTextEffect12, "Draft for Review", _
"Segoe UI", 32, msoTrue, msoTrue, 650, 50
Next
End Sub
Tässä tulos ;-):

Huomaa, että voit yhtä hyvin käyttää yksinkertaista vesileimaa saavuttaaksesi tämän tietyn tuloksen.
PowerPoint-huomiotekstit VBA:lla
Seuraava esimerkkimme on huomiotekstien lisääminen esitykseen. Tässä esimerkissä lisäämme huomiotekstin toiseen diaan.
Sub CreateCallout()
ActivePresentation.Slides(2).Shapes.AddCallout(Type:=msoCalloutTwo, Left:=200, Top:=50, _ Width:=300, Height:=100).TextFrame.TextRange.Text = "My Callout"
End Sub
Muodon ominaisuuksien asettaminen
Monia muotojen muotoiluominaisuuksia ei määritetä ominaisuuksilla, jotka koskevat suoraan Shape- tai ShapeRange -objektia. Sen sijaan liittyvät muotoattribuutit ryhmitellään toissijaisiin objekteihin, kuten FillFormat- objektiin, joka sisältää kaikki muodon täyttöön liittyvät ominaisuudet, tai LinkFormat -objektiin, joka sisältää kaikki linkitetyille OLE-objekteille ainutlaatuiset ominaisuudet. Jos haluat määrittää muodon ominaisuudet, sinun on ensin palautettava objekti, joka edustaa toisiinsa liittyvien muotomääritteiden joukkoa, ja asetettava sitten palautetun objektin ominaisuudet. Käytät esimerkiksi Fill- ominaisuutta palauttamaan FillFormat- objektin ja asetat sitten FillFormat- objektin ForeColor- ominaisuuden määrittämään täyttöetualan värin määritetylle muodolle seuraavan esimerkin mukaisesti.
VB
Set myDocument = ActivePresentation.Slides(1)
myDocument.Shapes(1).Fill.ForeColor.RGB = RGB(255, 0, 0)
Ominaisuuden tai menetelmän soveltaminen useisiin muotoihin samanaikaisesti
Käyttöliittymässä on joitain toimintoja, joita voit suorittaa useilla valituilla muodoilla; Voit esimerkiksi valita useita muotoja ja määrittää niiden kaikki yksittäiset täytteet kerralla. On muitakin toimintoja, joita voit suorittaa vain yhdellä valitulla muodolla; Voit esimerkiksi muokata muodon tekstiä vain, jos yksi muoto on valittuna.
Visual Basicissa on kaksi tapaa soveltaa ominaisuuksia ja menetelmiä joukkoon muotoja. Näillä kahdella tavalla voit suorittaa minkä tahansa toiminnon, jonka voit suorittaa yhdelle muodolle useille muodoille, riippumatta siitä, voitko suorittaa saman toiminnon käyttöliittymässä vai et.
-
Jos toiminto toimii useille valituille muodoille käyttöliittymässä, voit suorittaa saman toiminnon Visual Basicissa rakentamalla ShapeRange- kokoelman, joka sisältää muodot, joita haluat työstää, ja ottamalla asianmukaiset ominaisuudet ja menetelmät suoraan ShapeRange- kokoelmaan .
-
Jos toiminto ei toimi useille valituille muodoille käyttöliittymässä, voit silti suorittaa toiminnon Visual Basicissa selaamalla läpi Shape- kokoelman tai ShapeRange- kokoelman, joka sisältää muodot, joita haluat työstää, ja käyttämällä asianmukaisia ominaisuuksia. ja menetelmät kokoelman yksittäisiin Shape- objekteihin.
Monet Shape- objektia ja ShapeRange- kokoelmaa koskevat ominaisuudet ja menetelmät epäonnistuvat, jos niitä käytetään tietyntyyppisiin muotoihin. Esimerkiksi TextFrame -ominaisuus epäonnistuu, jos sitä käytetään muotoon, joka ei voi sisältää tekstiä. Jos et ole varma, että jokaiseen ShapeRange- kokoelman muotoon voidaan soveltaa tiettyä ominaisuutta tai menetelmää, älä käytä ominaisuutta tai menetelmää ShapeRange- kokoelmassa . Jos haluat käyttää jotakin näistä ominaisuuksista tai menetelmistä muotokokoelmassa, sinun on selattava kokoelmaa ja testattava jokainen yksittäinen muoto varmistaaksesi, että se on sopiva muoto, ennen kuin käytät ominaisuutta tai menetelmää siihen.
Ominaisuuden tai menetelmän käyttäminen ShapeRange-kokoelmaan
Jos voit suorittaa toiminnon useille valituille muodoille käyttöliittymässä samanaikaisesti, voit tehdä ohjelmallisen vastineen rakentamalla ShapeRange- kokoelman ja soveltamalla siihen sopivia ominaisuuksia tai menetelmiä. Seuraava esimerkki muodostaa muotoalueen, joka sisältää "Big Star"- ja "Little Star"-nimiset automaattiset muodot, ja lisää niihin gradienttitäytön ja liukuväritäytön.myDocument
VB
Set myDocument = ActivePresentation.Slides(1)
Set myRange = myDocument.Shapes _
.Range(Array("Big Star", "Little Star"))
myRange.Fill.PresetGradient msoGradientHorizontal, _
1, msoGradientBrass
Seuraavat ovat yleisiä ohjeita ominaisuuksien ja menetelmien käyttäytymisestä, kun niitä sovelletaan ShapeRange- kokoelmaan.
-
Metodin käyttäminen kokoelmaan vastaa menetelmän käyttämistä jokaiseen yksittäiseen Shape- objektiin kokoelmassa.
-
Kokoelman ominaisuuden arvon asettaminen vastaa kunkin yksittäisen muodon ominaisuuden arvon asettamista kyseisellä alueella.
-
Kokoelman ominaisuus, joka palauttaa vakion, palauttaa ominaisuuden arvon kokoelman yksittäiselle muodolle, jos kaikilla kokoelman muodoilla on sama arvo kyseiselle ominaisuudelle. Jos kaikilla kokoelman muodoilla ei ole samaa arvoa ominaisuudelle, se palauttaa "sekoitetun" vakion.
-
Kokoelman ominaisuus, joka palauttaa yksinkertaisen tietotyypin (kuten Long , Single tai String ), palauttaa ominaisuuden arvon yksittäiselle muodolle, jos kaikilla kokoelman muodoilla on sama arvo tälle ominaisuudelle.
-
Joidenkin ominaisuuksien arvo voidaan palauttaa tai asettaa vain, jos kokoelmassa on täsmälleen yksi muoto. Jos kokoelmassa on useampi kuin yksi muoto, tapahtuu ajonaikainen virhe. Tämä pätee yleensä ominaisuuksien palauttamiseen tai asettamiseen, kun vastaava toiminta käyttöliittymässä on mahdollista vain yhdellä muodolla (toiminnot, kuten tekstin muokkaaminen muodossa tai vapaan muodon pisteiden muokkaaminen).
Edelliset ohjeet pätevät myös, kun määrität muotojen ominaisuuksia, jotka on ryhmitelty ShapeRange- kokoelman toissijaisiin objekteihin, kuten FillFormat -objektiin. Jos toissijainen objekti edustaa toimintoja, jotka voidaan suorittaa useille valituille objekteille käyttöliittymässä, voit palauttaa objektin ShapeRange- kokoelmasta ja määrittää sen ominaisuudet. Voit esimerkiksi käyttää Fill- ominaisuutta palauttaaksesi FillFormat- objektin, joka edustaa kaikkien ShapeRange- kokoelman muotojen täyttöjä . Tämän FillFormat- objektin ominaisuuksien asettaminen asettaa samat ominaisuudet kaikille ShapeRange- kokoelman yksittäisille muodoille.
Shape- tai ShapeRange-kokoelman läpi kiertäminen
Vaikka et pystyisi suorittamaan toimintoa useille muodoille samanaikaisesti käyttöliittymässä valitsemalla ne ja sitten komennolla, voit suorittaa vastaavan toiminnon ohjelmallisesti selaamalla Muodot- kokoelmaa tai ShapeRange -kokoelmaa, joka sisältää haluamasi muodot. haluat työskennellä ja soveltaa sopivia ominaisuuksia ja menetelmiä kokoelman yksittäisiin Shape- objekteihin. Seuraava esimerkki käy läpi kaikki muodot ja lisää tekstiä jokaiseen muotoon, joka on automaattinen muoto. ja lisää tekstiä jokaiseen muotoon, joka on automaattinen muoto.myDocument
VB
Set myDocument = ActivePresentation.Slides(1)
For Each sh In myDocument.Shapes
If sh.Type = msoAutoShape Then
sh.TextFrame.TextRange.InsertAfter " (version 1)"
End If
Next
Seuraava esimerkki muodostaa ShapeRange- kokoelman, joka sisältää kaikki aktiivisessa ikkunassa valitut muodot ja asettaa tekstin jokaiseen kokoelman muotoon, joka voi sisältää tekstiä.
VB
For Each sh in ActiveWindow.Selection.ShapeRange
If sh.HasTextFrame Then
sh.TextFrame.TextRange = "Initially selected"
End If
Next
Tasaa, jakaa ja ryhmitellä muotoja muotoalueella
Käytä Tasaa ja jaa -menetelmiä asettaaksesi joukko muotoja suhteessa toisiinsa tai suhteessa ne sisältävään asiakirjaan. Käytä Ryhmittele- tai Ryhmittele uudelleen -menetelmää muodostaaksesi yksittäisen ryhmitellyn muodon joukosta muotoja.