Hogyan lehet alakzatokat létrehozni és beszúrni a PowerPointba VBA segítségével?

Néhány nappal ezelőtt automatizálni akartam azt a meglehetősen hétköznapi feladatot, hogy néhány PowerPoint-diát készítsek. A PowerPoint automatizálása során általában a Diák és alakzatok gyűjteményével dolgozik. A Diák meglehetősen magától értetődőek, az alakzatok pedig nagyjából minden mást, beleértve a szövegdobozokat, a műveletgombokat, a médiaobjektumokat, a címkéket, a képeket, a kiemeléseket, a folyamatábrákat és így tovább, és így tovább. Bár bemutatom a PowerPoint technikáit, a szintaxis egy része valóban jól alkalmazható a Microsoft Word és az Excel esetében.

Összefoglalva, mielőtt elkezdené a VBA-makrófejlesztést a PowerPointban, engedélyeznie kell a fejlesztési lapot .

Először is kezdjük azzal, hogy automatikusan létrehozunk egy prezentációt néhány diával, amint az ebben az oktatóanyagban látható: bemutató létrehozása VBA-ban .

Most elkezdhetünk dolgozni a Shapes-szel. Először is nyissa meg a VBA-szerkesztőt az Alt+F11 billentyűkombináció megnyomásával. Ha követte az előző oktatóprogramot, akkor az 1. modulnak szerepelnie kell a Modulok listájában (lásd alább).

Alakzatokkal való munkavégzés VBA-val

Szövegdoboz hozzáadása VBA-val

Kezdjük azzal, hogy függőleges szövegdobozt adunk a bemutató első diájához. Adja hozzá a következő kódot az 1. modulhoz, majd nyomja meg a Mentés gombot (Ctrl+s), majd futtassa a makrót (nyomja meg az F5 billentyűt vagy az Al/Felhasználói űrlap futtatása).

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

Vegye figyelembe, hogy a szövegdoboz méreteit meglehetősen egyszerűen át tudja méretezni a VBA segítségével. Ebben az esetben a második dián átméretezzük az első alakzatot, szükség szerint módosíthatja.

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

Szövegeffektusok VBA-val

Tételezzük fel most, hogy a prezentáció összes diájához szeretnénk szövegdobozt hozzáadni, ezúttal egy kicsit tetszetősebben. Ehhez a VBA segítségével egyedi szövegeffektusokat készítünk, amelyeket be tudunk ágyazni a prezentáció egy vagy több diájába. Először végignézzük a bemutató diákat, majd szükség szerint hozzáadjuk a szövegeffektust.

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

Íme az eredmény ;-):

Hogyan lehet alakzatokat létrehozni és beszúrni a PowerPointba VBA segítségével?

Vegye figyelembe, hogy használhat egy egyszerű vízjelet is ennek a konkrét eredménynek az eléréséhez.

PowerPoint kiemelések VBA-val

A következő példánk az lesz, hogy kiemeléseket ad hozzá a prezentációhoz. Ebben a példában kiemelést adunk a második diához.

Sub CreateCallout()

ActivePresentation.Slides(2).Shapes.AddCallout(Type:=msoCalloutTwo, Left:=200, Top:=50, _  Width:=300, Height:=100).TextFrame.TextRange.Text = "My Callout"

End Sub

Egy alakzat tulajdonságainak beállítása

Az alakzatok sok formázási tulajdonságát nem olyan tulajdonságok állítják be, amelyek közvetlenül az  Shape  vagy  ShapeRange  objektumra vonatkoznak. Ehelyett a kapcsolódó alakzat attribútumok a másodlagos objektumok alá vannak csoportosítva, mint például a  FillFormat  objektum, amely az alakzat kitöltéséhez kapcsolódó összes tulajdonságot tartalmazza, vagy a  LinkFormat  objektum, amely tartalmazza az összes olyan tulajdonságot, amely a csatolt OLE objektumokra jellemző. Egy alakzat tulajdonságainak beállításához először vissza kell adnia azt az objektumot, amely a kapcsolódó alakattribútumok halmazát reprezentálja, majd be kell állítania a visszaadott objektum tulajdonságait. Például a  Fill tulajdonságot használja a FillFormat objektum  visszaadásához   , majd  a FillFormat objektum ForeColor  tulajdonságával  állítsa be  a kitöltési előtér színét a megadott alakzathoz, ahogy az a következő példában látható.

VB

Set myDocument = ActivePresentation.Slides(1)
myDocument.Shapes(1).Fill.ForeColor.RGB = RGB(255, 0, 0)

Egy tulajdonság vagy módszer alkalmazása több alakzatra egyidejűleg

A felhasználói felületen van néhány művelet, amelyet több kiválasztott alakzattal is végrehajthat; például kiválaszthat több alakzatot, és egyszerre beállíthatja az összes egyedi kitöltést. Vannak más műveletek is, amelyeket csak egyetlen kiválasztott alakzattal hajthat végre; például csak akkor szerkesztheti az alakzat szövegét, ha egyetlen alakzat van kijelölve.

A Visual Basicben kétféleképpen lehet tulajdonságokat és módszereket alkalmazni egy alakzatkészletre. Ez a két mód lehetővé teszi bármely olyan művelet végrehajtását, amelyet egyetlen alakzaton végrehajthat egy sor alakzaton, függetlenül attól, hogy ugyanazt a műveletet végrehajthatja-e a felhasználói felületen vagy sem.

  • Ha a művelet több kiválasztott alakzaton működik a felhasználói felületen, akkor ugyanezt a műveletet a Visual Basicben is végrehajthatja úgy, hogy létrehoz egy  ShapeRange  gyűjteményt, amely tartalmazza a dolgozni kívánt alakzatokat, és a megfelelő tulajdonságokat és metódusokat közvetlenül a  ShapeRange  gyűjteményre alkalmazza.

  • Ha a művelet nem működik több kiválasztott alakzaton a felhasználói felületen, akkor is végrehajthatja a műveletet a Visual Basic rendszerben úgy, hogy a  Shapes  gyűjteményben vagy   a kezelni kívánt alakzatokat tartalmazó ShapeRange gyűjteményben hurkol, és alkalmazza a megfelelő tulajdonságokat. és metódusokat  a gyűjteményben lévő egyes  Shape objektumokhoz.

A Shape  objektumra és  a ShapeRange gyűjteményre vonatkozó számos tulajdonság és módszer   meghiúsul, ha bizonyos típusú alakzatokra alkalmazzák. Például a  TextFrame  tulajdonság meghiúsul, ha olyan alakzatra alkalmazza, amely nem tartalmazhat szöveget. Ha nem biztos abban, hogy egy  ShapeRange  gyűjteményben minden alakzathoz alkalmazható egy bizonyos tulajdonság vagy metódus, akkor ne alkalmazza a tulajdonságot vagy metódust a  ShapeRange  gyűjteményre. Ha e tulajdonságok vagy módszerek valamelyikét alakzatgyűjteményre szeretné alkalmazni, akkor a tulajdonság vagy módszer alkalmazása előtt végig kell böngésznie a gyűjteményt, és tesztelnie kell az egyes alakzatokat, hogy megbizonyosodjon arról, hogy megfelelő típusú-e.

Tulajdonság vagy metódus alkalmazása ShapeRange gyűjteményre

Ha egyszerre több kiválasztott alakzaton is végrehajthat műveletet a felhasználói felületen, akkor a programozott megfelelőt úgy hajthatja végre, hogy létrehoz egy  ShapeRange  gyűjteményt, majd alkalmazza rá a megfelelő tulajdonságokat vagy metódusokat. A következő példa egy olyan alaktartományt hoz létre, amely tartalmazza a "Nagy csillag" és a "Kiscsillag" elnevezésű automatikus alakzatokat, és színátmenetes kitöltést alkalmaz rájuk, majd színátmenetes kitöltést alkalmaz rájuk.myDocument

VB

Set myDocument = ActivePresentation.Slides(1) 
Set myRange = myDocument.Shapes _ 
    .Range(Array("Big Star", "Little Star")) 
myRange.Fill.PresetGradient msoGradientHorizontal, _ 
    1, msoGradientBrass

Az alábbiakban általános irányelvek találhatók arra vonatkozóan, hogy a tulajdonságok és módszerek hogyan viselkednek, amikor ShapeRange- gyűjteményre alkalmazzák őket   .

  • Egy metódus gyűjteményre történő alkalmazása egyenértékű a metódus alkalmazásával   a gyűjteményben lévő egyes Shape objektumokra.

  • A gyűjtemény egy tulajdonsága értékének beállítása megegyezik az adott tartományban lévő egyes alakzatok tulajdonság értékének beállításával.

  • A gyűjtemény olyan tulajdonsága, amely egy állandót ad vissza, visszaadja a gyűjtemény egy egyedi alakzatának tulajdonság értékét, ha a gyűjteményben lévő összes alakzatnak azonos értéke van az adott tulajdonsághoz. Ha a gyűjteményben nem minden alakzatnak ugyanaz az értéke, akkor a "vegyes" állandót adja vissza.

  • A gyűjtemény olyan tulajdonsága, amely egy egyszerű adattípust (például  LongSingle vagy  String ) ad vissza, visszaadja a tulajdonság értékét egy egyedi alakzathoz, ha a gyűjteményben lévő összes alakzatnak ugyanaz az értéke az adott tulajdonsághoz.

  • Egyes tulajdonságok értéke csak akkor adható vissza vagy állítható be, ha pontosan egy alakzat van a gyűjteményben. Ha egynél több alakzat van a gyűjteményben, futási hiba történik. Általában ez a helyzet a tulajdonságok visszaadásánál vagy beállításánál, amikor az egyenértékű művelet a felhasználói felületen csak egyetlen alakzattal lehetséges (például szövegszerkesztés egy alakzatban vagy egy szabad formájú pontok szerkesztése).

Az előző irányelvek akkor is érvényesek, amikor olyan alakzatok tulajdonságait állítja be, amelyek a  ShapeRange  gyűjtemény másodlagos objektumai, például a  FillFormat  objektum alá vannak csoportosítva. Ha a másodlagos objektum olyan műveleteket képvisel, amelyek a felhasználói felületen több kiválasztott objektumon is végrehajthatók, akkor visszaadhatja az objektumot egy  ShapeRange  gyűjteményből, és beállíthatja annak tulajdonságait. A Fill  tulajdonság  segítségével például visszaadhatja  a FillFormat objektumot, amely a ShapeRange gyűjtemény  összes alakzatának kitöltését reprezentálja   . A FillFormat objektum tulajdonságainak beállítása  ugyanazokat a tulajdonságokat állítja be a ShapeRange gyűjteményben  található összes egyedi alakzathoz   .

A Shapes vagy ShapeRange gyűjtemény áthaladása

Még akkor is, ha a felhasználói felületen nem tud egyszerre műveletet végrehajtani több alakzaton, ha kijelöli őket, majd parancsot használ, az egyenértékű műveletet programozottan is végrehajthatja a  Shapes  gyűjteményben vagy az   Ön által megadott alakzatokat tartalmazó ShapeRange gyűjteményben. szeretne dolgozni, és alkalmazza a megfelelő tulajdonságokat és módszereket a   gyűjtemény egyes Shape objektumaira. A következő példa végigfut az összes alakzaton, és szöveget ad hozzá minden egyes alakzathoz, amely automatikus alakzat. és szöveget ad hozzá minden egyes alakzathoz, amely automatikus alakzat.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

A következő példa olyan  ShapeRange  gyűjteményt hoz létre, amely tartalmazza az aktív ablakban lévő összes aktuálisan kijelölt alakzatot, és beállítja a szöveget a gyűjtemény minden olyan alakzatában, amely szöveget tartalmazhat.

VB

For Each sh in ActiveWindow.Selection.ShapeRange
    If sh.HasTextFrame Then
        sh.TextFrame.TextRange = "Initially selected"
    End If
Next

Alakzatok igazítása, elosztása és csoportosítása egy alaktartományban

Használja az  Igazítás  és  Elosztás  metódusokat az alakzatok egymáshoz vagy az azokat tartalmazó dokumentumhoz viszonyított pozicionálásához. Használja a  Csoport  vagy az  Újracsoport  módszert egyetlen csoportos alakzat létrehozásához alakzatok halmazából.

Leave a Comment

Hogyan lehet élő közvetítést menteni a Twitch-en? [KIFEJEZETT]

Hogyan lehet élő közvetítést menteni a Twitch-en? [KIFEJEZETT]

Ebből a cikkből megtudhatja, hogyan mentheti el az élő közvetítéseket a Twitch-en a VOD-ok vagy kiemelések segítségével PC-n, Xboxon, PS4-en, PS5-ön, iPhone-on és Androidon…

Portok megnyitása Linux alatt

Portok megnyitása Linux alatt

Ha külső kapcsolatokat szeretne engedélyezni egy számítógéphez vagy szerverhez, meg kell nyitnia a megfelelő portot. A Linux-felhasználók ennek a hasznos útmutatónak a segítségével nyithatnak portokat.

Képernyőképek készítése inkognitó módban Androidon

Képernyőképek készítése inkognitó módban Androidon

Képernyőképek készítése inkognitó módban Androidon. Fedezze fel, hogyan készíthet képernyőképeket privát böngészés közben a Chrome, Edge, Firefox és Opera böngészőkben.

[JAVÍTOTT] „A Windows előkészítése, ne kapcsolja ki a számítógépet” a Windows 10 rendszerben

[JAVÍTOTT] „A Windows előkészítése, ne kapcsolja ki a számítógépet” a Windows 10 rendszerben

Javítsa ki a Windows elakadását a felsorolt ​​megoldások követésével. Íme a legjobb tippek: várjon 2-3 órát, hajtsa végre a rendszer-visszaállítást, indítsa el a javítást és mások...

Hogyan lehet egyszerűen nagybetűs szövegre váltani a Microsoft Excel 2016 és 2019 programban?

Hogyan lehet egyszerűen nagybetűs szövegre váltani a Microsoft Excel 2016 és 2019 programban?

Ismerje meg, hogyan írhat egyszerűen nagybetűs szöveget a Word és az Excel 2016 és 2019 programban

Rocket League Runtime Error javítása [lépésről lépésre]

Rocket League Runtime Error javítása [lépésről lépésre]

Rocket League futásidejű hibával szembesül? Szerezze meg a legjobb hibaelhárítási megoldásokat a hiba egy percen belüli kijavításához, és folytassa a játékot könnyedén.

Billentyűparancs hozzárendelése a Google Chrome könyvjelzőihez

Billentyűparancs hozzárendelése a Google Chrome könyvjelzőihez

Gyorsan szeretné megnyitni kedvenc webhelyeit a Google Chrome-ban? Ehhez billentyűparancsokat állíthat be harmadik féltől származó bővítmények használatával. Itt van, hogyan.

A Microsoft Teams nem tölt be: 6 javítás

A Microsoft Teams nem tölt be: 6 javítás

A Microsoft Teams nagyszerű együttműködési alkalmazás a vállalkozások számára, de csak akkor, ha megfelelően működik. Ha nem töltődik be, ez az útmutató segíthet felfedezni a hibák lehetőségeit és javítani az alkalmazást.

Hogyan állapítható meg, ha valaki letiltott téged a Discordon

Hogyan állapítható meg, ha valaki letiltott téged a Discordon

Ha valaki letilt téged a Discordon, nem kapsz róla értesítést. Ismerje meg, hogyan állapíthatja meg, hogy valaki letiltott-e téged a Discordon.

Javítás: PCI titkosítási/dekódolási vezérlő-illesztőprogram-probléma

Javítás: PCI titkosítási/dekódolási vezérlő-illesztőprogram-probléma

Ismerje meg, hogyan javíthatja ki a PCI titkosítási/dekódolási vezérlő-illesztőprogram problémáját Windows 10 vagy 11 rendszeren, és kezdje el könnyedén használni a rendszert.