Walkthrough: Automating an Application from a Custom Task Pane

Applies to

The information in this topic applies only to the specified Visual Studio Tools for Office projects and Microsoft Office applications.

Project type

  • Application-level projects

Microsoft Office application

  • Excel 2007

  • InfoPath 2007

  • Outlook 2007

  • PowerPoint 2007

  • Word 2007

For more information, see Features Available by Application and Project Type.

This walkthrough demonstrates how to create a custom task pane that automates PowerPoint. The custom task pane inserts dates into a slide when the user clicks a MonthCalendar control that is on the custom task pane.

Although this walkthrough uses PowerPoint specifically, the concepts demonstrated by the walkthrough are applicable to any applications that are listed above.

This walkthrough illustrates the following tasks:

  • Designing the user interface of the custom task pane.

  • Automating PowerPoint from the custom task pane.

  • Displaying the custom task pane in PowerPoint.


Your computer might show different names or locations for some of the Visual Studio user interface elements in the following instructions. The Visual Studio edition that you have and the settings that you use determine these elements. For more information, see Visual Studio Settings.


You need the following components to complete this walkthrough:

  • Visual Studio Tools for Office (an optional component of Visual Studio 2008 Professional and Visual Studio Team System).

  • Microsoft Office PowerPoint 2007.

Visual Studio Tools for Office is installed by default with the listed versions of Visual Studio. To check whether it is installed, see Installing Visual Studio Tools for Office.

Creating the Add-in Project

The first step is to create an add-in project for PowerPoint.

To create a new project

  • Create a PowerPoint add-in project with the name MyAddIn, by using the PowerPoint Add-in project template for the 2007 Microsoft Office system. For more information, see How to: Create Visual Studio Tools for Office Projects.

    Visual Studio opens the ThisAddIn.cs or ThisAddIn.vb code file and adds the MyAddIn project to Solution Explorer.

Designing the User Interface of the Custom Task Pane

There is no visual designer for custom task panes, but you can design a user control with the layout you want. Later in this walkthrough, you will add the user control to the custom task pane.

To design the user interface of the custom task pane

  1. On the Project menu, click Add User Control.

  2. In the Add New Item dialog box, change the name of the user control to MyUserControl, and click Add.

    The user control opens in the designer.

  3. From the Common Controls tab of the Toolbox, drag a MonthCalendar control to the user control.

    If the MonthCalendar control is larger than the design surface of the user control, resize the user control to fit the MonthCalendar control.

Automating PowerPoint from the Custom Task Pane

The purpose of the add-in is to put a selected date on the first slide of the active presentation. Use the DateChanged event of the control to add the selected date whenever it changes.

To automate PowerPoint from the custom task pane

  1. In the designer, double-click the MonthCalendar control.

    The MyUserControl.cs or MyUserControl.vb file opens, and an event handler for the DateChanged event is created.

  2. Add the following code to the top of the file. This code creates aliases for the Microsoft.Office.Core and Microsoft.Office.Interop.PowerPoint namespaces.

    Imports Office = Microsoft.Office.Core
    Imports PowerPoint = Microsoft.Office.Interop.PowerPoint
    using Office = Microsoft.Office.Core;
    using PowerPoint = Microsoft.Office.Interop.PowerPoint;
  3. Add the following code to the MyUserControl class. This code declares an instance of Microsoft.Office.Interop.PowerPoint.Shape as a member of MyUserControl. In the following step, you will use this Microsoft.Office.Interop.PowerPoint.Shape to add a text box to a slide in the active presentation.

    Private TextBox As PowerPoint.Shape
    private PowerPoint.Shape textbox;
  4. Replace the monthCalendar1_DateChanged event handler with the following code. This code adds a text box to the first slide in the active presentation, and then adds the currently selected date to the text box. This code uses the Globals.ThisAddIn object to access the object model of PowerPoint.

    Private Sub MonthCalendar1_DateChanged( _
        ByVal sender As System.Object, _
        ByVal e As System.Windows.Forms.DateRangeEventArgs) _
        Handles MonthCalendar1.DateChanged
            If TextBox IsNot Nothing Then
            End If 
            Dim Slide As PowerPoint.Slide
            Slide = Globals.ThisAddIn.Application.ActivePresentation.Slides(1)
            TextBox = Slide.Shapes.AddTextbox( _
                Office.MsoTextOrientation.msoTextOrientationHorizontal, _
                50, 100, 600, 50)
            TextBox.TextFrame.TextRange.Text = e.Start.ToLongDateString()
            TextBox.TextFrame.TextRange.Font.Size = 48
            TextBox.TextFrame.TextRange.Font.Color.RGB = _
        Catch ex As Exception
        End Try 
    End Sub
    private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
            if (textbox != null)
            PowerPoint.Slide slide =
            textbox = slide.Shapes.AddTextbox(
                50, 100, 600, 50);
            textbox.TextFrame.TextRange.Text = e.Start.ToLongDateString();
            textbox.TextFrame.TextRange.Font.Size = 48;
            textbox.TextFrame.TextRange.Font.Color.RGB =
        catch (Exception ex)
  5. In Solution Explorer, right-click the MyAddIn project and then click Build. Verify that the project builds without errors.

Displaying the Custom Task Pane

To display the custom task pane when the add-in starts, add the user control to the task pane in the Startup event handler of the add-in.

To display the custom task pane

  1. In Solution Explorer, expand PowerPoint.

  2. Right-click ThisAddIn.cs or ThisAddIn.vb and click View Code.

  3. Add the following code to the ThisAddIn class. This code declares instances of MyUserControl and CustomTaskPane as members of the ThisAddIn class.

    Private myUserControl1 As MyUserControl
    Private myCustomTaskPane As Microsoft.Office.Tools.CustomTaskPane
    private MyUserControl myUserControl1;
    private Microsoft.Office.Tools.CustomTaskPane myCustomTaskPane;
  4. Replace the ThisAddIn_Startup event handler with the following code. This code creates a new CustomTaskPane by adding the MyUserControl object to the CustomTaskPanes collection. The code also displays the task pane.

    Private Sub ThisAddIn_Startup(ByVal sender As Object, _
        ByVal e As System.EventArgs) Handles Me.Startup
        myUserControl1 = New MyUserControl
        myCustomTaskPane = Me.CustomTaskPanes.Add(myUserControl1, "Calendar")
        myCustomTaskPane.Visible = True 
    End Sub
    private void ThisAddIn_Startup(object sender, System.EventArgs e)
        myUserControl1 = new MyUserControl();
        myCustomTaskPane = this.CustomTaskPanes.Add(myUserControl1, "Calendar");
        myCustomTaskPane.Visible = true;

Testing the Add-In

When you run the project, PowerPoint opens and the add-in displays the custom task pane. Click the MonthCalendar control to test the code.

To test your add-in

  1. Press F5 to run your project.

  2. Confirm that the custom task pane is visible.

  3. Click a date in the MonthCalendar control on the task pane.

    The date is inserted into the first slide in the active presentation.

Next Steps

You can learn more about how to create custom task panes from these topics:

See Also


How to: Add a Custom Task Pane to an Application

Walkthrough: Synchronizing a Custom Task Pane with a Ribbon Button

Walkthrough: Displaying Custom Task Panes with E-Mail Messages in Outlook

How to: Display Custom Task Panes with E-Mail Messages in Outlook


Custom Task Panes Overview

Managing Custom Task Panes in Multiple Application Windows