Updated: 1 Jun, 2026 | SlideUpLift

VBA in PowerPoint: How to Automate Your Slides

Quick answer: VBA (Visual Basic for Applications) is the programming language built into PowerPoint. You use it to write macros that automate repetitive tasks — formatting every slide, inserting logos, exporting files, and more. To start, enable the Developer tab, open the VBA editor with Alt + F11, paste your code into a module, and run it from Developer > Macros. Save the file as a Macro-Enabled Presentation (.pptm) to keep your code.

Struggling with repetitive work in PowerPoint? There’s a faster way. With a few lines of VBA, you can reformat an entire deck, batch-export slides, or apply your branding everywhere in seconds.

This guide walks you through using VBA in PowerPoint from the ground up: what VBA is, how the editor works, how to write and run your first macro, how to enable macros safely (including the security setting most tutorials miss), and ten copy-and-paste codes you can use today. Whether you’re a complete beginner or a business user who wants to save hours, you’ll be able to run working code by the end.

What is VBA in PowerPoint?

VBA, short for Visual Basic for Applications, is Microsoft’s built-in programming language for Office. In PowerPoint, it lets you control slides, shapes, text, and formatting with code instead of clicking through menus. A set of VBA instructions saved under a name is called a macro — run the macro, and PowerPoint performs every step instantly.

Unlike themes and transitions, which only change how a deck looks, VBA gives you direct control over how a presentation is built and behaves. Microsoft maintains full documentation in its PowerPoint VBA reference, and VBA remains fully supported in current versions of PowerPoint.

Why use VBA for presentations?

If you build decks for work, VBA pays off most on tasks you repeat over and over. Common examples include:

  • Applying consistent fonts, colors, and styles
  • Inserting a logo on every slide
  • Updating data in charts and tables
  • Standardizing slide layouts
  • Batch-exporting slides as images or PDFs
  • Find-and-replace across an entire deck
  • Adding slide numbers, footers, and dates
  • Applying the same transition to all slides
  • Rearranging or cleaning up slides

After years in the presentation world, we at SlideUpLift have seen how automation frees up time to focus on what actually matters — your message.

The core building blocks of VBA

When you write VBA to automate PowerPoint, you work with five basic concepts. Think of them as the simple tools behind every macro.

  1. Objects — the things you control. In PowerPoint, almost everything is an object: presentations, slides, shapes, text boxes, and charts. The object model is layered: Application → Presentation → Slide → Shape.
  2. Properties — an object’s settings. Properties describe an object: its color, size, position, or text. A text box’s Text property holds the words inside it.
  3. Methods — what an object can do. Methods are actions. The Slides collection has an Add method to insert a slide; a Shape has a Delete method to remove it.
  4. Variables — temporary storage. Variables hold values while your code runs — a number, a piece of text, or a reference to a specific slide.
  5. Procedures — blocks of code. A Sub (subroutine) runs a set of actions and is what most macros are. A Function is similar but returns a value.

How to open the VBA editor in PowerPoint

You write and run code in the Visual Basic Editor (VBE). There are two ways to open it.

Method 1 — Developer tab. If you don’t see the Developer tab, go to File > Options > Customize Ribbon, tick Developer in the right-hand list, and click OK. Then click Developer > Visual Basic.

Method 2 — Keyboard shortcut. Press Alt + F11 from anywhere in PowerPoint. This is the quickest way in.

Inside the editor, you’ll see the Project Explorer (your open files), the Code Window (where code lives), and the Immediate Window (for quick testing).

Write and run your first macro

Let’s create a presentation with three titled slides — Introduction, Key Points, and Summary — entirely with code.

Step 1 — Insert a module. In the VBA editor, go to Insert > Module, then double-click the new module to open the Code Window.

Step 2 — Paste this code:

Sub SimplePPTDemo()

    Dim pres As Presentation
    Dim sld As Slide

    ‘ Create a brand-new presentation in the current PowerPoint window
    Set pres = Presentations.Add

    ‘ Add three slides, each using the “Title Only” layout
    Set sld = pres.Slides.Add(1, ppLayoutTitleOnly)
    sld.Shapes.Title.TextFrame.TextRange.Text = “Slide 1 – Introduction”

    Set sld = pres.Slides.Add(2, ppLayoutTitleOnly)
    sld.Shapes.Title.TextFrame.TextRange.Text = “Slide 2 – Key Points”

    Set sld = pres.Slides.Add(3, ppLayoutTitleOnly)
    sld.Shapes.Title.TextFrame.TextRange.Text = “Slide 3 – Summary”

End Sub

This runs inside PowerPoint and builds a new presentation in the same window. (Older tutorials use CreateObject(“PowerPoint.Application”) — that’s only needed when you drive PowerPoint from another program, such as Excel. From within PowerPoint, Presentations. Add is all you need.)

Step 3 — Run it. With your cursor in the code, press F5, or go to Developer > Macros (Alt + F8), select SimplePPTDemo, and click Run.

Step 4 — Save your work. Save as a PowerPoint Macro-Enabled Presentation (.pptm). A standard .pptx discards your code.

How to open the VBA editor in PowerPoint
How to open the VBA editor in PowerPoint

Tip: You can also generate VBA with AI — describe the deck you want and have ChatGPT write the macro. See our ChatGPT prompts for presentations and how to use ChatGPT to make a presentation.

How to enable macros safely (the step most guides miss) 

PowerPoint disables macros by default to protect you from malicious code. There are two separate layers of protection, and knowing both saves a lot of frustration.

Layer 1 — Trust Center macro settings

Go to File > Options > Trust Center > Trust Center Settings > Macro Settings. You’ll see four options:

  • Disable all macros without notification — strictest; macros never run.
  • Disable all macros with notification — the default; you get a yellow bar with an “Enable Content” button.
  • Disable all macros except digitally signed macros — runs only macros signed by a trusted publisher.
  • Enable all macros (not recommended) — runs everything, including unsafe code.

For most people, the default (“with notification”) is right — enable content only when you trust the file.

Layer 2 — Files downloaded from the internet are blocked[5] 

Here’s the catch most tutorials skip: since 2022, Microsoft blocks macros in files that come from the internet or email on Windows, regardless of your Trust Center settings. Instead of the yellow bar, you’ll get a red SECURITY RISK banner with no enable button — and changing Macro Settings alone will not fix it.

To run a macro file you downloaded and trust:

  1. Close the file.
  2. Right-click it in File Explorer and choose Properties.
  3. On the General tab, tick Unblock in the Security section, then click OK.
  4. Reopen the file — the macro will now run (subject to your Trust Center setting).

Alternatively, save trusted files into a Trusted Location (set under Trust Center > Trusted Locations). Only ever enable or unblock macros from sources you genuinely trust, and test unfamiliar code on a non-critical file first.

10 ready-to-use VBA codes for PowerPoint 

Complete, working macros for common tasks. Paste any into a module and run it. Each works on the active presentation, so open the deck you want to change first.

1. Add a title slide to the end of your deck

Sub AddTitleSlide()

    Dim sld As Slide

    Set sld = ActivePresentation.Slides.Add( _

        ActivePresentation.Slides.Count + 1, ppLayoutTitleOnly)

    sld.Shapes.Title.TextFrame.TextRange.Text = “My New Slide”

End Sub

How to add a title slide to the end of your deck using VBA in PowerPoint
How to add a title slide to the end of your deck using VBA in PowerPoint

2. Apply one font across every slide

Sub SetFontEverywhere()

    Dim sld As Slide, shp As Shape

    For Each sld In ActivePresentation.Slides

        For Each shp In sld.Shapes

            If shp.HasTextFrame Then

                If shp.TextFrame.HasText Then

                    With shp.TextFrame.TextRange.Font

                        .Name = “Calibri”

                        .Size = 24

                    End With

                End If

            End If

        Next shp

    Next sld

End Sub

How to apply one font across every slide using VBA in PowerPoint
How to apply one font across every slide using VBA in PowerPoint

3. Insert your logo on every slide

Sub InsertLogoOnAllSlides()

    Dim sld As Slide

    Dim logoPath As String

    logoPath = “C:\Logos\company-logo.png.webp”   ‘ change to your file path

    For Each sld In ActivePresentation.Slides

        sld.Shapes.AddPicture _

            FileName:=logoPath, _

            LinkToFile:=msoFalse, _

            SaveWithDocument:=msoTrue, _

            Left:=10, Top:=10, Width:=80, Height:=80

    Next sld

End Sub

How to insert your logo on every slide using VBA in PowerPoint
How to insert your logo on every slide using VBA in PowerPoint

4. Find and replace text across the whole deck

Sub FindAndReplaceAll()

    Dim sld As Slide
    Dim shp As Shape
    Dim rng As TextRange

    Dim findText As String
    Dim replaceText As String

    findText = “OUR”
    replaceText = “2026”

    For Each sld In ActivePresentation.Slides

        For Each shp In sld.Shapes

            If shp.HasTextFrame Then

                If shp.TextFrame.HasText Then

                    With shp.TextFrame.TextRange

                        Set rng = .Replace(findText, replaceText)

                        Do While Not rng Is Nothing

                            Set rng = .Replace(findText, replaceText, _
                                After:=rng.Start + rng.Length)

                        Loop

                    End With

                End If

            End If

        Next shp

    Next sld

End Sub

Find and replace text across the whole deck using VBA in PowerPoint
Find and replace text across the whole deck using VBA in PowerPoint

5. Apply the same transition to every slide

Sub ApplyTransitionToAll()

    Dim sld As Slide

    For Each sld In ActivePresentation.Slides

        With sld.SlideShowTransition

            .EntryEffect = ppEffectFade
            .AdvanceOnClick = msoTrue
            .AdvanceOnTime = msoTrue
            .AdvanceTime = 5

        End With

    Next sld

End Sub

How to apply the same transition to every slide using VBA in PowerPoint
How to apply the same transition to every slide using VBA in PowerPoint

6. Turn on slide numbers

Sub ShowSlideNumbers()

    Dim sld As Slide

    For Each sld In ActivePresentation.Slides

        sld.HeadersFooters.SlideNumber.Visible = msoTrue

    Next sld

End Sub

Here is how to turn on slide numbers using VBA in PowerPoint
Here is how to turn on slide numbers using VBA in PowerPoint

7. Add a footer to every slide

Sub AddFooterText()

    Dim sld As Slide
    Dim shp As Shape

    For Each sld In ActivePresentation.Slides

        Set shp = sld.Shapes.AddTextbox( _
            Orientation:=msoTextOrientationHorizontal, _
            Left:=10, _
            Top:=500, _
            Width:=400, _
            Height:=20)

        shp.TextFrame.TextRange.Text = _
            “Confidential – ” & ActivePresentation.Name

        shp.TextFrame.TextRange.Font.Size = 10

    Next sld

End Sub

Here is how to add a footer to every slide using VBA in PowerPoint
Here is how to add a footer to every slide using VBA in PowerPoint

8. Color every title with your brand color

Sub ColorAllTitles()

    Dim sld As Slide

    For Each sld In ActivePresentation.Slides

        If sld.Shapes.HasTitle Then

            sld.Shapes.Title.TextFrame.TextRange.Font.Color.RGB = RGB(0, 51, 102)

        End If

    Next sld

End Sub

Here is how to color every title with your brand color using VBA in PowerPoint
Here is how to color every title with your brand color using VBA in PowerPoint

9. Export each slide as a PNG image

Sub ExportSlidesAsImages()

    Dim i As Integer

    Dim folderPath As String

    folderPath = “C:\SlideImages\”   ‘ folder must already exist

    For i = 1 To ActivePresentation.Slides.Count

        ActivePresentation.Slides(i).Export _

            folderPath & “Slide” & i & “.png.webp”, “PNG”

    Next i

End Sub

Here is how to export each slide as a PNG image using VBA in PowerPoint
Here is how to export each slide as a PNG image using VBA in PowerPoint

10. Save the deck as a PDF

Sub SaveAsPDF()

    ActivePresentation.SaveAs _

        FileName:=”C:\Exports\MyDeck.pdf”, _

        FileFormat:=ppSaveAsPDF End Sub

Here is how to save the deck as a PDF using VBA in PowerPoint
Here is how to save the deck as a PDF using VBA in PowerPoint

Before running any macro that loops through every slide, save a copy of your deck first. Macros can’t be undone with Ctrl + Z, so a backup is your safety net.

Assign a macro to a button or shape

Run a macro by clicking a shape during a slideshow — handy for interactive decks.

  1. Insert a shape or object on your slide and select it.
  2. Go to Insert > Action.
  3. Under the Mouse Click tab, choose Run macro.
  4. 4.     Pick your macro from the dropdown and click OK.
  5. Start the slideshow and click the shape to test it.

VBA in PowerPoint vs. Excel — what’s different?

VBA is the same language across Office, used differently in each app. In Excel it mostly automates calculations and data; in PowerPoint it’s about building and formatting slides, adding interactivity, and exporting decks. Because the language is shared, you can even use Excel VBA to push data straight into a PowerPoint deck — useful for reports that update monthly. For everyday efficiency, our list of PowerPoint shortcuts pairs well with automation.

Prefer no code? Try Neo by SlideUpLift

VBA gives you deep, custom control — but it’s still code. If you’d rather skip scripting, Neo is SlideUpLift’s AI presentation maker. It generates polished decks from your content, applies consistent formatting, switches themes in a click, and reuses slides from past presentations — no macros required. VBA is ideal for precise, repeatable workflows; Neo is the fastest path to a finished deck.

Conclusion

Learning VBA in PowerPoint turns repetitive busywork into one-click automation. Start small — enable the Developer tab, run a simple macro, and save as .pptm — then build up to the ready-made codes above for formatting, branding, and exporting. With a little practice, you’ll spend less time clicking and more time on the message that matters.

FAQs

  1. What can VBA do for my PowerPoint presentations?

    It automates repetitive tasks (formatting, branding, data updates), adds interactivity like clickable buttons, and lets you batch-export slides — going beyond PowerPoint’s standard features.

  2. Is using VBA in PowerPoint a security risk?

    Macros can carry malicious code, which is why PowerPoint disables them by default and blocks macro files from the internet. Only enable or unblock macros from sources you trust, and test unfamiliar code on a non-critical file first.

  3. How do I run a VBA macro in PowerPoint?

    Save as a Macro-Enabled Presentation (.pptm), then go to Developer > Macros (or Alt + F8), select the macro, and click Run. You can also assign it to a shape via Insert > Action.

  4. Why won’t my downloaded macro run even after changing Trust Center settings?

    The file is probably blocked because it came from the internet. Close it, right-click > Properties > tick Unblock > OK, then reopen it.

  5. Is there an easier alternative to writing VBA?

    Yes — Neo by SlideUpLift generates and formats slides with AI, no coding needed, while VBA remains best for precise, custom automation.

Subscribe to Slideuplift now!