PowerPoint VBA -makroexempel och självstudier

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

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave