Hoe vormen maken en invoegen in PowerPoint met VBA?

Hoe vormen maken en invoegen in PowerPoint met VBA?

Een paar dagen geleden wilde ik de nogal alledaagse taak van het maken van PowerPoint-dia's automatiseren. Bij het automatiseren van PowerPoint werk je meestal met de collectie Slides and Shapes. Dia's spreken voor zich en vormen zijn vrijwel al het andere, inclusief tekstvakken, actieknoppen, media-objecten, labels, afbeeldingen, toelichtingen, stroomdiagrammen enzovoort, enzovoort. Hoewel ik de technieken met PowerPoint zal demonstreren, is een deel van de syntaxis eigenlijk behoorlijk toepasbaar op Microsoft Word en Excel.

Om samen te vatten, voordat u aan de slag gaat met VBA-macroontwikkeling in PowerPoint, moet u uw ontwikkeltabblad hebben ingeschakeld .

Laten we beginnen met het automatisch maken van een presentatie met enkele dia's, zoals weergegeven in deze tutorial: een presentatie maken in VBA .

Nu kunnen we aan de slag met Shapes. Laten we eerst doorgaan en de VBA-editor openen door op Alt + F11 te drukken. Als je de vorige tutorial hebt gevolgd, zou je module 1 in je Modules-lijst moeten hebben (zoals hieronder weergegeven)

Werken met vormen met VBA

Een tekstvak toevoegen met VBA

We beginnen met het toevoegen van een verticaal tekstvak aan onze eerste dia in de presentatie. Voeg de volgende code toe aan Module1, ga je gang en druk op de knop Opslaan (Ctrl+s) en voer je macro uit (druk op F5 of druk op Sub-/gebruikersformulier uitvoeren).

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

Merk op dat u de afmetingen van uw tekstvak vrij eenvoudig kunt wijzigen met VBA. In dit geval zullen we de grootte van de eerste vorm in de tweede dia aanpassen, voel je vrij om deze aan te passen als dat nodig is.

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

Teksteffecten met VBA

Laten we nu aannemen dat we een tekstvak willen toevoegen aan alle dia's in de presentatie, dit keer een beetje visueel aantrekkelijker. Om dat te doen, gebruiken we VBA om aangepaste teksteffecten te maken die we kunnen insluiten in een of meer dia's in de presentatie. We zullen eerst de presentatiedia's doorlopen en vervolgens het teksteffect toevoegen als dat nodig is.

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

Hier is het resultaat ;-):

Hoe vormen maken en invoegen in PowerPoint met VBA?

Merk op dat u net zo goed een eenvoudig watermerk kunt gebruiken om dit specifieke resultaat te bereiken.

PowerPoint-oproepen met VBA

Ons volgende voorbeeld is het toevoegen van highlights aan uw presentatie. In dit voorbeeld voegen we een toelichting toe aan de tweede dia.

Sub CreateCallout()

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

End Sub

Eigenschappen voor een vorm instellen

Veel opmaakeigenschappen van vormen worden niet bepaald door eigenschappen die rechtstreeks van toepassing zijn op het  Shape-  of  ShapeRange  -object. In plaats daarvan worden gerelateerde vormkenmerken gegroepeerd onder secundaire objecten, zoals het  FillFormat-  object, dat alle eigenschappen bevat die betrekking hebben op de vulling van de vorm, of het  LinkFormat-  object, dat alle eigenschappen bevat die uniek zijn voor gekoppelde OLE-objecten. Om eigenschappen voor een vorm in te stellen, moet u eerst het object retourneren dat de reeks gerelateerde vormattributen vertegenwoordigt en vervolgens de eigenschappen van dat geretourneerde object instellen. U gebruikt bijvoorbeeld de  eigenschap Fill om het object FillFormat  te retourneren   en vervolgens stelt u de  eigenschap ForeColor  van het  object FillFormat in  om de voorgrondkleur van de vulling in te stellen voor de opgegeven vorm, zoals weergegeven in het volgende voorbeeld.

V.B

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

Een eigenschap of methode tegelijkertijd op meerdere vormen toepassen

In de gebruikersinterface zijn er enkele bewerkingen die u kunt uitvoeren met verschillende geselecteerde vormen; U kunt bijvoorbeeld meerdere vormen selecteren en al hun individuele vullingen in één keer instellen. Er zijn andere bewerkingen die u alleen kunt uitvoeren als u één enkele vorm hebt geselecteerd; U kunt de tekst in een vorm bijvoorbeeld alleen bewerken als er één vorm is geselecteerd.

In Visual Basic zijn er twee manieren om eigenschappen en methoden toe te passen op een reeks vormen. Op deze twee manieren kunt u elke bewerking uitvoeren die u op een enkele vorm kunt uitvoeren op een reeks vormen, ongeacht of u dezelfde bewerking wel of niet in de gebruikersinterface kunt uitvoeren.

  • Als de bewerking werkt op meerdere geselecteerde vormen in de gebruikersinterface, kunt u dezelfde bewerking uitvoeren in Visual Basic door een  ShapeRange-  collectie samen te stellen die de vormen bevat waarmee u wilt werken, en de juiste eigenschappen en methoden rechtstreeks op de  ShapeRange-  collectie toe te passen.

  • Als de bewerking niet werkt op meerdere geselecteerde vormen in de gebruikersinterface, kunt u de bewerking nog steeds uitvoeren in Visual Basic door de  Shapes-  collectie of een  ShapeRange-  collectie te doorlopen die de vormen bevat waarmee u wilt werken, en de juiste eigenschappen toe te passen. en methoden voor de afzonderlijke  Shape-  objecten in de verzameling.

Veel eigenschappen en methoden die van toepassing zijn op het  Shape-  object en  de ShapeRange-  verzameling mislukken als ze worden toegepast op bepaalde soorten vormen. De eigenschap TextFrame mislukt bijvoorbeeld   als deze wordt toegepast op een vorm die geen tekst kan bevatten. Als u er niet zeker van bent dat op elke vorm in een  ShapeRange-  verzameling een bepaalde eigenschap of methode kan worden toegepast, pas de eigenschap of methode dan niet toe op de  ShapeRange-  verzameling. Als u een van deze eigenschappen of methoden op een verzameling vormen wilt toepassen, moet u de verzameling doorlopen en elke individuele vorm testen om er zeker van te zijn dat het een geschikt vormtype is voordat u de eigenschap of methode erop toepast.

Een eigenschap of methode toepassen op een ShapeRange-verzameling

Als u tegelijkertijd een bewerking op meerdere geselecteerde vormen in de gebruikersinterface kunt uitvoeren, kunt u het programmatische equivalent uitvoeren door een  ShapeRange-  verzameling samen te stellen en er vervolgens de juiste eigenschappen of methoden op toe te passen. In het volgende voorbeeld wordt een vormbereik geconstrueerd dat de AutoVormen met de namen "Grote Ster" en "Kleine Ster" bevat en er een verloopvulling op toepast en er een verloopvulling op toepast.myDocument

V.B

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

Hieronder volgen algemene richtlijnen voor hoe eigenschappen en methoden zich gedragen wanneer ze worden toegepast op een  ShapeRange-  verzameling.

  • Het toepassen van een methode op de verzameling is gelijk aan het toepassen van de methode op elk afzonderlijk  Shape-  object in die verzameling.

  • Het instellen van de waarde van een eigenschap van de verzameling is gelijk aan het instellen van de waarde van de eigenschap van elke individuele vorm in dat bereik.

  • Een eigenschap van de collectie die een constante retourneert, retourneert de waarde van de eigenschap voor een individuele vorm in de collectie als alle vormen in de collectie dezelfde waarde voor die eigenschap hebben. Als niet alle vormen in de verzameling dezelfde waarde voor de eigenschap hebben, wordt de constante 'gemengd' geretourneerd.

  • Een eigenschap van de verzameling die een eenvoudig gegevenstype retourneert (zoals  LongSingle of  String ) retourneert de waarde van de eigenschap voor een individuele vorm als alle vormen in de verzameling dezelfde waarde voor die eigenschap hebben.

  • De waarde van sommige eigenschappen kan alleen worden geretourneerd of ingesteld als er precies één vorm in de verzameling aanwezig is. Als de verzameling meer dan één vorm bevat, treedt er een runtimefout op. Dit is over het algemeen het geval voor het retourneren of instellen van eigenschappen wanneer de equivalente actie in de gebruikersinterface alleen mogelijk is met een enkele vorm (acties zoals het bewerken van tekst in een vorm of het bewerken van de punten van een vrije vorm).

De voorgaande richtlijnen zijn ook van toepassing wanneer u eigenschappen instelt van vormen die zijn gegroepeerd onder secundaire objecten van de  ShapeRange-  collectie, zoals het  FillFormat-  object. Als het secundaire object bewerkingen vertegenwoordigt die kunnen worden uitgevoerd op meerdere geselecteerde objecten in de gebruikersinterface, kunt u het object retourneren uit een  ShapeRange-  verzameling en de eigenschappen ervan instellen. U kunt bijvoorbeeld de  eigenschap Fill gebruiken om het object FillFormat  te retourneren   dat de vullingen van alle vormen in de  ShapeRange-  collectie vertegenwoordigt. Als u de eigenschappen van dit  FillFormat-  object instelt, worden dezelfde eigenschappen ingesteld voor alle afzonderlijke vormen in de  ShapeRange-  collectie.

Door een Shapes- of ShapeRange-verzameling bladeren

Zelfs als u niet tegelijkertijd een bewerking op meerdere vormen in de gebruikersinterface kunt uitvoeren door ze te selecteren en vervolgens een opdracht te gebruiken, kunt u de equivalente actie programmatisch uitvoeren door door de  Shapes-  verzameling te bladeren of door een  ShapeRange-  verzameling die de vormen bevat die u wilt gebruiken. waarmee u wilt werken en de juiste eigenschappen en methoden wilt toepassen op de afzonderlijke  Shape-  objecten in de verzameling. In het volgende voorbeeld worden alle vormen doorlopen en wordt tekst toegevoegd aan elke vorm die een AutoVorm is. en voegt tekst toe aan elke vorm die een AutoVorm is.myDocument

V.B

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

In het volgende voorbeeld wordt een  ShapeRange-  verzameling samengesteld die alle momenteel geselecteerde vormen in het actieve venster bevat, en wordt de tekst in elke vorm in de verzameling ingesteld die tekst kan bevatten.

V.B

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

Vormen uitlijnen, distribueren en groeperen in een vormbereik

Gebruik de  methoden Uitlijnen  en  Verdelen  om een ​​reeks vormen ten opzichte van elkaar of ten opzichte van het document dat ze bevat te positioneren. Gebruik de  Group-  methode of de  Regroup-  methode om één gegroepeerde vorm te vormen uit een reeks vormen.


Gember 2.7.53.0

Gember 2.7.53.0

Ginger is een gratis spelling- en grammaticacontrole.

Blokken

Blokken

Blocks is een intellectueel spel voor leerlingen van de derde klas van de basisschool om hun detectie- en oogvaardigheden te oefenen en wordt door docenten opgenomen in het IT-onderwijsondersteuningsprogramma.

Prezi 6.26

Prezi 6.26

Prezi is een gratis applicatie waarmee u digitale presentaties kunt maken, zowel online als offline.

Mathway

Mathway

Mathway is een zeer nuttige app waarmee u al die wiskundige problemen kunt oplossen waarvoor een complexer hulpmiddel nodig is dan de ingebouwde rekenmachine van uw apparaat.

Adobe Presenter

Adobe Presenter

Adobe Presenter is e-Learning-software uitgegeven door Adobe Systems en beschikbaar op het Microsoft Windows-platform als een Microsoft PowerPoint-plug-in.

Toekan 2.3.0

Toekan 2.3.0

Toucan is een educatief technologieplatform. Hiermee kunt u een nieuwe taal leren terwijl u op gewone, alledaagse websites surft.

ENetViet 24.2

ENetViet 24.2

eNetViet is een applicatie die ouders helpt in contact te komen met de school waar hun kinderen studeren, zodat ze de huidige leersituatie van hun kind duidelijk kunnen begrijpen.

Duolingo

Duolingo

Duolingo - Leer gratis talen, of kortweg Duolingo, is een educatief programma waarmee je veel verschillende talen kunt leren en oefenen.

Snel typen

Snel typen

RapidTyping is een handige en gebruiksvriendelijke tool voor toetsenbordtraining waarmee u uw typsnelheid kunt verbeteren en spelfouten kunt verminderen. Met lessen georganiseerd voor veel verschillende niveaus, leert RapidTyping u hoe u kunt typen of bestaande vaardigheden kunt verbeteren.

MathType 7.4.10.53

MathType 7.4.10.53

MathType is interactieve vergelijkingssoftware van ontwikkelaar Design Science (Dessci), waarmee u wiskundige notaties kunt maken en annoteren voor tekstverwerking, presentaties, eLearning, enz. Deze editor wordt ook gebruikt voor het maken van TeX-, LaTeX- en MathML-documenten.