Cum se creează și se inserează forme în PowerPoint cu VBA?

Cum se creează și se inserează forme în PowerPoint cu VBA?

Acum câteva zile, am vrut să automatizez sarcina destul de banală de a crea niște diapozitive PowerPoint. Când automatizați PowerPoint, de obicei lucrați cu colecția Slides and Shapes. Slide-urile se explică de la sine, iar formele reprezintă aproape orice altceva, inclusiv casete de text, butoane de acțiune, obiecte media, etichete, imagini, înștiințări, diagrame și așa mai departe. Deși voi prezenta tehnicile cu PowerPoint, o parte din sintaxă este de fapt destul de aplicabilă Microsoft Word și Excel.

Pentru a recapitula, înainte de a începe cu dezvoltarea macro VBA în PowerPoint, trebuie să aveți fila de dezvoltare activată .

În primul rând, să începem prin a crea automat o prezentare cu câteva diapozitive, așa cum se arată în acest tutorial: crearea unei prezentări în VBA .

Acum putem începe să lucrăm cu Shapes. În primul rând, haideți să deschidem Editorul VBA apăsând Alt+ F11. Dacă ați urmat tutorialul anterior, ar trebui să aveți modulul 1 în lista de module (după cum se arată mai jos)

Lucrul cu forme cu VBA

Adăugarea unei casete de text cu VBA

Vom începe prin a adăuga o casetă de text verticală la primul nostru slide din prezentare. Adăugați următorul cod la Module1, apoi continuați și apăsați butonul Salvare (Ctrl+s) și rulați macrocomanda (apăsați F5 sau apăsați Executare formular sub/utilizator).

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

Rețineți că puteți redimensiona dimensiunile casetei de text destul de ușor cu VBA. În acest caz, vom redimensiona prima formă din al doilea diapozitiv, nu ezitați să o modificați după cum este necesar.

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

Efecte de text cu VBA

Să presupunem acum că vrem să adăugăm o casetă de text la toate diapozitivele din prezentare, de data aceasta puțin mai atrăgătoare din punct de vedere vizual. Pentru a face asta, vom folosi VBA pentru a crea efecte de text personalizate pe care le putem încorpora într-unul sau mai multe diapozitive din prezentare. Mai întâi vom parcurge diapozitivele de prezentare și apoi vom adăuga efectul de text după cum este necesar.

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

Iata rezultatul ;-):

Cum se creează și se inserează forme în PowerPoint cu VBA?

Rețineți că ați putea la fel de bine să utilizați un filigran simplu pentru a obține acest rezultat specific.

Înștiințări PowerPoint cu VBA

Următorul nostru exemplu va fi adăugarea de înștiințări la prezentarea dvs. În acest exemplu, vom adăuga o înștiințare în al doilea diapozitiv.

Sub CreateCallout()

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

End Sub

Setarea proprietăților pentru o formă

Multe proprietăți de formatare ale formelor nu sunt stabilite de proprietăți care se aplică direct  obiectului Shape  sau  ShapeRange  . În schimb, atributele legate de formă sunt grupate sub obiecte secundare, cum ar fi  obiectul FillFormat  , care conține toate proprietățile care se referă la umplerea formei, sau obiectul  LinkFormat  , care conține toate proprietățile care sunt unice pentru obiectele OLE legate. Pentru a seta proprietăți pentru o formă, trebuie mai întâi să returnați obiectul care reprezintă setul de atribute de formă asociate și apoi să setați proprietățile acelui obiect returnat. De exemplu, utilizați  proprietatea Fill  pentru a returna  obiectul FillFormat  , apoi setați  proprietatea ForeColor  a  obiectului FillFormat  pentru a seta culoarea primului plan de umplere pentru forma specificată, așa cum se arată în exemplul următor.

VB

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

Aplicarea unei proprietăți sau metode la mai multe forme în același timp

În interfața cu utilizatorul, există câteva operații pe care le puteți efectua cu mai multe forme selectate; de exemplu, puteți selecta mai multe forme și puteți seta toate umplerile lor individuale simultan. Există și alte operații pe care le puteți efectua doar cu o singură formă selectată; de exemplu, puteți edita textul dintr-o formă numai dacă este selectată o singură formă.

În Visual Basic, există două moduri de a aplica proprietăți și metode unui set de forme. Aceste două moduri vă permit să efectuați orice operație pe care o puteți efectua pe o singură formă pe o serie de forme, indiferent dacă puteți efectua sau nu aceeași operație în interfața cu utilizatorul.

  • Dacă operațiunea funcționează pe mai multe forme selectate în interfața cu utilizatorul, puteți efectua aceeași operație în Visual Basic, construind o  colecție ShapeRange  care conține formele cu care doriți să lucrați și aplicând proprietățile și metodele corespunzătoare direct colecției  ShapeRange  .

  • Dacă operațiunea nu funcționează pe mai multe forme selectate în interfața cu utilizatorul, puteți efectua operația în Visual Basic, parcurgând bucla prin colecția  Shapes  sau printr-o  colecție ShapeRange  care conține formele cu care doriți să lucrați și aplicând proprietățile corespunzătoare. și metode la obiectele individuale  Shape  din colecție.

Multe proprietăți și metode care se aplică obiectului  Shape  și  colecției ShapeRange  eșuează dacă sunt aplicate anumitor tipuri de forme. De exemplu,  proprietatea TextFrame  eșuează dacă este aplicată unei forme care nu poate conține text. Dacă nu sunteți sigur că fiecare formă dintr-o  colecție ShapeRange  poate avea o anumită proprietate sau metodă aplicată acesteia, nu aplicați proprietatea sau metoda colecției  ShapeRange  . Dacă doriți să aplicați una dintre aceste proprietăți sau metode unei colecții de forme, trebuie să treceți prin colecție și să testați fiecare formă individuală pentru a vă asigura că este un tip adecvat de formă înainte de a aplica proprietatea sau metoda acesteia.

Aplicarea unei proprietăți sau metode la o colecție ShapeRange

Dacă puteți efectua o operație pe mai multe forme selectate în interfața cu utilizatorul în același timp, puteți face echivalentul programatic prin construirea unei  colecții ShapeRange  și apoi aplicând proprietățile sau metodele adecvate acesteia. Următorul exemplu construiește o gamă de forme care conține formele automate numite „Big Star” și „Little Star” și le aplică o umplere cu gradient și le aplică o umplere cu gradient.myDocument

VB

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

Următoarele sunt linii directoare generale pentru modul în care proprietățile și metodele se comportă atunci când sunt aplicate unei   colecții ShapeRange .

  • Aplicarea unei metode la colecție este echivalentă cu aplicarea metodei fiecărui  obiect Shape individual  din acea colecție.

  • Setarea valorii unei proprietăți a colecției este echivalentă cu setarea valorii proprietății fiecărei forme individuale din acel interval.

  • O proprietate a colecției care returnează o constantă returnează valoarea proprietății pentru o formă individuală din colecție dacă toate formele din colecție au aceeași valoare pentru acea proprietate. Dacă nu toate formele din colecție au aceeași valoare pentru proprietate, aceasta returnează constanta „mixtă”.

  • O proprietate a colecției care returnează un tip de date simplu (cum ar fi  LongSingle sau  String ) returnează valoarea proprietății pentru o formă individuală dacă toate formele din colecție au aceeași valoare pentru acea proprietate.

  • Valoarea unor proprietăți poate fi returnată sau setată numai dacă există exact o formă în colecție. Dacă există mai multe forme în colecție, apare o eroare de rulare. Acesta este în general cazul pentru returnarea sau setarea proprietăților atunci când acțiunea echivalentă în interfața utilizator este posibilă doar cu o singură formă (acțiuni precum editarea textului într-o formă sau editarea punctelor unei forme libere).

Ghidurile precedente se aplică și atunci când setați proprietăți ale formelor care sunt grupate sub obiecte secundare ale  colecției ShapeRange  , cum ar fi  obiectul FillFormat  . Dacă obiectul secundar reprezintă operațiuni care pot fi efectuate pe mai multe obiecte selectate în interfața cu utilizatorul, veți putea returna obiectul dintr-o  colecție ShapeRange  și veți putea să îi setați proprietățile. De exemplu, puteți utiliza  proprietatea Fill  pentru a returna  obiectul FillFormat  care reprezintă umplerile tuturor formelor din  colecția ShapeRange  . Setarea proprietăților acestui  obiect FillFormat  va seta aceleași proprietăți pentru toate formele individuale din  colecția ShapeRange  .

Buclă printr-o colecție Shapes sau ShapeRange

Chiar dacă nu puteți efectua o operație pe mai multe forme din interfața cu utilizatorul în același timp, selectându-le și apoi folosind o comandă, puteți efectua acțiunea echivalentă în mod programatic, parcurgând bucla prin colecția Shapes  sau  printr-o  colecție ShapeRange  care conține formele pe care le aveți. doriți să lucrați cu și să aplicați proprietățile și metodele adecvate obiectelor individuale  Shape  din colecție. Următorul exemplu parcurge toate formele de pe și adaugă text la fiecare formă care este o formă automată. și adaugă text la fiecare formă care este o formă automată.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

Următorul exemplu construiește  o colecție ShapeRange  care conține toate formele selectate curent în fereastra activă și setează textul în fiecare formă din colecție care poate conține text.

VB

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

Alinierea, distribuirea și gruparea formelor într-un interval de forme

Utilizați  metodele Aliniere  și  Distribuire  pentru a poziționa un set de forme unul față de celălalt sau față de documentul care le conține. Utilizați  metoda Grupare  sau  metoda Regrupare  pentru a forma o singură formă grupată dintr-un set de forme.


Ghimbir 2.7.53.0

Ghimbir 2.7.53.0

Ginger este un corector gratuit de ortografie și gramatică.

Blocuri

Blocuri

Blocuri este un joc intelectual pentru elevii clasei a III-a de școală elementară pentru a-și exersa abilitățile de detectare și ochi și este inclus de profesori în programul de suport didactic IT.

Prezi 6.26

Prezi 6.26

Prezi este o aplicație gratuită care vă permite să creați prezentări digitale, atât online, cât și offline.

Mathway

Mathway

Mathway este o aplicație foarte utilă care vă poate ajuta să rezolvați toate acele probleme de matematică care necesită un instrument mai complex decât calculatorul încorporat al dispozitivului dvs.

Adobe Presenter

Adobe Presenter

Adobe Presenter este un software de e-Learning lansat de Adobe Systems, disponibil pe platforma Microsoft Windows ca plug-in Microsoft PowerPoint.

Tucan 2.3.0

Tucan 2.3.0

Toucan este o platformă tehnologică educațională. Vă permite să învățați o nouă limbă în timp ce navigați pe site-uri web comune, de zi cu zi.

ENetViet 24.2

ENetViet 24.2

eNetViet este o aplicație care ajută la conectarea părinților cu școala în care învață copiii lor, astfel încât aceștia să poată înțelege clar situația actuală de învățare a copilului lor.

Duolingo

Duolingo

Duolingo - Învață limbi străine gratuit, sau pur și simplu Duolingo, este un program educațional care îți permite să înveți și să exersezi multe limbi diferite.

Tastare rapidă

Tastare rapidă

RapidTyping este un instrument de instruire la tastatură convenabil și ușor de utilizat, care vă va ajuta să vă îmbunătățiți viteza de tastare și să reduceți erorile de ortografie. Cu lecții organizate pentru mai multe niveluri diferite, RapidTyping vă va învăța cum să scrieți sau să îmbunătățiți abilitățile existente.

MathType 7.4.10.53

MathType 7.4.10.53

MathType este un software interactiv de ecuații de la dezvoltator Design Science (Dessci), care vă permite să creați și să adnotați notații matematice pentru procesarea de text, prezentări, eLearning etc. Acest editor este folosit și pentru crearea documentelor TeX, LaTeX și MathML.