Exemple și tutoriale de macro VBA PowerPoint

Acesta este un ghid complet pentru automatizarea PowerPoint utilizând macro-urile VBA (Visual Basic for Applications). Mai jos veți găsi multe exemple utile.

PDF VBA (Descărcări gratuite)

Descărcați gratuit tutorialul nostru Microsoft PowerPoint VBA! Sau tutoriale VBA pentru alte programe Office!

Descarca

Tutorial PowerPoint VBA (Macro)

Salvați ca prezentare activată macro

Prezentarea cu cod VBA ar trebui să fie „Salvată ca” Prezentare PowerPoint Macro-Enabled (* .pptm)

Activați fila „Dezvoltator” din panglică

Ar trebui să activați fila Dezvoltator de pe panglică înainte de a crea codul VBA. Pentru aceasta, alegeți Fișier -> Opțiuni, apoi faceți clic pe „Personalizați panglica” și bifați caseta de lângă fila „Dezvoltator” din panoul din dreapta.

Creați macro PowerPoint

Acesta este un exemplu simplu de macro VBA PowerPoint:

1234567891011 Sub SavePresentationAsPDF ()Dim pptName Ca șirDim PDFName Ca șir„Salvați PowerPoint ca PDFpptName = ActivePresentation.FullName„Înlocuiți extensia de fișier PowerPoint în nume în PDFPDFName = Left (pptName, InStr (pptName, ".")) & "Pdf"ActivePresentation.ExportAsFixedFormat PDFName, 2 'ppFixedFormatTypePDF = 2Sfârșitul Sub

Salvează prezentarea activă în format PDF. Fiecare linie de cod face următoarele:

  • Creează variabile pentru numele PowerPoint și numele PDF
  • Atribuie numele prezentării active variabilei pptName
  • Creează numele complet PDF
  • Salvează prezentarea ca PDF

Aplicație PowerPoint

Când codul VBA rulează într-o prezentare PowerPoint, aplicația PowerPoint este aplicația implicită și poate fi manipulată fără referință explicită. Creați o nouă prezentare

Pentru a crea o prezentare, utilizați metoda Adăugare a aplicației PowerPoint.

123 Aplicație.Prezentări.Adăugare'sau fără referință explicităPrezentări.Adăugare

Deschideți o nouă prezentare

Pentru a deschide o prezentare nouă și necompletată, utilizați colecția Add method of Application.Presentations

1 Prezentări.Adăugare

Deschideți o prezentare existentă

Pentru a deschide o prezentare pe care ați creat-o deja, utilizați metoda Open a colecției Application.Presentations

1 Presentations.Open („My Presentation.pptx”)

Codul de mai sus presupune că prezentarea se află în același director cu prezentarea PowerPoint care conține codul.

Deschideți și atribuiți unei variabile

Ar trebui să atribuiți prezentarea pe care o deschideți unei variabile, astfel încât să o puteți manipula conform cerințelor dvs.

12 Dim ppt Ca prezentareSet ppt = Presentations.Open („My Presentation.pptx”)

Consultați Prezentare activă

Utilizați referința ActivePrentation pentru a manipula prezentarea activă în GUI atunci când codul VBA este executat.

12 'Imprimați numele ActivePresentation în fereastra imediatăDebug.Print ActivePresentation.Name

Salvați prezentarea curentă

Declarația de mai jos va salva prezentarea activă dacă a fost salvată anterior. Dacă nu a fost salvat, atunci vi se va solicita dialogul „Salvați ca”.

1 ActivePresentation.Save

Închideți prezentarea curentă

Declarația de mai jos va închide prezentarea activă chiar dacă nu a fost salvată după ultima editare.

1 ActivePresentation.Close

Referințe utile

Atribuiți prezentarea existentă (după nume) variabilei

12 Dim myPresentationByName Ca prezentareSet myPresentationByName = Application.Presentations („Prezentarea mea”)

Atribuiți diapozitivul activ variabilei

12 Dim current Slide As SlideSetați currentSlide = Application.ActiveWindow.View.Slide

Atribuiți diapozitivul după index la variabilă

12 Dim mySlide As SlideSetați mySlide = ActivePresentation.Slides (11)

Numărul numărului de diapozitive

12 Dim slideCount As LongslideCount = ActivePresentation.Slides.Count

Obțineți indexul diapozitivului Numărul diapozitivului curent

12 Dim currentSlideIndex As SlidecurrentSlideIndex = Application.ActiveWindow.View.Slide.SlideIndex

Adăugați un diapozitiv gol la sfârșitul prezentării

1234567 Dim slideCount As LongReduceți Slide new ca SlideslideCount = ActivePresentation.Slides.CountSetați newSlide = ActivePresentation.Slides.Add (slideCount + 1, 12)'sau ca ppLayoutBlank = 12Setați newSlide = ActivePresentation.Slides.Add (slideCount + 1, ppLayoutBlank)

Adăugați o diapozitivă după diapozitivul curent

12345 Dim nou Slide As SlideReduceți currentSlideIndex ca întregcurrentSlideIndex = Application.ActiveWindow.View.Slide.SlideIndexSetați newSlide = ActivePresentation.Slides.Add (currentSlideIndex, ppLayoutBlank)

Ștergeți un diapozitiv

1234 Reduceți currentSlideIndex ca întregcurrentSlideIndex = Application.ActiveWindow.View.Slide.SlideIndexActivePresentation.Slides (currentSlideIndex). Ștergeți

Accesați un anumit diapozitiv

12 „Aceasta vă va duce la diapozitivul numărul 4Application.ActiveWindow.View.GotoSlide (4)

Mutați diapozitivul

Puteți muta un diapozitiv din poziția sa veche în noua poziție

123456 'Treceți de la diapozitivul 3 la primul diapozitivAtenuați Poziția veche ca număr întreg, opriți Poziția nouă ca număr întregoldPosition = 3newPosition = 1ActivePresentation.Slides (oldPosition) .MoveTo toPos: = newPosition

Buclați prin toate diapozitivele

Puteți face ceva cu fiecare diapozitiv sau puteți parcurge toate diapozitivele pentru a găsi câteva diapozitive și pentru a face ceva cu utilizarea codului;

123456 Dim mySlide ca SlidePentru fiecare mySlide În ActivePresentation.Slides„Faceți ceva cu diapozitivul actual menționat în variabila„ mySlide ”'Debug.Print mySlide.NameUrmătorul diapozitiv

Parcurgeți toate formele de diapozitive active

Puterea PowerPoint poate fi realizată utilizând „Forme”. Codul de mai jos parcurge toate formele de pe diapozitivul curent, astfel încât să le puteți manipula după cum doriți;

123456789 Reduceți curentul Slide as SlideDim shp ca ShapeSetați currentSlide = Application.ActiveWindow.View.SlidePentru fiecare shp din currentSlide.Shapes„Faceți ceva cu forma curentă menționată în variabila„ shp ”'De exemplu, tipăriți numele formei în fereastra imediatăDebug.Print shp.NameUrmătorul shp

Parcurgeți toate formele din Toate diapozitivele

Puteți parcurge toate formele din prezentare prin adăugarea unei bucle pentru a parcurge toate diapozitivele.

123456789 Reduceți curentul Slide as SlideDim shp ca ShapePentru fiecare curent Slide În ActivePresentation.SlidesPentru fiecare shp din currentSlide.Shapes„Faceți ceva cu forma curentă menționată în variabila„ shp ”Debug.Print shp.NameUrmătorul shpUrmătorul curent Slide

Buclați prin toate TextBox-urile Active Slide

TextBox-urile sunt forma cea mai des folosită în prezentările PowerPoint. Puteți parcurge toate casetele text adăugând o bifă pentru „Shape Type”. TexBox-urile au tipul de formă definit ca constantă VBA msoTextBox (valoarea numerică a constantei este 17)

1234567891011 Reduceți curentul Slide as SlideDim shp ca ShapeSetați currentSlide = Application.ActiveWindow.View.SlidePentru fiecare shp din currentSlide.Shapes'Verificați dacă tipul de formă este msoTextBoxDacă shp.Type = 17, atunci 'msoTextBox = 17'Imprimați textul în TextBoxDebug.Print shp.TextFrame2.TextRange.TextEnd IfUrmătorul shp

Buclați toate casetele text din toate diapozitivele

Din nou, puteți parcurge toate casetele text din prezentare adăugând o buclă pentru a parcurge toate diapozitivele.

1234567891011 Dim current Slide as Slide Dim shp as ShapePentru fiecare curent Slide În ActivePresentation.SlidesPentru fiecare shp din currentSlide.Shapes'Verificați dacă tipul de formă este msoTextBoxDacă shp.Type = 17, atunci 'msoTextBox = 17„Faceți ceva cu TextBox-ul menționat în variabila„ shp ”Debug.Print shp.TextFrame2.TextRange.TextEnd IfUrmătorul shpUrmătorul curent Slide

Copiați diapozitivele selectate în noua prezentare PPT

Pentru a copia anumite diapozitive într-o nouă prezentare, selectați mai întâi diapozitivele dorite în prezentarea existentă și apoi rulați codul de mai jos;

123456789101112131415161718 Atenuați prezentarea curentă ca prezentareReduceți curentul Slide as SlideAtenuați prezentarea nouă ca prezentare„Salvați referința la prezentarea curentăSetați currentPresentation = Application.ActivePresentation'Salvați referința la diapozitivul curentSetați currentSlide = Application.ActiveWindow.View.Slide'Adăugați o prezentare nouă și salvați la o referințăSetați NewPresentation = Application.Presentations.Add'Copiază diapozitivele selectateSelecție.Copie'Lipiți-l într-o nouă prezentareNewPresentation.Slides.Paste

Copiați diapozitivul activ la sfârșitul prezentării active

12345 'Copiază diapozitivul curentApplication.ActiveWindow.View.Slide.Copy'Lipiți la sfârșitActivePresentation.Slides.Paste

Exemple utile de macrocomenzi PowerPoint

Iată câteva exemple macro utile care arată cum să efectuați sarcini. Acestea vor demonstra, de asemenea, conceptele descrise mai sus.

Schimbați diapozitivul în timpul prezentării

1234567891011 Sub ChangeSlideDuringSlideShow ()Dim SlideIndex Ca întregDim SlideIndex Anterior ca întreg'Schimbați diapozitivul curent la diapozitivul selectat 4 în timpul prezentării de diapozitiveSlideIndex = 4„Indexul ferestrei de prezentare curentă este 1 în colecția SlideShowWindowsSlideIndexPrevious = SlideShowWindows (1) .View.CurrentShowPositionSlideShowWindows (1) .View.GotoSlide SlideIndexSfârșitul Sub

Schimbați fontul pe toate diapozitivele din toate casetele de text

123456789101112131415 Sub ChangeFontOnAllSlides ()Dim mySlide As slideDim shp Ca formă„Schimbați dimensiunea fontului pe toate diapozitivelePentru fiecare mySlide În ActivePresentation.SlidesPentru fiecare shp din mySlide.ShapesDacă shp.Type = 17, atunci 'msoTextBox = 17'Schimbați dimensiunea fontului la 24shp.TextFrame.TextRange.Font.Size = 24End IfUrmătorul shpUrmătorul mySlideSfârșitul Sub

Schimbați majusculele între majuscule și normale în toate casetele de text

123456789101112131415 Sub ChangeCaseFromUppertoNormal ()Dim mySlide As slideDim shp Ca formă'Schimbați de la majuscule la minuscule pentru toate diapozitivelePentru fiecare mySlide În ActivePresentation.SlidesPentru fiecare shp din mySlide.ShapesDacă shp.Type = 17, atunci 'msoTextBox = 17„Schimbați majusculele cu majusculeshp.TextFrame2.TextRange.Font.Allcaps = FalseEnd IfUrmătorul shpUrmătorul mySlideSfârșitul Sub

Comutați între majuscule și minuscule în toate TextBoxes

12345678910111213141516 Sub ToggleCaseBetweenUpperAndNormal ()Dim mySlide As slideDim shp Ca formă'Comutați între majuscule și minuscule pentru toate diapozitivelePentru fiecare mySlide În ActivePresentation.SlidesPentru fiecare shp din mySlide.ShapesDacă shp.Type = 17, atunci 'msoTextBox = 17'Comutați între majuscule și minusculeshp.TextFrame2.TextRange.Font.Allcaps = _Nu shp.TextFrame2.TextRange.Font.AllcapsEnd IfUrmătorul shpUrmătorul mySlideSfârșitul Sub

Eliminați subliniul de pe descendenți

În tipografie, un descendent este porțiunea unei litere care se extinde sub linia de bază a unui font. În majoritatea fonturilor, descendentele sunt rezervate pentru caractere mici, cum ar fi g, j, q, p, y și uneori f.

Când subliniați textul, nu arată frumos sub descendenți. Iată codul pentru a elimina sublinierea de la toate aceste caractere g, j, p, q și y din întreaga Prezentare.

1234567891011121314151617181920212223242526 Sub RemoveUnderlineFromDescenders ()Dim mySlide As slideDim shp Ca formăDim descenders_list As StringExpresie slabă ca ȘirDim x As Long„Eliminați sublinierile de la Descendențidescenders_list = "gjpqy"Pentru fiecare mySlide În ActivePresentation.SlidesPentru fiecare shp din mySlide.ShapesDacă shp.Type = 17, atunci 'msoTextBox = 17'Eliminați sublinierea din literele „gjpqy”Cu shp.TextFrame.TextRangefrază = .TextPentru x = 1 To Len (.Text)Dacă InStr (descenders_list, Mid $ (frază, x, 1))> 0 Atunci.Caractere (x, 1) .Font.Underline = FalseEnd IfUrmătorul xSe termina cuEnd IfUrmătorul shpUrmătorul mySlideSfârșitul Sub

Eliminați animațiile din toate diapozitivele

Utilizați codul de mai jos pentru a elimina toate animațiile setate într-o prezentare.

123456789101112 Sub RemoveAnimationsFromAllSlides ()Dim mySlide As slideDim i As LongPentru fiecare mySlide În ActivePresentation.SlidesPentru i = mySlide.TimeLine.MainSequence.Count To 1 Step -1„Eliminați fiecare animațiemySlide.TimeLine.MainSequence.Item (i). ȘtergețiApoi euUrmătorul mySlideSfârșitul Sub

Salvați prezentarea ca PDF

Puteți salva cu ușurință prezentarea activă în format PDF.

1234567891011 Sub SavePresentationAsPDF ()Dim pptName Ca șirDim PDFName Ca șir„Salvați PowerPoint ca PDFpptName = ActivePresentation.FullName„Înlocuiți extensia de fișier PowerPoint în nume în PDFPDFName = Left (pptName, InStr (pptName, ".")) & "Pdf"ActivePresentation.ExportAsFixedFormat PDFName, 2 'ppFixedFormatTypePDF = 2Sfârșitul Sub

Găsiți și înlocuiți textul

Puteți găsi și înlocui text în Toate casetele de text din toate diapozitivele. După prima instanță a textului pe care doriți să îl găsiți (definit de findWhat), trebuie să parcurgeți comanda Găsiți pentru a găsi alte instanțe, dacă există.

123456789101112131415161718192021222324252627282930313233 Sub FindAndReplaceText ()Dim mySlide As slideDim shp Ca formăDim findWhat As StringReduceți înlocuirea Cu șirDim ShpTxt ca TextRangeDim TmpTxt Ca TextRangefindWhat = "șacal"replaceWith = "vulpe"„Găsiți, găsiți și înlocuițiPentru fiecare mySlide În ActivePresentation.SlidesPentru fiecare shp din mySlide.ShapesDacă shp.Type = 17, atunci 'msoTextBox = 17Setați ShpTxt = shp.TextFrame.TextRange„Găsiți prima instanță a cuvântului„ Găsiți ”(dacă există)Setați TmpTxt = ShpTxt.Replace (findWhat, _Replacewhat: = replaceWith, _Cuvinte întregi: = Adevărat)„Găsiți alte instanțe suplimentare ale cuvântului„ Găsiți ”(dacă există)Do While Not TmpTxt nu este nimicSetați ShpTxt = ShpTxt.Characters (TmpTxt.Start + TmpTxt.Length, ShpTxt.Length)Setați TmpTxt = ShpTxt.Replace (findWhat, _Replacewhat: = replaceWith, _Cuvinte întregi: = Adevărat)BuclăEnd IfUrmătorul shpUrmătorul mySlideSfârșitul Sub

Exportați diapozitivul ca imagine

Puteți exporta Slide curent (sau orice alt slide) ca imagine PNG sau JPG (JPEG) sau BMP.

1234567891011121314 Sub ExportSlideAsImage ()Dim imageType As StringDim pptName Ca șirDim imageName As StringDim mySlide As slide'Exportați diapozitivul curent în imagineimageType = "png" 'sau jpg sau bmppptName = ActivePresentation.FullNameimageName = Left (pptName, InStr (pptName, ".")) & imageTypeSetați mySlide = Application.ActiveWindow.View.slidemySlide.Export imageName, imageTypeSfârșitul Sub

Redimensionați imaginea pentru a acoperi diapozitivul complet

1234567891011121314151617181920212223242526 Sub ResizeImageToCoverFullSlide ()Dim mySlide As slideDim shp Ca formă'Redimensionați imaginea la dimensiunea completă a diapozitivului'Schimbați înălțimea și lățimea primei forme de pe diapozitivul curent'pentru a se potrivi dimensiunilor diapozitivuluiSetați mySlide = Application.ActiveWindow.View.slideSetați shp = mySlide.Shapes (1)'''' Înlocuiți două date de mai sus cu'' următoarea afirmație dacă doriți'' extindeți forma selectată în prezent'' va da eroare dacă nu este selectat nimic'Set shp = ActiveWindow.Selection.ShapeRange (1)Cu shp.LockAspectRatio = False.Height = ActivePresentation.PageSetup.SlideHeight.Width = ActivePresentation.PageSetup.SlideWidth.Stânga = 0.Top = 0Se termina cuSfârșitul Sub

Ieșiți din toate prezentările de diapozitive în desfășurare

Dacă aveți mai multe diapozitive deschise în același timp, le puteți închide pe toate folosind macro-ul de mai jos.

1234567 Sub ExitAllRunningSlideShows ()Faceți în timp ce SlideShowWindows.Count> 0SlideShowWindows (1) .View.ExitBuclăSfârșitul Sub

Automatizarea PowerPoint din Excel

De asemenea, vă puteți conecta la PowerPoint prin alte aplicații (cum ar fi Excel și Word). Ca prim pas, trebuie să vă referiți la o instanță din PowerPoint.

Există două moduri de a face acest lucru - legarea timpurie și legare tardivă .

Deschideți PowerPoint - Early Binding

În „Early Binding” trebuie să setați în mod explicit o referință la „Microsoft PowerPoint 16 Object Library” (pentru MS Office 2022) în VBE (Visual Basic Editor) utilizând opțiunea Instrumente-> Referințe.

123 „Legare timpurieDim pptApp ca aplicațieSetați pptApp = New PowerPoint.Application

Deschideți PowerPoint - Late Binding

În aplicația „Late Binding” variabila aplicației este declarată ca obiect și motorul VBA se conectează la aplicația corectă în timpul rulării.

123 'Obligatoriu târziuDim pptApp Ca obiectSetați pptApp = CreateObject ("PowerPoint.Application")

Faceți aplicația vizibilă

După setarea referinței la aplicația PowperPoint, poate fi necesar să o faceți vizibilă.

1 pptApp.Visible = Adevărat

Maniplulează PowerPoint

Puteți utiliza toate metodele pentru a manipula prezentările, din cadrul PowerPoint, descrise mai sus din Excel, doar adăugând referința la PowerPoint creată de dvs. mai sus.

De exemplu

1 Presentations.Open („My Presentation.pptx”)

trebuie folosit a placut asta

1 pptApp .Presentations.Open („My Presentation.pptx”)

Închideți aplicația

După ce ați finalizat ce ați dorit să faceți cu aplicația PowerPoint, trebuie să o închideți și să eliberați referința.

12 pptApp.QuitSetați pptApp = Nimic

Copiați din Excel în PowerPoint

Acest cod va copia un interval de la Excel la PowerPoint:

Notă: A fost păstrat cât mai simplu posibil pentru a arăta cum o gamă de la Excel poate fi copiată în PowerPoint folosind VBA.

12345678910111213141516171819 Sub copyRangeToPresentation ()'Deschideți o nouă instanță PowerPointSetați pptApp = CreateObject ("PowerPoint.Application")Cu pptApp„Creați o nouă prezentareSetați ppt = .Prezentări.Adăugați'Adăugați un diapozitiv golSetați newSlide = ppt.Slides.Add (1, 12) 'ppLayoutBlank = 12„Copiați gama din foaia activă în ExcelActiveSheet.Range ("A1: E10"). Copiați'Lipiți la Powerpoint ca imaginenewSlide.Shapes.PasteSpecial DataType: = 2 '2 = ppPasteEnhancedMetafile„Treceți la PowerPoint.ActivatiSe termina cuSfârșitul Sub

Întrebări frecvente despre PowerPoint VBA

Ce sunt macro-urile în PPT?

O macro este un termen general care se referă la un set de instrucțiuni de programare care automatizează sarcinile. Macro-urile PowerPoint (PPT) automatizează sarcinile în PowerPoint folosind limbajul de programare VBA.

Cum folosesc VBA în PowerPoint?

Pentru a utiliza VBA în PowerPoint, deschideți Editorul VBA (ALT + F11 sau Developer> Visual Basic).

Cum creez o macro în PowerPoint?

1. Deschideți Editorul VBA (ALT + F11 sau Dezvoltator> Visual Basic)
2. Accesați Inserare> Modul pentru a crea un modul de cod
3. Tastați „Sub HelloWorld” și apăsați Enter
4. Între rândurile „Sub HelloWorld” și „End Sub”, tastați „MsgBox„ Hello World! ”
5. Ați creat un Macro!
6. Acum apăsați „F5” pentru a rula Macro

Scris de: Vinamra Chandra

Vei ajuta la dezvoltarea site-ului, partajarea pagina cu prietenii

wave wave wave wave wave