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