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.


[100%-ban megoldva] Hogyan lehet kijavítani a „Nyomtatási hiba” üzenetet Windows 10 rendszeren?

[100%-ban megoldva] Hogyan lehet kijavítani a „Nyomtatási hiba” üzenetet Windows 10 rendszeren?

Nyomtatási hibaüzenet fogadása Windows 10 rendszeren, majd kövesse a cikkben található javításokat, és állítsa be a nyomtatót…

Microsoft Teams-felvétel rögzítése és lejátszása

Microsoft Teams-felvétel rögzítése és lejátszása

Könnyedén újralátogathatja megbeszéléseit, ha rögzíti őket. Így rögzítheti és lejátszhatja a Microsoft Teams-felvételt a következő értekezlethez.

Az alapértelmezett alkalmazások visszaállítása Androidon

Az alapértelmezett alkalmazások visszaállítása Androidon

Amikor megnyit egy fájlt, vagy rákattint egy hivatkozásra, Android-eszköze alapértelmezett alkalmazást választ a megnyitásához. Ezzel az útmutatóval visszaállíthatja alapértelmezett alkalmazásait Android rendszeren.

FIGYELMEZTETÉS: Entitlement.diagnostics.office.com tanúsítványhiba

FIGYELMEZTETÉS: Entitlement.diagnostics.office.com tanúsítványhiba

FIGYELMEZTETÉS: Entitlement.diagnostics.office.com tanúsítványhiba

A 10 legnépszerűbb játékwebhely, amelyet az iskola nem blokkolt 2022-ben

A 10 legnépszerűbb játékwebhely, amelyet az iskola nem blokkolt 2022-ben

Az iskolák által nem blokkolt legjobb játékoldalak megismeréséhez olvassa el a cikket, és válassza ki a legjobb feloldott játékok webhelyét iskolák, főiskolák és munkahelyek számára

FIGYELMEZTETÉS: A nyomtató hibaállapotban [HP, Canon, Epson, Zebra & Brother]

FIGYELMEZTETÉS: A nyomtató hibaállapotban [HP, Canon, Epson, Zebra & Brother]

Ha a Windows 10 PC-n hibaállapotban lévő nyomtatóval szembesül, és nem tudja, hogyan kell kezelni, akkor kövesse az alábbi megoldásokat a javításhoz.

A Chromebook biztonsági mentése (2022)

A Chromebook biztonsági mentése (2022)

Ha azt szeretné tudni, hogyan készítsen biztonsági másolatot Chromebookjáról, mi megtaláltuk. További információ arról, hogy miről készül automatikusan biztonsági másolat, és miről nem

Hogyan javítható ki, hogy az Xbox alkalmazás nem nyílik meg a Windows 10 rendszerben [GYORS ÚTMUTATÓ]

Hogyan javítható ki, hogy az Xbox alkalmazás nem nyílik meg a Windows 10 rendszerben [GYORS ÚTMUTATÓ]

Szeretné kijavítani, hogy az Xbox alkalmazás nem nyílik meg a Windows 10 rendszerben, majd kövesse az olyan javításokat, mint az Xbox alkalmazás engedélyezése a szolgáltatásokból, az Xbox alkalmazás visszaállítása, az Xbox alkalmazáscsomag visszaállítása és egyebek.

Mi az a LogiOptions.exe (UNICODE), és biztonságos-e a folyamat?

Mi az a LogiOptions.exe (UNICODE), és biztonságos-e a folyamat?

Ha Logitech billentyűzettel és egerrel rendelkezik, ezt a folyamatot látni fogja. Ez nem rosszindulatú program, de nem elengedhetetlen futtatható fájl a Windows operációs rendszer számára.

Javítva a 1603-as Java frissítési/telepítési hiba a Windows 10 rendszerben

Javítva a 1603-as Java frissítési/telepítési hiba a Windows 10 rendszerben

Olvassa el a cikket, hogy megtudja, hogyan javíthatja ki a Java Update 1603-as hibáját a Windows 10 rendszerben, próbálja ki egyenként a javításokat, és egyszerűen javítsa ki az 1603-as hibát…