Hur skapar och infogar man former i PowerPoint med VBA?

För några dagar sedan ville jag automatisera den ganska vardagliga uppgiften att skapa några PowerPoint-bilder. När du automatiserar PowerPoint arbetar du vanligtvis med Slides and Shapes-samlingen. Slides är ganska självförklarande, och former är i stort sett allt annat inklusive textrutor, åtgärdsknappar, mediaobjekt, etiketter, bilder, bildtexter, flödesscheman och så vidare och så vidare. Även om jag kommer att visa upp teknikerna med PowerPoint, är en del av syntaxen faktiskt ganska tillämplig på Microsoft Word och Excel.

Bara för att sammanfatta, innan du börjar med VBA-makroutveckling i PowerPoint måste du ha din utvecklingsflik aktiverad .

Först och främst, låt oss börja med att automatiskt skapa en presentation med några bilder som visas i denna handledning: skapa en presentation i VBA .

Nu kan vi börja arbeta med Shapes. Först och främst, låt oss gå vidare och öppna VBA Editor genom att trycka på Alt+ F11. Om du följde den föregående handledningen bör du ha modul 1 i din modullista (som visas nedan)

Arbeta med former med VBA

Lägga till en textruta med VBA

Vi börjar med att lägga till en vertikal textruta till vår första bild i presentationen. Lägg till följande kod till Module1, fortsätt sedan och tryck på Spara-knappen (Ctrl+s) och kör ditt makro (tryck F5 eller tryck Kör Sub/User Form).

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

Observera att du ganska enkelt kan ändra storlek på dina textrutadimensioner med VBA. I det här fallet kommer vi att ändra storlek på den första formen i den andra bilden, ändra gärna efter behov.

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

Texteffekter med VBA

Låt oss nu anta att vi vill lägga till en textruta till alla bilder i presentationen, den här gången lite mer visuellt tilltalande. För att göra det använder vi VBA för att skapa anpassade texteffekter som vi kan bädda in i en eller flera bilder i presentationen. Vi går först igenom presentationsbilderna och lägger sedan till texteffekten efter behov.

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

Här är resultatet ;-):

Hur skapar och infogar man former i PowerPoint med VBA?

Observera att du lika gärna kan använda en enkel vattenstämpel för att uppnå detta specifika resultat.

PowerPoint-texttexter med VBA

Vårt nästa exempel kommer att lägga till bildtexter till din presentation. I det här exemplet lägger vi till en bildtext på den andra bilden.

Sub CreateCallout()

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

End Sub

Ställa in egenskaper för en form

Många formateringsegenskaper för former ställs inte in av egenskaper som gäller direkt för  Shape-  eller  ShapeRange  -objektet. Istället grupperas relaterade formattribut under sekundära objekt, till exempel  FillFormat-  objektet, som innehåller alla egenskaper som relaterar till formens fyllning, eller  LinkFormat  -objektet, som innehåller alla egenskaper som är unika för länkade OLE-objekt. För att ställa in egenskaper för en form måste du först returnera objektet som representerar uppsättningen av relaterade formattribut och sedan ange egenskaper för det returnerade objektet. Till exempel använder du  Fill-  egenskapen för att returnera  FillFormat-  objektet och sedan anger du  ForeColor-  egenskapen för  FillFormat  -objektet för att ställa in fyllningsförgrundsfärgen för den angivna formen, som visas i följande exempel.

VB

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

Att tillämpa en egenskap eller metod på flera former samtidigt

I användargränssnittet finns det några operationer du kan utföra med flera valda former; till exempel kan du välja flera former och ställa in alla deras individuella fyllningar på en gång. Det finns andra operationer som du bara kan utföra med en enda form vald; till exempel kan du bara redigera texten i en form om en enskild form är markerad.

I Visual Basic finns det två sätt att tillämpa egenskaper och metoder på en uppsättning former. Dessa två sätt låter dig utföra vilken operation som helst som du kan utföra på en enda form på en rad former, oavsett om du kan utföra samma operation i användargränssnittet eller inte.

  • Om operationen fungerar på flera valda former i användargränssnittet kan du utföra samma operation i Visual Basic genom att konstruera en  ShapeRange-  samling som innehåller de former du vill arbeta med, och tillämpa lämpliga egenskaper och metoder direkt på  ShapeRange  -samlingen.

  • Om operationen inte fungerar på flera valda former i användargränssnittet, kan du fortfarande utföra operationen i Visual Basic genom att gå igenom  Shapes-  samlingen eller genom en  ShapeRange-  samling som innehåller de former du vill arbeta med, och tillämpa lämpliga egenskaper och metoder till de enskilda  Shape  -objekten i samlingen.

Många egenskaper och metoder som gäller  Shape-  objektet och  ShapeRange  -samlingen misslyckas om de tillämpas på vissa typer av former. Till exempel  misslyckas egenskapen TextFrame  om den tillämpas på en form som inte kan innehålla text. Om du inte är säker på att varje form i en  ShapeRange-  samling kan ha en viss egenskap eller metod applicerad på sig, använd inte egenskapen eller metoden på  ShapeRange  -samlingen. Om du vill tillämpa en av dessa egenskaper eller metoder på en samling former måste du gå igenom samlingen och testa varje enskild form för att säkerställa att det är en lämplig typ av form innan du applicerar egenskapen eller metoden på den.

Tillämpa en egenskap eller metod på en ShapeRange-samling

Om du kan utföra en operation på flera valda former i användargränssnittet samtidigt, kan du göra den programmatiska motsvarigheten genom att konstruera en  ShapeRange-  samling och sedan tillämpa lämpliga egenskaper eller metoder på den. Följande exempel konstruerar ett formintervall som innehåller autoformer som heter "Big Star" och "Little Star" på och applicerar en gradientfyllning på dem och tillämpar en gradientfyllning på dem.myDocument

VB

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

Följande är allmänna riktlinjer för hur egenskaper och metoder beter sig när de tillämpas på en  ShapeRange  -samling.

  • Att tillämpa en metod på samlingen motsvarar att tillämpa metoden på varje enskilt  Shape-  objekt i den samlingen.

  • Att ställa in värdet på en egenskap i samlingen motsvarar att ställa in värdet på egenskapen för varje enskild form i det intervallet.

  • En egenskap i samlingen som returnerar en konstant returnerar värdet av egenskapen för en enskild form i samlingen om alla former i samlingen har samma värde för den egenskapen. Om inte alla former i samlingen har samma värde för egenskapen returnerar den den "blandade" konstanten.

  • En egenskap i samlingen som returnerar en enkel datatyp (som  LongSingle eller  String ) returnerar värdet för egenskapen för en enskild form om alla former i samlingen har samma värde för den egenskapen.

  • Värdet på vissa egenskaper kan endast returneras eller ställas in om det finns exakt en form i samlingen. Om det finns mer än en form i samlingen uppstår ett körtidsfel. Detta är i allmänhet fallet för att returnera eller ställa in egenskaper när motsvarande åtgärd i användargränssnittet endast är möjlig med en enda form (åtgärder som att redigera text i en form eller redigera punkterna i en friform).

De föregående riktlinjerna gäller även när du ställer in egenskaper för former som är grupperade under sekundära objekt i  ShapeRange  -samlingen, till exempel  FillFormat-  objektet. Om det sekundära objektet representerar operationer som kan utföras på flera valda objekt i användargränssnittet, kommer du att kunna returnera objektet från en  ShapeRange  -samling och ställa in dess egenskaper. Du kan till exempel använda  Fill-  egenskapen för att returnera  FillFormat  -objektet som representerar fyllningarna för alla former i  ShapeRange  -samlingen. Om du ställer in egenskaperna för detta  FillFormat-  objekt kommer samma egenskaper att ställas in för alla individuella former i  ShapeRange  -samlingen.

Gå igenom en Shapes- eller ShapeRange-samling

Även om du inte kan utföra en operation på flera former i användargränssnittet samtidigt genom att markera dem och sedan använda ett kommando, kan du utföra motsvarande åtgärd programmatiskt genom att loopa genom Shapes-  samlingen  eller genom en  ShapeRange  -samling som innehåller de former du vill arbeta med och tillämpa lämpliga egenskaper och metoder på de enskilda  Shape  -objekten i samlingen. Följande exempel går igenom alla former på och lägger till text till varje form som är en AutoShape. och lägger till text till varje form som är en AutoShape.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

Följande exempel konstruerar  ShapeRange-  samlingen som innehåller alla för närvarande valda former i det aktiva fönstret och ställer in texten i varje form i samlingen som kan innehålla text.

VB

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

Justera, fördela och gruppera former i ett formintervall

Använd  metoderna Justera  och  distribuera  för att placera en uppsättning former i förhållande till varandra eller i förhållande till dokumentet som innehåller dem. Använd  gruppmetoden  eller  omgruppera  metoden för att bilda en enda grupperad form från en uppsättning former.


[100% löst] Hur åtgärdar jag meddelandet Fel vid utskrift i Windows 10?

[100% löst] Hur åtgärdar jag meddelandet Fel vid utskrift i Windows 10?

Får felmeddelande om utskrift på ditt Windows 10-system, följ sedan korrigeringarna i artikeln och få din skrivare på rätt spår...

Hur man fångar och spelar en Microsoft Teams-inspelning

Hur man fångar och spelar en Microsoft Teams-inspelning

Du kan enkelt besöka dina möten igen om du spelar in dem. Så här spelar du in en Microsoft Teams-inspelning för ditt nästa möte.

Hur man återställer standardappar på Android

Hur man återställer standardappar på Android

När du öppnar en fil eller klickar på en länk väljer din Android-enhet en standardapp för att öppna den. Du kan återställa dina standardappar på Android med den här guiden.

FIXAT: Entitlement.diagnostics.office.com certifikatfel

FIXAT: Entitlement.diagnostics.office.com certifikatfel

FIXAT: Entitlement.diagnostics.office.com certifikatfel

Topp 10 spelwebbplatser som inte blockerades av skolan 2022

Topp 10 spelwebbplatser som inte blockerades av skolan 2022

För att ta reda på de bästa spelsajterna som inte blockeras av skolor, läs artikeln och välj den bästa oblockerade spelwebbplatsen för skolor, högskolor och verk

FIXAT: Skrivare i feltillstånd [HP, Canon, Epson, Zebra & Brother]

FIXAT: Skrivare i feltillstånd [HP, Canon, Epson, Zebra & Brother]

Om du står inför problemet med skrivaren i feltillstånd på Windows 10 PC och inte vet hur du ska hantera det, följ dessa lösningar för att fixa det.

Så här säkerhetskopierar du din Chromebook (2022)

Så här säkerhetskopierar du din Chromebook (2022)

Om du undrar hur du säkerhetskopierar din Chromebook, så hjälper vi dig. Läs mer om vad som säkerhetskopieras automatiskt och vad som inte görs här

Så här fixar du att Xbox-appen inte öppnas i Windows 10 [SNABBGUIDE]

Så här fixar du att Xbox-appen inte öppnas i Windows 10 [SNABBGUIDE]

Vill du fixa Xbox-appen öppnas inte i Windows 10, följ sedan korrigeringarna som Aktivera Xbox-appen från tjänster, återställ Xbox-appen, Återställ Xbox-apppaketet och andra.

Vad är LogiOptions.exe (UNICODE) och är processen säker?

Vad är LogiOptions.exe (UNICODE) och är processen säker?

Om du har ett Logitech-tangentbord och -mus kommer du att se den här processen köras. Det är inte skadlig programvara, men det är inte en viktig körbar fil för Windows OS.

Fixat Java Update/Install Error 1603 i Windows 10

Fixat Java Update/Install Error 1603 i Windows 10

Läs artikeln för att lära dig hur du fixar Java Update-fel 1603 i Windows 10, prova korrigeringarna en efter en och fixa fel 1603 enkelt ...