Is VBA the answer? Is it the RIGHT answer? Will it solve my presentation problem?
Before deciding on a VBA solution to a problem, you should understand the limits of VBA. What follows may sound negative; it's not meant that way. But it IS an honest look, from a guy who LOVES VBA, at what you can and can't expect VBA to do for your presentations.
We figure you'd much rather learn that "You can't do that" before spending weeks pounding your head against the walls learning that "You can't do that". That in turn might save you the cost (and embarassment) of planning an important presentation around VBA tricks that turn out to be impossible to use in your situation.
Will you use the free PowerPoint Viewer?
If your presentation needs to run in the free PowerPoint Viewer, then VBA is out. The Viewer doesn't support VBA at all.
How about the iOS, Android or web versions of PowerPoint?
No VBA support there either.
Security Settings
If you can assume a desktop version of PowerPoint (Windows or Mac), the next thing to consider is the security settings on the individual computers. Do you control these settings or can you persuade individual users to adjust their settings to meet your needs?
Depending on the user's macro security settings, PowerPoint may ask the user whether to allow your VBA code to run when they open the presentation file that contains it (the default) or it may silently disable your macros.
In rare cases, it may simply allow your code to run with no questions asked. And you may win the lottery that same day.
Running on a Mac?
VBA won't work in Mac PowerPoint 2008. Period. It does work in previous and later versions.
Code That Runs Automatically
Some Office applications (Word, Excel) have a way to run VBA code automatically when the user opens a document.
PowerPoint doesn't.
An Auto_Open subroutine within an Add-in will run at the time the Add-in loads, so IF you can create an Add-in and install it on the user's computer Create an ADD-IN with TOOLBARS that run macros then
- The Add-in can respond to events - Make PPT respond to events
- It can detect things like "The user just opened a presentation".
- You could use this and some extra code to detect that "The user just opened OUR presentation" and run any other code you like in response.
Can VBA even do this?
Even if you're still with us, VBA may not be the answer. VBA allows us to automate nearly everything that PowerPoint can do. It even allows us to do some things that PowerPoint can't do under normal user control. But PowerPoint doesn't "expose" all of its capabilities to VBA.
There are some features that a user can click with a mouse but that VBA simply can't "see". What PowerPoint doesn't expose, VBA can't control and we can't automate.
How can you tell what can and can't be controlled?
- Have a look at the rest of the VBA section of this FAQ and some of the other PowerPoint VBA sites it links to. You may find that somebody's already written code that does what you want.
- If you have an older version of PowerPoint that supports it, record a macro as you perform the task manually. Play the macro back. If it works, you're in good shape. The recorded macro may not always work the way you want it to, but that's fixable. The fact that it works at all proves that VBA can do what needs to be done.
- In some cases, macros recorded in Excel or Word, which still have macro recorders, can give you a clue to how a task might be accomplished.
- Microsoft Answers: The PowerPoint Support Forum is your friend. Post a detailed message outlining what you need to do and you'll have a reliable answer from one or more experienced PowerPoint coders, often within 24 hours or less.
- Programming-related sites like Stack Overflow are great resources for help with code that's not working quite right.