Tuesday, July 10, 2007

Create an ADD-IN with TOOLBARS that run macros

Source : http://pptfaq.com/FAQ00031.htm

Unlike the other Office programs, 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

You may also want to read this MS Knowledgebase article on creating PowerPoint add-ins

Here are the basics:

Start with a new PowerPoint file

Start a new PowerPoint file. Press ALT+F11 to start the VB Editor. Choose Insert, New Module.
Add this code to the new module:

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 = "Button1"
'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
'52 is my favorite pig;
' 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
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, 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 PPT file. You'll save it as an add-in (PPA) file later, but you cannot ... repeat ... CANNOT open and edit PPA files. If you don't save as a PPT also, you won't be able to edit your macros.

Create the Add-in
Once you've saved your work safely in PPT format, choose File, Save As and pick PowerPoint Add-In (*.PPA) from the Files of Type dropdown listbox. Give it a file name and save.

You now have a new PowerPoint Add-in. Until you load it into PowerPoint, it's not going to do you much good, so the next step is:

Load the Add-in
Choose Tools, Add-Ins.
In the Add-Ins dialog box, click Add New and browse to the new Add-in (PPA) file you just created.
Choose it and click OK.
Your new toolbar and buttons should appear.
Close the Add-Ins dialog box.

Click the buttons on your new toolbar to test your macros.

Enjoy!

No comments: