With custom PowerPoint tools, you can take the program to interesting new places. Best of all, PowerPoint is one of the easiest programs to develop for! To get started, read our guide to the fundamentals of custom PowerPoint tools.
What kind of custom PowerPoint tools can I create?
Before you can begin creating custom PowerPoint tools, you must decide what sort of tool you want to make. There are two major kinds of custom PowerPoint tools:
Let’s examine both below.
Add-ins and Macros
An add-in is a program that extends what PowerPoint is capable of. Add-ins allow you to do things that PowerPoint was never designed for.
Three kinds of add-ins
There are three kinds of add-ins for PowerPoint:
- Application add-ins – These add-ins are written in VBA, which is a simple program built into PowerPoint. It allows you to build simple programs with the elements of PowerPoint.
- COM add-ins – These add-ins can be built in any program which supports the Component Object Model. They add content and UI elements directly into the task panes on the right-hand side of the screen. They are a bit more powerful than VBA add-ins, as they can enable options like web integration)
- VSTO add-ins – These add-ins are coded in Visual Studio Tools for Office. This program work with the C# language, which is one of the most versatile programming languages.
You can run add-ins in PowerPoint in four easy steps.
1. In PowerPoint 2016, click the File tab. Now click Options.
2. In the pop-up options box, click the Add-ins tab. Here you’ll see your active and inactive add-ins. As you select add-ins, you will see some of their attributes in the second window.
3. To enable or disable add-ins, you must activate the Manage sub-menu at the bottom of the dialog box. First, click the drop-down list to see the kinds of add-ins PowerPoint can work with.
Now select the kind of add-ins you’d like to manage and click Go. Let’s look at these four add-in types below:
COM Add-ins – These add-ins are built in programs that support the Component Object Model (COM). These include programs like Visual Studio Tools for Office (VSTO) or C++. COM add-ins typically use .dll and .exe file extensions.
PowerPoint Add-ins – These are simple add-ins created inside PowerPoint itself. They usually use the .ppa or .ppam file extensions.
Actions – This option just allows you to include extra options in your right-click menus.
Disabled Items – By clicking this, you can see any items that PowerPoint has disabled. These items are usually disabled to ensure PowerPoint functions correctly, so be careful about enabling them.
A macro is a small program that helps you perform complex, repetitive tasks in PowerPoint. They are easier to develop, but that’s because their functionality is limited by what PowerPoint is already capable of.
1. Open the developer tab. To do this, go to the File tab. Click “Options” and go to “Customize Ribbon”. Now, tick the check-box next to “Developer” near the bottom of the right column:
2. Click the Developer tab, then click Macros within the Code group.
3. In the pop-up Macro box, select the macro you want and click Run.
Acquiring add-ins and macros
There are many great custom developers online. We won’t name any here, but they’re just a quick Google away!
Of course, it would be remiss of us not to talk about the Microsoft add-in store. To access the store, click the Insert tab. Now click My Add-ins:
In the pop-up menu, click the Store tab:
Now search for the add-in you want, click add, and voila! While the Microsoft store is the easiest way to acquire add-ins, it does have a few disadvantages. For instance, each add-in must pass numerous approval stages to enter the store. While this means everything on there is high-quality, it also makes it harder for developers to update their add-ins. On top of that, Microsoft takes a 20% commission on every sale. This means many small-time developers are simply selling their add-ins on their own websites instead.
Developing add-ins and macros
So where can you write these add-ins and macros? Well, you can write and run macros and add-ins in PowerPoint using VBA. This is by far the easiest (and cheapest) way to make custom PowerPoint tools. We’ll talk about how to do that in our section on getting started.
You can also write custom PowerPoint tools in languages outside of PowerPoint. In fact, you can write external programs to control PowerPoint in any programming language you like! As long as your program understands the Component Object Model (COM), you can use programs like C++ to create custom PowerPoint tools.
Of course, it’s easier to start creating add-ins and macros in PowerPoint’s in-built VBA program.
The Languages Supported by PowerPoint
There are two primary languages supported by PowerPoint:
The two languages are pretty similar, as they interact with PowerPoint through the PowerPoint Object Model. The PowerPoint Object Model is just the blue-print of the program. It includes the objects within the program, as well as the ways they interact with each other. Thankfully, this PowerPoint Object model’s the same for VBA and dotnet.
Despite sharing the same object model, there are many differences between what VBA and Dotnet are capable of. Of course, your end-user won’t care what language you write your tools in. They’ll only care that it does what they need it to do.
All the same, let’s explore the differences between VBA and Dotnet below:
VBA is better suited for small add-ins. This is because it’s built right in to the program. It’s also portable, as it runs identically on MAC and PC. Specifically, there are three major advantages to coding customer PowerPoint tools in VBA:
Automation & Repetition
A few lines of VBA code can save you the time and boredom of making the same adjustment again and again. This could include resizing images across multiple slides.
From interactive quizzes to complete applications, VBA enables all kinds of interactivity in PowerPoint.
Connecting Office Applications
By connecting your PowerPoint to other Office applications through VBA, you can easily modify the information within it. Create graphs with real-time Excel data, or adjust slides through Word. With VBA in PowerPoint, any program combination is possible!
Limitations of VBA
1. Your VBA work won’t be enabled for everything
Specifically, a PowerPoint that’s full of VBA tricks won’t work on the following platforms:
- The free PowerPoint Viewer
- The iOS version of PowerPoint
- The Android version of PowerPoint
- The web version of PowerPoint
- Mac PowerPoint 2008 (but it will work for previous and later versions)
2. VBA can’t control what PowerPoint doesn’t expose
While VBA can automate and enhance almost every existing element of PowerPoint, it can’t rewrite the program itself. This is because VBA is a set programming language, not the one PowerPoint is made in.
A frustrating example of this is the zoom limit. In normal PowerPoint, you cannot zoom past 400%. Likewise, you cannot adjust the zoom past 400% in VBA. If you need something that is beyond PowerPoint’s capabilities, try another program.
3. Understanding what VBA can do
There are two main ways to do this:
- Visiting sites which provide code snippets, such as The PowerPoint FAQ
- Recording macros (single instructions which expand into further sets of instructions to perform certain tasks) while using the program to see if they can be replicated
Dotnet (.NET) is a general purpose development platform which can be used to create custom PowerPoint tools. It has several key features that differentiate it from VBA:
- Support for many different programming languages
- Asynchronous and concurrent programming models
- Native interoperability
These features make it suitable to a wide range of scenarios across multiple platforms. In general, Dotnet (.net) is a more robust development environment. Specifically, it provides more debug options and a richer editor.
Major Custom Tool Categories
To give you a better understanding of what PowerPoint’s custom tools can do for you, we’ve broken them down into five major categories:
- Productivity – These are tools which consolidate clicks, saving you time and money. They are the most common kind of custom tool.
- Content selection – These tools give you access to libraries of content, such as galleries of royalty-free stock photos.
- Inter-app – These are tools which enable you to work between Microsoft apps, such as being able to control PowerPoint from Excel.
- Compliance – These tools check that everything in your PowerPoint is right, such as ensuring your colours are on brand.
- Streaming – These are tools that feed real-time data into your PowerPoint, such as weather data.
Before you dive into VBA, it’s important to understand its limitations. After all, you wouldn’t want to to spend hours developing custom PowerPoint tools to discover they’re useless. Knowing whether or not a custom solution is right for you depends on a number of factors. Assess whether or not it would save you enough time and money to make your investment worthwhile.
Step 1. Open the developer tab
Go to the File tab. Click “Options” and go to “Customize Ribbon”. Tick the check-box next to “Developer” near the bottom of the right column:
Step 2. Bring up the coding window
The short way to do this is to simply press Alt+F11. Otherwise, you just need to click the Developer tab and press “View Code”. This should bring up a window like this:
Step 3. Insert a macro
This is simply a matter of hitting the Insert tab and clicking “Module”. Your window should now look like this:
Getting Familiar with VBA
To show you a little bit about how to create custom PowerPoint tools through VBA, we’re going to create a simple button that makes a message pop up.
Step 1. Insert a command button
Simply click the Developer tab and click the button highlighted in grey below.
Now click and drag your cursor on your slide to place your button.
Step 2. Rename your button
Right-click your button, hover over “CommandButton Object” and click Edit.
Now click on the box and rename it to whatever you like.
Step 3. Insert a pop-up message-box
Simply double-click your button to bring up its coding window:
Before we continue, here’s a basic explanation of each part of the code you see here:
- Private Sub – The start of your custom macro. “Sub” is simply short for sub-routine
- CommandButton1_Click – That is the code for your button, as well as the action of clicking it.
- () – These parentheses indicate where certain variables are declared. Variables are just a named storage location. They contain data that can be modified during the execution of your module. Each variable has a name that uniquely identifies it within its scope. They must begin with an alphabetic character, and it must be unique within your project. The variable can’t be longer than 255 characters, and cannot contain an embedded period. Most importantly, it cannot contain the characters @, &, $, or #
- .End Sub – The end of your custom macro
- You’ll see that the words “Sub” and “End sub” are blue. This is because VBA shows recognised commands in blue. When you compile your program, you can identify problems by searching for lines that have turned red.
Now, in that line beneath Private Sub, add the following code:
msgbox “Hello World!”
You can add whatever you want between your quotation marks. That is simply the message that will show when you click your button. Once you’re done, just exit your coding window to activate your code in PowerPoint.
Step 4. Test your button
To click your button, you need to be in presentation mode. If you did everything right, you should get a message like this when you click your button:
And that’s it!
Creating a Custom Macro from Scratch
After starting a new presentation, go to the Developer tab and click Macros. Otherwise, hit Alt + F8.
In the pop-up menu, give your macro a name and click Create.
Now you should see a window like this:
By using the same programming knowledge you applied when creating your button, you can make similar macros.
An easy way to generate code for custom PowerPoint tools is to start recording a macro, then carry out the function you want to automate or enhance. Unfortunately, this is only available in older versions of PowerPoint. If you own a version from before 2007, you can record macros in 5 simple steps:
- Click on Tools in the menu bar
- Mouse over macro until the sub-menu is displayed
- Click the Record button, which will display a new toolbar
- Do what you want
- Click the stop button on your macro toolbar
Now you’re free to play with your new code! Now we will teach you a few fundamental things about how to create new code:
Mastering the Dim Statement
This sounds like a guide for celebrities, but it’s actually an essential part of creating custom PowerPoint tools. Almost any piece of code you see in VBA will contain statements like this:
Dim newPPT As PowerPoint.Presentation = Nothing
Let’s break that down further:
Dim [variable name] as [variable type]
Now, dim is short for dimension. This is because it allows you to declare the name and type of your variable. In other words, to establish its dimensions. But what are variables?
Variables are containers on your computer which contain the same kind of data. They differ depending on the values they contain. They also aren’t important until you assign values to them. For instance, let’s consider the equation X = 5. In this case, X is the variable and 5 is its value.
In VBA, variables require the following:
This will be registered when you create the variable, which you do by writing “Dim *name of variable*”. We’ve included an example below:
This is just an aspect of your variable that affects how your code will interact with it. At this point you can replace “Dim” in your code with your characteristics. There are three kinds of characteristic:
- Lifetime – This is the period of time that your variable can be used after it is activated when running your procedure. It can be established with a word like ‘Static’.
- Scope – This outlines the codes that can see your variable without qualifying its name. Your scope can be established with a word like ‘Public’.
- Access level – This determines the codes that can access your variable. You can established your variable’s access level with a word like ‘Private’.
A variable code with such characteristics should look a little something like this:
Public Static newSlide
A data type
This specifies the values which variables can hold, such as Slides. You declare the data type by typing an “As” clause after the variable name:
Public Static newSlide As Slide
An initial value
This can be assigned by following the As clause with an equal sign (=) and that variable’s initial value.
Public Static newSlide as Slide = 1
It’s important to remember that you can override the values of a variable within subsequent lines of your sub-routine. This is especially useful if you add a loop function to your sub-routine.
Understanding Arrays in PowerPoint
By establishing an array, you can work with a set of values that share the same data type. So what exactly is an array? Well, it’s a single variable with many compartments for storing values. This is different to a typical variable, which only has one storage compartment for one value. By referring to an array when designing custom PowerPoint tools, you can refer to all the values it holds. Otherwise you’ll have to refer to each of its individual elements.
This can be incredibly useful when designing custom PowerPoint tools. For example, let’s say you want to turn your PowerPoint into a daily calendar for screens in your business. Rather than declaring 365 variables for 365 days, you can declare one array variable with 365 elements. Each element in this array will contain one value.
The following statement declares the array variable with 365 elements. By default, an array is indexed beginning with zero. This means the upper limit of a calendar array is 364 rather than 365:
Dim newSlide(364) As Date
Understanding Objects in PowerPoint
In the context of custom PowerPoint tools, objects are things you want to either change or perform an action for you. They can be many things, including slides, shapes, and toolbars. Each version of PowerPoint has a different PowerPoint Object Model. We will be working with the PowerPoint 2016 Object Model.
In PowerPoint, objects are comprised of two types of object members:
- Properties – The properties of an object describe its characteristics, including height and colour. They can be read/write or read only.
- Methods – These are the things that an object can do. For instance, Insert is a property of Slide objects.
For a complete list of all objects in PowerPoint, click here. Otherwise, we will be looking into its base objects below:
Base Objects in PowerPoint
While there are dozens of objects in PowerPoint, there are only five objects that you really need to focus on to start developing custom PowerPoint tools:
The Application Object
This object is PowerPoint itself. As a result, it ties all of the objects in your development together. While developing custom PowerPoint tools, the Application object will provide access to the program’s key child tools. While coding your custom PowerPoint tools, the application object will look like this in your VBA window:
Because you can use PowerPoint itself as an object in your custom tool development, you can edit aspects of the application itself.
The Presentation Object
By working with the presentation object, you will be working directly with your PowerPoint files. To make effective custom tools, it is essential that you understand how to access and manipulate PowerPoint files. While this isn’t completely essential to creating custom PowerPoint tools, it makes it much easier to open and save presentations while developing those custom tools. In order to do this, follow our instructions below:
Creating a new presentation
Open the VBA editor, and input the following code:
Private Function CreateNewPresentation(savePath As String) As _ PowerPoint.Presentation Dim newPPT As PowerPoint.Presentation = Nothing Dim ppts As PowerPoint.Presentations = PowerPointApp.Presentations newPPT = ppts.Add() Marshal.FinalReleaseComObject(ppts) Return newPPT End Function
The Slide Object
If you want to make the most of your custom PowerPoint tools, you need to know how to work directly with slides. To refer to every slide in your presentation, use the Slides object. To specify a single slide, either use that slide’s number (1 being the first slide in the presentation, 2 being the second slide and so on), or enclose its name in quotation marks. For example, if Slide1 is your first slide, the following two statements would mean the same thing:
To work with multiple slides in your presentation, use the Range method of the Slides object:
Presentation .Slides.Range( Index )
Developer Resources we Recommend
We won’t waste this article listing every snippet of code you can pop into your PowerPoint, because it’s already been done. Below are some of the best resources for useful snippets of code to insert into your next presentation:
- The official Microsoft Developer Network
- Steve Rindsberg’s excellent VBA tutorial mini-site
Of course, if you’d rather save yourself the stress of trying to understand VBA, you could always consider…
Paying a Custom Developer
There’s a thriving community of VBA developers out there. For a fair price, they can save you hours of stress and misery. Below are a few questions with a legend in the PowerPoint developer community, Steve Rindsberg:
How did you get started?
I started programming almost from the time I got my first ‘real’ computer in 1981. Later, when my business was changing from advertising photography to making slide presentations, I installed a serious graphics system. Here I was happy to learn that the software included a primitive but very functional batch language. One I could use to automate common tasks and save dozens of mouse-clicks and keystrokes.
Then Windows came along and took over the business graphics world with programs like Persuasion, Harvard Graphics, Freelance and yes, in a very minor way, PowerPoint. These programs were far easier to learn that the program I’d been using, but there was no way to automate them. So I had to live with the clicky-pointy-clicky tedium of doing everything The Windows Way until PowerPoint 97 arrived with its built-in Visual Basic for Apps (VBA to its friends).
Not long after that, Brian Reilly, one of my online acquaintances, happened to be in town on business. We met up, spent the afternoon talking about the possibilities for automating PowerPoint, and had formed PPTools by the end of the day.
What’s the craziest request you’ve ever had?
I hope you don’t mind me answering this from slightly outside the box. See, in working with customers, I’ve learned that however off-the-wall their requests may seem to me, there’s always a reason for them. It’s my job to get behind the expressed question to their reason for asking it. Which is the long way ’round to “I don’t think there are any crazy requests.”
Can we talk about the most challenging request instead? One customer asked for a way of doing color management in PowerPoint, something that PowerPoint doesn’t have a clue about and would be actively hostile to if it had one. But between a very bright programmer on their staff and my beating on PPT with the VBA hammer, we made it work.
How should people frame their requests to VBA developers?
That takes us back to our boxes, and thinking inside/outside them. Please don’t talk programming to me when you have an idea for an add-in. Instead, tell me what the problem is, how you currently solve it manually in PowerPoint, and how many of the manual steps you need to automate.
It also helps to know if this is something you have to do often, occasionally, or once in a blue moon, and who’ll be using the resulting add-in. Also, why?
An example: I have a customer whose employer puts on a big conference several times a year. They get in dozens or hundreds of individual PowerPoint files and need to turn each file into a large poster with all of the slides laid out as though in slide sorter view. They also need to make a PDF of each presentation. I gave them a PPT file that included a macro that would automate the process for every PPT file in a folder, and simply told them how to run the macro. The one or two people who’d be running this show were smart, very computer-savvy, and didn’t need any hand-holding.
In other cases, I know that the end user will not necessarily be well-trained. They may even be afraid of computers, so I have to build a lot more hand-holding and step-by-step instructions into the software.
There’s nothing wrong with either way of doing things, but in the first case, I can provide a lot of functionality for a relatively low cost. In the second case, I can build a solution that anyone can pick up and use productively with only the most minimal training.
And of course, there’s always the question of budget. It’s a good idea to have an idea of what you can afford to spend on a VBA solution before approaching a developer.
How much time do you generally save clients?
Sometimes none! If the cost and time it would take to develop an add-in for a client is more than the time it’ll potentially save them, I’ll suggest that an add-in isn’t a good fit for them.
On the other hand, the code I developed for the client with the posters probably saves them a full week of two or three employees’ time every quarter or so and ensures that they’ll meet their deadlines. It probably paid for itself by the end of the first day they used it.
Where can people go to find VBA developers?
Naturally there’s http://www.pptools.com! But several talented VBA programmers hang out on the Microsoft Answers forums, where there are sections for all of the Office applications, including PowerPoint (https://answers.microsoft.
Linking PowerPoint to Other Microsoft Programs
One of the most powerful aspects of VBA is its ability to link other Microsoft programs into PowerPoint. By importing content from other programs into your presentation, you can turn PowerPoint into so much more than a powerful presentation tool. This includes content created by other Microsoft Office programs, as well as files from programs that support Object Linking and Embedding (OLE). Before proceeding, it is important to understand the differences between linked and embedded objects.
The main differences between the two are where data is stored and how you update that data. Read more about these differences below:
The information in a linked object can be updated by modifying the source file. The linked data is stored in the source file. The linked object, which could be an Excel sheet in a slide, displays a representation of the linked data. Linked objects are ideal to use if you need to be careful of your file size.
Linking is also incredibly useful when you want to include information that is maintained independently. This could include data collected by a different department. By linking it within a shared PowerPoint file, you can give multiple departments up-to-date information.
When you embed an object from another Microsoft program, information in your PowerPoint file won’t change when you modify the source file. Embedded objects simply become part of the PowerPoint file! After embedded objects are inserted, they are cut off from the source file.
Because the information is totally contained within your PowerPoint file, embedding is useful when you don’t want the information to reflect changes in the source file. It is also useful when you don’t want the audience for your PowerPoint to be concerned with updated information.
Because linked objects allow you to create dynamic slides with updated information, they’re what you want to focus on. So forget about embedded objects when you’re linking PowerPoint to other Microsoft programs, and just focus on linked objects.
Inserting Live Excel Data Into PowerPoint Using VBA
This process can be as simple or as complex as you want. The simplest method for modifying PowerPoint slides from Excel involves linking Excel objects. To do this, click the Insert tab and click “Object”:
Now, tick the “Create from file” box and find your Excel file:
Make sure you click the “Link” box, otherwise your Excel object will be embedded.
To edit the linked Excel spreadsheet, use one of the following methods:
- Right-click the Excel object you’ve inserted into the slide, hover over Linked Worksheet Object, and select Edit:
- To update the data on the slide to match the data in the original Excel file, right-click the object on the slide and click Update Link.
Insert a linked selection from a spreadsheet
To insert and link only a selection of cells from a saved Excel spreadsheet, do the following:
- In Excel, open the workbook containing the data which you want to insert.
- Copy the data that you want.
- Click the slide where you want to paste this data.
- Under the Home tab, click “Paste” and select “Paste Special”.
- In the central dialogue box, select a Microsoft Excel Worksheet Object.
- Click the Paste link check-box and click OK.
Controlling PowerPoint With Excel Through Binding
There are two ways to connect Excel with PowerPoint: Early Binding and Late Binding. Early Binding links Excel and PowerPoint early in the process (such as in the early stage of design). In Late Binding, the connection isn’t made until later (generally during the run time of your application). But before we dive into the differences between both, let’s ask the main question:
What is binding?
Binding matches function calls written by a programmer to the actual code which implements the function. Keep in mind that this can only be done when the application is compiled, and that all functions called in code must be bound before the code can be executed.
To understand this, imagine your code is a series of directions for roads that are still under construction. The person following those directions won’t be able to understand them until each road is finished. This will tie your instructions together.
Binding software is very similar. Your code is made up of parts that need to be “Bound” together before the code can be understood. This binding replaces function names with memory addresses, which the code will access when the function is called.
The first step to enable early binding in PowerPoint is to set a reference to the other application’s object library. In the VBA Window, click the Tools tab. Now click References. The following dialogue box will appear:
Scroll through this window and select the library you would like to draw your objects from.
In late binding, there is no object model linked to the project. This means that you must declare any object variables which point to the other application as simple objects. Any constants in your object variables must be converted to the equivalents of the other program.
Web Integration vs Macro-based Tools
This is the major point of difference among custom PowerPoint tools. Web-based tools are more dynamic, whereas you have a greater ability to customise your macro-based tools. To decide whether you should select a web-based or macro-based tool, ask the following questions:
- How unique is my problem?
- What is the life-span of my PowerPoint?
- Does my team have the ability to customise this?
- Will we have access to the internet?
As you can see, it’s easy to create powerful custom PowerPoint tools. Of course, it takes experience to design effective custom solutions. Experience you earn by helping organisations build effective solutions every day – across presentation, print, video and animation, and so much more. To tap into our experience, contact our team today.