Create an ADD-IN with TOOLBARS that run macros
Before we start
If you're writing an add-in for any version of PowerPoint from 2007 onward, this page has plenty of useful information, but please ignore the parts about creating toolbars to give your add-in a friendly user interface. Instead, see Our FAQ page on creating an add-in with ribbon buttons.
OK. Onward!
Unlike Word and Excel, PowerPoint doesn't have a simple way to automatically run VBA code when you open a particular PPT file or create a new document based on a template.
However, if you create an add-in that includes an Auto_Open subroutine, PowerPoint will run the code in Auto_Open when the add-in loads. It will also run any code in an Auto_Close subroutine when the add-in is unloaded manually via the Tools, Addins dialog or when you quit PowerPoint.
Once loaded, an add-in will load itself every time PowerPoint starts up.
Running code once can be useful, but what if you want to make your macros available at the click of a button? To do that, your add-in has to create a toolbar and add buttons to it. Each button can be associated with other macros in your add-in.
So how do you create an add-in that does all this wonderful stuff?
A Must-See Site: PowerPoint MVP Shyam Pillai's PowerPoint Add-in FAQ
And of course, peruse the rest of the Programming section in this FAQ for code examples and more.
Here are the basics. This shows you how to create an add-in and a toolbar with buttons that you can click to run macros. This will also work In PowerPoint 2007 and onward, where your toolbar will appear on the Add-ins tab. If you want to create your own tabs or groups on the ribbon, the process is a bit more complicated. In that case, see:
- Our FAQ page on creating an add-in with ribbon buttons
- This page on PowerPoint MVP John Wilson 's PPT Alchemy site.
- Start a new PowerPoint file.
- Press ALT+F11 to start the VB Editor.
- Choose Insert, New Module.
But if toolbars rather than the Ribbon is definitely your thing, here's the drill
Sub Auto_Open() Dim oToolbar As CommandBar Dim oButton As CommandBarButton Dim MyToolbar As String ' Give the toolbar a name MyToolbar = "Kewl Tools" On Error Resume Next ' so that it doesn't stop on the next line if the toolbar's already there ' Create the toolbar; PowerPoint will error if it already exists Set oToolbar = CommandBars.Add(Name:=MyToolbar, _ Position:=msoBarFloating, Temporary:=True) If Err.Number <> 0 Then ' The toolbar's already there, so we have nothing to do Exit Sub End If On Error GoTo ErrorHandler ' Now add a button to the new toolbar Set oButton = oToolbar.Controls.Add(Type:=msoControlButton) ' And set some of the button's properties With oButton .DescriptionText = "This is my first button" 'Tooltip text when mouse if placed over button .Caption = "Do Button1 Stuff" 'Text if Text in Icon is chosen .OnAction = "Button1" 'Runs the Sub Button1() code when clicked .Style = msoButtonIcon ' Button displays as icon, not text or both .FaceId = 52 ' chooses icon #52 from the available Office icons End With ' Repeat the above for as many more buttons as you need to add ' Be sure to change the .OnAction property at least for each new button ' You can set the toolbar position and visibility here if you like ' By default, it'll be visible when created. Position will be ignored in PPT 2007 and later oToolbar.Top = 150 oToolbar.Left = 150 oToolbar.Visible = True NormalExit: Exit Sub ' so it doesn't go on to run the errorhandler code ErrorHandler: 'Just in case there is an error MsgBox Err.Number & vbCrLf & Err.Description Resume NormalExit: End Sub Sub Button1() ' This code will run when you click Button 1 added above ' Add a similar subroutine for each additional button you create on the toolbar ' This is just some silly example code. ' You'd put your real working code here to do whatever ' it is that you want to do MsgBox "Will you PLEASE stop clicking me? I have a headache already!" End Sub' That's it. Don't add anything past this point to your code.
Make sure the add-in code compiles
Choose Debug | Compile from the menu bar. This helps ensure that there are no errors in your code that will later prevent PowerPoint from saving it as an add-in. If PowerPoint finds any errors, it will stop with the problem code highlighted. If necessary, correct any problems and keep compiling again until you get a clean compile ... that is, until PowerPoint stops objecting to things.SAVE your PPT file
Once you've added the code above and perhaps modified it a bit to suit your own needs, save the presentation as a PPTM file. You'll save it as an add-in (PPA or PPAM) file later, but you cannot ... repeat ... CANNOT open and edit PPA/PPAM files. If you don't save as a PPTM first, you won't be able to edit your code.Create the Add-in
Once you've saved your work safely in PPTM format, choose File | Save As and pick PowerPoint Add-In (*.PPAM) from the Files of Type dropdown listbox. Give it a file name and save. You now have a new PowerPoint Add-in. But until you load it into PowerPoint, it's not going to do you much good, so the next step is:Load the Add-in
In Windows PowerPoint 2007 and later:- Choose File | Options (or in 2007, click the Office Button then click PowerPoint Options
- Click Add-ins
- Next to Manage: choose PowerPoint Add-Ins then click Go
- In the Add-Ins dialog box that appears, click Add New and browse to your add-in