Detta är en komplett guide för att automatisera PowerPoint med hjälp av VBA -makron (Visual Basic for Applications). Nedan hittar du många användbara exempel.
VBA PDF (gratis nedladdningar)
Ladda ner vår gratis Microsoft PowerPoint VBA -handledning! Eller VBA -handledning för andra Office -program!
Ladda ner
Självstudier i PowerPoint VBA (makron)
Spara som makroaktiverad presentation
Presentationen med VBA-kod ska vara "Sparad som" PowerPoint-makroaktiverad presentation (*.pptm)
Aktivera fliken "Utvecklare" i menyfliksområdet
Du bör aktivera fliken Utvecklare på menyfliksområdet innan du skapar VBA -kod. För att göra det, välj Arkiv -> Alternativ, klicka sedan på "Anpassa band" och markera rutan bredvid fliken "Utvecklare" i den högra rutan.
Skapa PowerPoint -makro
Detta är ett enkelt exempel på ett PowerPoint VBA -makro:
1234567891011 | Sub SavePresentationAsPDF ()Dim pptName som strängDim PDFName som sträng'Spara PowerPoint som PDFpptName = ActivePresentation.FullName'Ersätt PowerPoint -filtillägg i namnet till PDFPDFName = Left (pptName, InStr (pptName, ".")) & "Pdf"ActivePresentation.ExportAsFixedFormat PDFName, 2 'ppFixedFormatTypePDF = 2Avsluta Sub |
Den sparar den aktiva presentationen som en PDF. Varje kodrad gör följande:
- Skapar variabler för PowerPoint -namn och PDF -namn
- Tilldelar det aktiva presentationsnamnet till variabeln pptName
- Skapar hela PDF -namnet
- Sparar presentationen som en PDF
PowerPoint -applikation
När VBA -koden körs i en PowerPoint -presentation är PowerPoint -programmet standardprogrammet och det kan manipuleras utan uttrycklig referens. Skapa en ny presentation
Om du vill skapa en presentation använder du metoden Lägg till i PowerPoint -programmet.
123 | Application.Presentations.Add'eller utan uttrycklig referensPresentationer. Lägg till |
Öppna en ny presentation
Om du vill öppna en ny och tom presentation använder du samlingsmetoden Lägg till Application.Presentations
1 | Presentationer. Lägg till |
Öppna en befintlig presentation
Om du vill öppna en presentation som du redan har skapat använder du Open -metoden för Application.Presentations -samlingen
1 | Presentations.Open ("Min presentation.pptx") |
Koden ovan förutsätter att presentationen finns i samma katalog som PowerPoint -presentationen som innehåller koden.
Öppna och tilldela en variabel
Du bör tilldela presentationen du öppnar till en variabel så att du kan manipulera den enligt dina krav.
12 | Dim ppt som presentationAnge ppt = Presentations.Open ("Min Presentation.pptx") |
Se Aktiv presentation
Använd referensen ActivePrentation för att manipulera presentationen som är aktiv i GUI när VBA -koden körs.
12 | 'Skriv ut namnet på ActivePresentation i det omedelbara fönstretDebug.Print ActivePresentation.Name |
Spara aktuell presentation
Uttalandet nedan kommer att spara den aktiva presentationen om den sparades tidigare. Om det inte har sparats kommer du att bli ombedd med dialogrutan "Spara som".
1 | ActivePresentation.Save |
Stäng aktuell presentation
Uttalandet nedan stänger den aktiva presentationen även om den inte sparades efter den senaste redigeringen.
1 | ActivePresentation.Close |
Användbara referenser
Tilldela nuvarande presentation (med namn) till variabel
12 | Dim myPresentationByName som presentationStäll in myPresentationByName = Application.Presentations ("Min presentation") |
Tilldela Active Slide till variabel
12 | Dim currentSlide As SlideStäll in currentSlide = Application.ActiveWindow.View.Slide |
Tilldela bild efter index till variabel
12 | Dim mySlide som bildStäll in mySlide = ActivePresentation.Slides (11) |
Räkna antal bilder
12 | Dim slideCount As LongslideCount = ActivePresentation.Slides.Count |
Hämta bildindex för aktuell bild
12 | Dim currentSlideIndex som bildcurrentSlideIndex = Application.ActiveWindow.View.Slide.SlideIndex |
Lägg till en tom bild i slutet av bildspelet
1234567 | Dim slideCount As LongDim newSlide as SlideslideCount = ActivePresentation.Slides.CountAnge newSlide = ActivePresentation.Slides.Add (slideCount + 1, 12)'eller som ppLayoutBlank = 12Ange newSlide = ActivePresentation.Slides.Add (slideCount + 1, ppLayoutBlank) |
Lägg till en bild efter aktuell bild
12345 | Dim newSlide As SlideDim currentSlideIndex som heltalcurrentSlideIndex = Application.ActiveWindow.View.Slide.SlideIndexAnge newSlide = ActivePresentation.Slides.Add (currentSlideIndex, ppLayoutBlank) |
Ta bort en bild
1234 | Dim currentSlideIndex som heltalcurrentSlideIndex = Application.ActiveWindow.View.Slide.SlideIndexActivePresentation.Slides (currentSlideIndex) .Delete |
Gå till en specifik bild
12 | 'Detta tar dig till bild nummer 4Application.ActiveWindow.View.GotoSlide (4) |
Flytta bild
Du kan flytta en bild från den gamla positionen till den nya positionen
123456 | 'Flytta från bild 3 till första bildDim oldPosition som heltal, dim newPosition som heltaloldPosition = 3newPosition = 1ActivePresentation.Slides (oldPosition) .MoveTo toPos: = newPosition |
Loop Through All Slides
Du kan göra något med varje bild eller gå igenom alla bilder för att hitta några bilder och göra något åt med att använda koden;
123456 | Dim mySlide som bildFör varje mySlide i ActivePresentation.Slides'Gör något med den aktuella bilden som refereras till i variabeln' mySlide ''Debug.Print mySlide.NameNästa bild |
Gå igenom alla former av aktiv bild
Kraften i PowerPoint kan förverkligas med hjälp av "Former." Koden nedan går igenom alla former på den aktuella bilden så att du kan manipulera dem som du vill;
123456789 | Dim strömSlide as SlideDim shp som ShapeStäll in currentSlide = Application.ActiveWindow.View.SlideFör varje shp I currentSlide.Shapes'Gör något med den nuvarande formen som refereras till i variabeln' shp ''Skriv ut namnet på formen i fönstret OmedelbartDebug.Print shp.NameNästa shp |
Gå igenom alla former i alla bilder
Du kan bläddra igenom alla former i presentationen genom att lägga till en loop för att gå igenom alla bilder.
123456789 | Dim strömSlide as SlideDim shp som ShapeFör varje currentSlide In ActivePresentation.SlidesFör varje shp I currentSlide.Shapes'Gör något med den nuvarande formen som refereras till i variabeln' shp 'Debug.Print shp.NameNästa shpNästa currentSlide |
Bläddra igenom alla textrutor i Active Slide
Textboxar är den mest använda formen i PowerPoint -presentationer. Du kan bläddra igenom alla textrutor genom att lägga till en markering för "Formtyp." TexBoxar har formtypen definierad som VBA -konstanten msoTextBox (det numeriska värdet för konstanten är 17)
1234567891011 | Dim strömSlide as SlideDim shp som ShapeStäll in currentSlide = Application.ActiveWindow.View.SlideFör varje shp I currentSlide.Shapes'Kontrollera om formtypen är msoTextBoxOm shp.Type = 17 Sedan 'msoTextBox = 17'Skriv ut texten i textboxenDebug.Print shp.TextFrame2.TextRange.TextAvsluta omNästa shp |
Gå igenom alla textrutor i alla bilder
Återigen kan du gå igenom alla textrutor i presentationen genom att lägga till en loop för att gå igenom alla bilder.
1234567891011 | Dim strömSlide as Slide Dim shp as ShapeFör varje currentSlide In ActivePresentation.SlidesFör varje shp I currentSlide.Shapes'Kontrollera om formtypen är msoTextBoxOm shp.Type = 17 Sedan 'msoTextBox = 17'Gör något med den textbox som refereras till i variabeln' shp 'Debug.Print shp.TextFrame2.TextRange.TextAvsluta omNästa shpNästa currentSlide |
Kopiera utvalda bilder till ny PPT -presentation
För att kopiera vissa bilder till en ny presentation, välj först önskade bilder i den befintliga presentationen och kör sedan koden nedan;
123456789101112131415161718 | Dim currentPresentation as PresentationDim strömSlide as SlideDim newPresentation as Presentation'Spara referens till aktuell presentationStäll in currentPresentation = Application.ActivePresentation'Spara referens till aktuell bildStäll in currentSlide = Application.ActiveWindow.View.Slide'Lägg till ny presentation och spara till en referensAnge NewPresentation = Application.Presentations.Add'Kopiera valda bilderUrval. KopieraKlistra in den i en ny presentationNewPresentation.Slides.Paste |
Kopiera aktiv bild till slutet av aktiv presentation
12345 | 'Kopiera aktuell bildApplication.ActiveWindow.View.Slide.Copy'Klistra in i slutetActivePresentation.Slides.Paste |
Användbara PowerPoint -makroexempel
Här är några användbara makroexempel som visar hur du gör uppgifter. Dessa kommer också att visa de begrepp som beskrivs ovan.
Ändra bild under bildspel
1234567891011 | Sub ChangeSlideDuringSlideShow ()Dim SlideIndex som heltalDim SlideIndexPrevious Som heltal'Ändra aktuell bild till vald bild 4 under bildspelSlideIndex = 4'Index för det aktuella bildspelsfönstret är 1 i SlideShowWindows -samlingenSlideIndexPrevious = SlideShowWindows (1) .View.CurrentShowPositionSlideShowWindows (1) .View.GotoSlide SlideIndexAvsluta Sub |
Ändra teckensnitt på alla bilder i alla textrutor
123456789101112131415 | Sub ChangeFontOnAllSlides ()Dim mySlide Som bildDim shp som form'Ändra teckenstorlek på alla bilderFör varje mySlide i ActivePresentation.SlidesFör varje shp i mySlide.ShapesOm shp.Type = 17 Sedan 'msoTextBox = 17'Ändra teckenstorlek till 24shp.TextFrame.TextRange.Font.Size = 24Avsluta omNästa shpNästa mySlideAvsluta Sub |
Ändra skiftläge från övre till normalt i alla textrutor
123456789101112131415 | Sub ChangeCaseFromUppertoNormal ()Dim mySlide Som bildDim shp som form'Ändra från versaler till vanliga bokstäver för alla bilderFör varje mySlide i ActivePresentation.SlidesFör varje shp i mySlide.ShapesOm shp.Type = 17 Sedan 'msoTextBox = 17'Ändra versaler till vanliga fallshp.TextFrame2.TextRange.Font.Allcaps = FalseAvsluta omNästa shpNästa mySlideAvsluta Sub |
Växla mellan stora och normala i alla textrutor
12345678910111213141516 | Sub ToggleCaseBetweenUpperAndNormal ()Dim mySlide Som bildDim shp som formVäxla mellan versaler och normal bokstäver för alla bilderFör varje mySlide i ActivePresentation.SlidesFör varje shp i mySlide.ShapesOm shp.Type = 17 Sedan 'msoTextBox = 17Växla mellan versaler och vanliga bokstävershp.TextFrame2.TextRange.Font.Allcaps = _Inte shp.TextFrame2.TextRange.Font.AllcapsAvsluta omNästa shpNästa mySlideAvsluta Sub |
Ta bort understrykning från nedstegare
I typografi är en nedstigning den del av en bokstav som sträcker sig under baslinjen för ett teckensnitt. I de flesta teckensnitt är descenders reserverade för små bokstäver som g, j, q, p, y och ibland f.
När du understryker text ser det inte bra ut under nedstigningar. Här är koden för att ta bort understruken från alla sådana tecken g, j, p, q och y i hela presentationen.
1234567891011121314151617181920212223242526 | Sub RemoveUnderlineFromDescenders ()Dim mySlide Som bildDim shp som formDim descenders_list som strängDim fras som strängDim x Så länge'Ta bort understrykningar från nedstigaredescenders_list = "gjpqy"För varje mySlide i ActivePresentation.SlidesFör varje shp i mySlide.ShapesOm shp.Type = 17 Sedan 'msoTextBox = 17'Ta bort understruken från bokstäverna "gjpqy"Med shp.TextFrame.TextRangefras = .TextFör x = 1 Till Len (.Text)Om InStr (descenders_list, Mid $ (fras, x, 1))> 0 Då.Tecken (x, 1) .Font.Underline = FalsktAvsluta omNästa xSluta medAvsluta omNästa shpNästa mySlideAvsluta Sub |
Ta bort animationer från alla bilder
Använd koden nedan för att ta bort alla animationer i en presentation.
123456789101112 | Sub RemoveAnimationsFromAllSlides ()Dim mySlide Som bildDim i As LongFör varje mySlide i ActivePresentation.SlidesFör i = mySlide.TimeLine.MainSequence.Count till 1 steg -1'Ta bort varje animeringmySlide.TimeLine.MainSequence.Item (i) .DeleteNästa iNästa mySlideAvsluta Sub |
Spara presentationen som PDF
Du kan enkelt spara aktiv presentation i PDF -format.
1234567891011 | Sub SavePresentationAsPDF ()Dim pptName som strängDim PDFName Som sträng'Spara PowerPoint som PDFpptName = ActivePresentation.FullName'Ersätt PowerPoint -filtillägg i namnet till PDFPDFName = Left (pptName, InStr (pptName, ".")) & "Pdf"ActivePresentation.ExportAsFixedFormat PDFName, 2 'ppFixedFormatTypePDF = 2Avsluta Sub |
Hitta och ersätt text
Du kan hitta och ersätta text i Alla textboxar med alla bilder. Efter den första instansen av texten du vill hitta (definierad av findWhat) måste du gå igenom kommandot Sök för att hitta andra instanser, om sådana finns.
123456789101112131415161718192021222324252627282930313233 | Sub FindAndReplaceText ()Dim mySlide Som bildDim shp som formDim findWhat As StringDim Ersätt Med Med SträngDim ShpTxt som TextRangeDim TmpTxt som TextRangefindWhat = "schakal"ReplaceWith = "fox"'Hitta och hitta och ersättFör varje mySlide i ActivePresentation.SlidesFör varje shp i mySlide.ShapesOm shp.Type = 17 Sedan 'msoTextBox = 17Ställ in ShpTxt = shp.TextFrame.TextRange'Hitta första förekomsten av' Sök '-ord (om det finns)Ange TmpTxt = ShpTxt.Replace (findWhat, _Replacewhat: = replaceWith, _WholeWords: = True)'Hitta eventuella ytterligare förekomster av "Sök" -ord (om det finns)Gör medan inte TmpTxt är ingentingStäll in ShpTxt = ShpTxt.Characters (TmpTxt.Start + TmpTxt.Length, ShpTxt.Length)Ställ in TmpTxt = ShpTxt.Replace (findWhat, _Replacewhat: = replaceWith, _WholeWords: = True)SlingaAvsluta omNästa shpNästa mySlideAvsluta Sub |
Exportera bild som bild
Du kan exportera Current SLide (eller någon annan bild) som en PNG- eller JPG- (JPEG) eller BMP -bild.
1234567891011121314 | Sub ExportSlideAsImage ()Dim imageType As StringDim pptName som strängDim imageName som strängDim mySlide Som bild'Exportera nuvarande bild till bildimageType = "png" 'eller jpg eller bmppptName = ActivePresentation.FullNameimageName = Left (pptName, InStr (pptName, ".")) & imageTypeStäll in mySlide = Application.ActiveWindow.View.slidemySlide.Export imageName, imageTypeAvsluta Sub |
Ändra storlek på bilden för att täcka hela bilden
1234567891011121314151617181920212223242526 | Sub ResizeImageToCoverFullSlide ()Dim mySlide Som bildDim shp som form'Ändra storlek på bilden till full bildstorlek'Ändra höjd och bredd på den första formen på den aktuella bilden'för att passa bildens måttStäll in mySlide = Application.ActiveWindow.View.slideAnge shp = mySlide.Shapes (1)'''' Ersätt två statemetns ovan med'' följande uttalande om du vill'' expandera den valda formen'' kommer att ge fel om inget väljs'Ställ in shp = ActiveWindow.Selection.ShapeRange (1)Med shp.LockAspectRatio = Falskt.Height = ActivePresentation.PageSetup.SlideHeight.Width = ActivePresentation.PageSetup.SlideWidth.Vänster = 0.Top = 0Sluta medAvsluta Sub |
Avsluta alla löpande bildspel
Om du har flera bildspel öppna samtidigt kan du stänga dem alla med hjälp av makrot nedan.
1234567 | Sub ExitAllRunningSlideShows ()Gör medan SlideShowWindows.Count> 0SlideShowWindows (1) .View.ExitSlingaAvsluta Sub |
Automatisera PowerPoint från Excel
Du kan också ansluta till PowerPoint i andra program (som Excel och Word). Som första steg måste du hänvisa till en instans av PowerPoint.
Det finns två sätt att göra det - tidig bindning och sen bindning .
Öppna PowerPoint - Tidig bindning
I 'Tidig bindning' måste du uttryckligen ställa in en referens till 'Microsoft PowerPoint 16 Object Library' (för MS Office 2022) i VBE (Visual Basic Editor) med alternativet Verktygs-> Referenser.
123 | 'Tidig bindningDim pptApp som applikationAnge pptApp = Ny PowerPoint.Application |
Öppna PowerPoint - sen bindning
I 'Sen bindning' deklareras applikationsvariabel som ett objekt och VBA -motor ansluter till rätt applikation vid körning.
123 | 'Sen bindningDim pptApp som objektAnge pptApp = CreateObject ("PowerPoint.Application") |
Gör ansökan synlig
När du har ställt in referensen till PowperPoint -applikationen kan du behöva göra den synlig.
1 | pptApp.Visible = True |
Manipulera PowerPoint
Du kan använda alla metoder för att manipulera presentationer, inifrån PowerPoint, som beskrivs ovan från Excel genom att bara lägga till referensen till PowerPoint skapad av dig ovan.
Till exempel
1 | Presentations.Open ("Min presentation.pptx") |
måste användas gillar detta
1 | pptApp .Presentations.Open ("Min presentation.pptx") |
Stäng programmet
När du har slutfört vad du ville göra med PowerPoint -programmet måste du stänga det och bör släppa referensen.
12 | pptApp.QuitStäll in pptApp = Nothing |
Kopiera från Excel till PowerPoint
Denna kod kommer att kopiera ett intervall från Excel till PowerPoint:
Notera: Det har hållits så enkelt som möjligt att visa hur ett intervall från Excel kan kopieras till PowerPoint med VBA.
12345678910111213141516171819 | Sub copyRangeToPresentation ()'Öppna ny PowerPoint -instansAnge pptApp = CreateObject ("PowerPoint.Application")Med pptApp'Skapa en ny presentationAnge ppt = .Presentations.Add'Lägg till en tom bildAnge newSlide = ppt.Slides.Add (1, 12) 'ppLayoutBlank = 12'Kopiera intervall från Active Sheet i ExcelActiveSheet.Range ("A1: E10"). Kopiera'Klistra in på Powerpoint som en bildnewSlide.Shapes.PasteSpecial DataType: = 2 '2 = ppPasteEnhancedMetafile'Byt till PowerPoint.AktiveraSluta medAvsluta Sub |
Vanliga frågor om PowerPoint VBA
Vad är makron i PPT?
Ett makro är en allmän term som hänvisar till en uppsättning programmeringsinstruktioner som automatiserar uppgifter. PowerPoint (PPT) Makron automatiserar uppgifter i PowerPoint med hjälp av programmeringsspråket VBA.
Hur använder jag VBA i PowerPoint?
Om du vill använda VBA i PowerPoint öppnar du VBA Editor (ALT + F11 eller Developer> Visual Basic).
Hur skapar jag ett makro i PowerPoint?
1. Öppna VBA Editor (ALT + F11 eller Developer> Visual Basic)
2. Gå till Infoga> Modul för att skapa en kodmodul
3. Skriv "Sub HelloWorld" och tryck på Enter
4. Mellan raderna 'Sub HelloWorld' och 'End Sub' skriver du 'MsgBox' Hello World! '
5. Du har skapat ett makro!
6. Tryck nu på 'F5' för att köra makrot
Skriven av: Vinamra Chandra