Hvordan lage og sette inn former i PowerPoint med VBA?

For et par dager siden ønsket jeg å automatisere den ganske verdslige oppgaven med å lage noen PowerPoint-lysbilder. Når du automatiserer PowerPoint, jobber du vanligvis med Slides and Shapes-samlingen. Lysbilder er ganske selvforklarende, og former er stort sett alt annet, inkludert tekstbokser, handlingsknapper, medieobjekter, etiketter, bilder, bildetekster, flytskjemaer og så videre og så videre. Selv om jeg skal vise frem teknikkene med PowerPoint, er noe av syntaksen faktisk ganske anvendelig for Microsoft Word og Excel.

Bare for å oppsummere, før du kommer i gang med VBA-makroutvikling i PowerPoint, må du ha utviklingsfanen aktivert .

Først og fremst, la oss starte med å automatisk lage en presentasjon med noen lysbilder som vist i denne opplæringen: lage en presentasjon i VBA .

Nå kan vi begynne å jobbe med Shapes. Først og fremst, la oss gå videre og åpne VBA Editor ved å trykke Alt+ F11. Hvis du fulgte den forrige opplæringen, bør du ha modul 1 i modullisten din (som vist nedenfor)

Arbeide med former med VBA

Legge til en tekstboks med VBA

Vi starter med å legge til en vertikal tekstboks i vårt første lysbilde i presentasjonen. Legg til følgende kode til Module1, fortsett og trykk Lagre-knappen (Ctrl+s) og Kjør makroen din (trykk F5 eller Kjø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

Merk at du er i stand til å endre størrelsen på tekstboksdimensjonene ganske enkelt med VBA. I dette tilfellet endrer vi størrelsen på den første formen i det andre lysbildet, endre gjerne etter 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

Teksteffekter med VBA

La oss nå anta at vi ønsker å legge til en tekstboks til alle lysbildene i presentasjonen, denne gangen litt mer visuelt tiltalende. For å gjøre det bruker vi VBA til å lage egendefinerte teksteffekter som vi kan bygge inn i ett eller flere lysbilder i presentasjonen. Vi går først gjennom presentasjonslysbildene og legger deretter til teksteffekten etter 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

Her er resultatet ;-):

Hvordan lage og sette inn former i PowerPoint med VBA?

Merk at du like godt kan bruke et enkelt vannmerke for å oppnå dette spesifikke resultatet.

PowerPoint-meldinger med VBA

Vårt neste eksempel vil være å legge til infomeldinger i presentasjonen din. I dette eksemplet legger vi til en bildetekst på det andre lysbildet.

Sub CreateCallout()

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

End Sub

Angi egenskaper for en form

Mange formateringsegenskaper for figurer er ikke angitt av egenskaper som gjelder direkte for  Shape-  eller  ShapeRange  -objektet. I stedet er relaterte formattributter gruppert under sekundære objekter, for eksempel  FillFormat-  objektet, som inneholder alle egenskapene som er relatert til figurens fyll, eller  LinkFormat  -objektet, som inneholder alle egenskapene som er unike for koblede OLE-objekter. For å angi egenskaper for en form, må du først returnere objektet som representerer settet med relaterte formattributter og deretter angi egenskaper for det returnerte objektet. For eksempel bruker du  Fill-  egenskapen til å returnere  FillFormat-  objektet, og deretter angir du  ForeColor-  egenskapen til  FillFormat-  objektet for å angi fyllforgrunnsfargen for den angitte formen, som vist i følgende eksempel.

VB

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

Bruke en egenskap eller metode på flere former samtidig

I brukergrensesnittet er det noen operasjoner du kan utføre med flere former valgt; for eksempel kan du velge flere former og angi alle deres individuelle fyll samtidig. Det er andre operasjoner du bare kan utføre med en enkelt form valgt; for eksempel kan du bare redigere teksten i en figur hvis en enkelt figur er valgt.

I Visual Basic er det to måter å bruke egenskaper og metoder på et sett med former. Disse to måtene lar deg utføre en hvilken som helst operasjon du kan utføre på en enkelt figur på en rekke former, enten du kan utføre den samme operasjonen i brukergrensesnittet eller ikke.

  • Hvis operasjonen fungerer på flere utvalgte former i brukergrensesnittet, kan du utføre den samme operasjonen i Visual Basic ved å konstruere en  ShapeRange-  samling som inneholder figurene du vil jobbe med, og bruke de riktige egenskapene og metodene direkte på  ShapeRange  -samlingen.

  • Hvis operasjonen ikke fungerer på flere valgte former i brukergrensesnittet, kan du fortsatt utføre operasjonen i Visual Basic ved å gå gjennom  Shapes  -samlingen eller gjennom en  ShapeRange-  samling som inneholder figurene du vil jobbe med, og bruke de riktige egenskapene og metoder til de enkelte  Shape-  objektene i samlingen.

Mange egenskaper og metoder som gjelder for  Shape-  objektet og  ShapeRange-  samlingen mislykkes hvis de brukes på visse typer former. For eksempel  mislykkes egenskapen TextFrame  hvis den brukes på en figur som ikke kan inneholde tekst. Hvis du ikke er sikker på at hver form i en  ShapeRange-  samling kan ha en bestemt egenskap eller metode brukt på seg, ikke bruk egenskapen eller metoden på  ShapeRange-  samlingen. Hvis du vil bruke en av disse egenskapene eller metodene på en samling av figurer, må du gå gjennom samlingen og teste hver enkelt form for å sikre at det er en passende type form før du bruker egenskapen eller metoden på den.

Bruk av en egenskap eller metode på en ShapeRange-samling

Hvis du kan utføre en operasjon på flere utvalgte former i brukergrensesnittet samtidig, kan du gjøre den programmatiske ekvivalenten ved å konstruere en  ShapeRange-  samling og deretter bruke de riktige egenskapene eller metodene på den. Følgende eksempel konstruerer et formområde som inneholder autoformene kalt "Big Star" og "Little Star" på og bruker en gradientfyll på dem og bruker en gradientfyll 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ølgende er generelle retningslinjer for hvordan egenskaper og metoder oppfører seg når de brukes på en  ShapeRange  -samling.

  • Å bruke en metode på samlingen tilsvarer å bruke metoden på hvert enkelt  Shape-  objekt i den samlingen.

  • Å angi verdien til en egenskap i samlingen tilsvarer å sette verdien på egenskapen til hver enkelt form i det området.

  • En egenskap i samlingen som returnerer en konstant, returnerer verdien av egenskapen for en individuell form i samlingen hvis alle former i samlingen har samme verdi for den egenskapen. Hvis ikke alle figurene i samlingen har samme verdi for egenskapen, returnerer den "blandet" konstanten.

  • En egenskap for samlingen som returnerer en enkel datatype (som  LongSingle eller  String ) returnerer verdien av egenskapen for en individuell form hvis alle figurene i samlingen har samme verdi for den egenskapen.

  • Verdien av enkelte egenskaper kan returneres eller angis bare hvis det er nøyaktig én form i samlingen. Hvis det er mer enn én figur i samlingen, oppstår det en kjøretidsfeil. Dette er vanligvis tilfellet for å returnere eller angi egenskaper når tilsvarende handling i brukergrensesnittet bare er mulig med en enkelt form (handlinger som å redigere tekst i en figur eller redigere punktene i en friform).

De foregående retningslinjene gjelder også når du angir egenskaper for figurer som er gruppert under sekundære objekter i  ShapeRange  -samlingen, for eksempel  FillFormat  -objektet. Hvis det sekundære objektet representerer operasjoner som kan utføres på flere valgte objekter i brukergrensesnittet, vil du kunne returnere objektet fra en  ShapeRange-  samling og angi dets egenskaper. Du kan for eksempel bruke  Fill-  egenskapen til å returnere  FillFormat-  objektet som representerer fyllene til alle figurene i  ShapeRange-  samlingen. Ved å angi egenskapene til dette  FillFormat-  objektet vil de samme egenskapene angis for alle de individuelle figurene i  ShapeRange-  samlingen.

Sløyfe gjennom en Shapes- eller ShapeRange-samling

Selv om du ikke kan utføre en operasjon på flere former i brukergrensesnittet samtidig ved å velge dem og deretter bruke en kommando, kan du utføre tilsvarende handling programmatisk ved å gå gjennom Shapes-  samlingen  eller gjennom en  ShapeRange-  samling som inneholder figurene du ønsker å jobbe med, og anvende de riktige egenskapene og metodene på de enkelte  Shape  -objektene i samlingen. Følgende eksempel går gjennom alle figurene på og legger til tekst til hver figur som er en AutoShape. og legger til tekst til hver figur som er en autofigur.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ølgende eksempel konstruerer  ShapeRange-  samlingen som inneholder alle de valgte figurene i det aktive vinduet og setter teksten i hver figur i samlingen som kan inneholde tekst.

VB

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

Justere, distribuere og gruppere former i et formområde

Bruk  metodene Juster  og  distribuer  for å plassere et sett med figurer i forhold til hverandre eller i forhold til dokumentet som inneholder dem. Bruk  gruppemetoden  eller  omgrupperingsmetoden  for å danne en enkelt gruppert form fra et sett med figurer.

Legg igjen en kommentar

Slik løser du «Lyd fungerer ikke ved skjermopptak i PowerPoint»

Slik løser du «Lyd fungerer ikke ved skjermopptak i PowerPoint»

Har PowerPoint-skjermopptaket video, men ingen lyd? Sjekk lydkontrollen, Windows mikrofontilgang, inndatainnstillinger, avspillingskompatibilitet, oppdateringer og reparasjon.

Gratis mal for ansattes skiftplan i Excel med timeregnskapskalkulator

Gratis mal for ansattes skiftplan i Excel med timeregnskapskalkulator

Lag en gratis Excel-skiftplan for ansatte med automatisk timeregistrering, håndtering av nattskift, fratrekk for pauser, ukentlige summer, flagg for overtid og en utskriftsvennlig teamvisning.

Gratis fakturamal for småbedrifter i Excel med automatisk beregning av omsetningsavgift

Gratis fakturamal for småbedrifter i Excel med automatisk beregning av omsetningsavgift

Lag en gratis Excel-fakturamal som automatisk beregner avgiftspliktig beløp, omsetningsavgift og totaler. Sammenlign oppsett med én sats, oppslagslister og linjebasert avgift, og lær når Excel ikke lenger er nok.

Slik konverterer du PDF til redigerbart Word uten å miste formatering

Slik konverterer du PDF til redigerbart Word uten å miste formatering

Konverter PDF til redigerbart Word med minst mulig tap av formatering ved hjelp av Word eller Acrobat. Lær når direkte konvertering fungerer, når OCR er nødvendig, og hvordan du reparerer tabeller, fonter og sideskift.

Utskrivbar mal for byggeprosjekt-tilbud i Excel for små entreprenører

Utskrivbar mal for byggeprosjekt-tilbud i Excel for små entreprenører

Lag et utskrivbart tilbud for byggeprosjekter i Excel med omfang, materialer, arbeidskraft, indirekte kostnader, reserve, påslag, skatt og utskriftsklare summer – pluss formler og feil å unngå.

Slik lager du et enkelt leadsporingssystem i Excel før du kjøper et CRM

Slik lager du et enkelt leadsporingssystem i Excel før du kjøper et CRM

Bygg en praktisk leadtracker i Excel med tabell, nedtrekksmenyer for faser, oppfølgingsdatoer, forsinkelsesflagg, filtre og en enkel pipelineoversikt – pluss tegn på at det er på tide å gå over til et CRM.

Utskrivbar mal for daglig tidsblokkering i PDF-format for hjemmekontor-profesjonelle: En nybegynnervennlig guide

Utskrivbar mal for daglig tidsblokkering i PDF-format for hjemmekontor-profesjonelle: En nybegynnervennlig guide

Lær hvordan du bruker en utskrivbar mal for daglig tidsblokkering i PDF-format for hjemmekontor: planlegg fokusblokker, møter, pauser, buffere, og skriv den ut riktig.

HubSpot Free CRM vs Zoho CRM for enslige eiendomsmeglere: Hvilken er best i 2026?

HubSpot Free CRM vs Zoho CRM for enslige eiendomsmeglere: Hvilken er best i 2026?

Sammenlign HubSpot Free CRM og Zoho CRM for enslige eiendomsmeglere, inkludert kontakter, e-post, pipeline, tilpasning, automatisering, mobilbruk og oppgraderingskompromisser.

Slik fikser du et Word-dokument som åpnes som skrivebeskyttet på Mac

Slik fikser du et Word-dokument som åpnes som skrivebeskyttet på Mac

Fiks et Word-dokument som åpnes som skrivebeskyttet på Mac ved å sjekke juli 2026 Office-oppdateringsproblemet, Word-redigeringsmodus, dokumentbeskyttelse, Finder-tillatelser, OneDrive-tilgang og filplassering.

Enkel mal for lageropptelling i Excel for detaljbutikker: Felter, formler og arbeidsflyt for telling

Enkel mal for lageropptelling i Excel for detaljbutikker: Felter, formler og arbeidsflyt for telling

Lag et enkelt lageropptellingsark i Excel for detaljhandel med praktiske kolonner, variansformler, tellekontroller, utskriftstips og en rask revisjonssjekkliste.