Adding Resource Links to the 2007 Office Fluent Ribbon Using COM Add-Ins

Summary: Walk through the process of creating an add-in that adds a custom tab to the existing Microsoft Office Fluent Ribbon in Excel 2007, PowerPoint 2007, and Word 2007. The tab contains controls that you use to access 2007 Office training resources. (23 printed pages)

Judi Hurlock, Microsoft Corporation

Frank Rice, Microsoft Corporation

January 2007

Updated: March 2010

Applies to: Microsoft Office Excel 2007, Microsoft Office PowerPoint 2007, Microsoft Office Word 2007

Contents

  • About the Get Started Tab Add-In

  • Working with the Get Started Tab Add-in Project

  • Using a Shared COM Add-in to Create the Get Started Tab Project

  • XML Customization File for Office Excel 2007

  • XML Customization File for Office PowerPoint 2007

  • Conclusion

  • Additional Resources

NoteNote

This article demonstrates how to create an add-in that customizes the Microsoft Office Fluent Ribbon user interface (UI), using a tab that contains links to Microsoft Office training resources as the example. A new Help tab has been created providing a more full-featured UI Microsoft Office training experience. You can find more information and links to download the tab in the article titled Download Help to get started with Office 2007.

Background

The Microsoft Office Fluent UI replaces the previous system of layered menus, toolbars, and task panes with a simpler system optimized for efficiency and discoverability. The Microsoft Office Fluent Ribbon UI, provides improved context menus, enhanced screen tips, a Mini toolbar, and keyboard shortcuts that help to improve user efficiency and productivity. The new Office Fluent UI is implemented in several applications in the 2007 Microsoft Office suite, including Microsoft Office Access 2007, Microsoft Office Excel 2007, Microsoft Office Outlook 2007, Microsoft Office PowerPoint 2007, and Microsoft Office Word 2007.

In addition to the options described previously, the Office Fluent UI is also relatively easy to customize for your own purposes. You can customize the default Office Fluent Ribbon by using a combination of XML markup and any Microsoft .NET Framework–based language that is supported in Microsoft Visual Studio. You can also customize the Office Fluent Ribbon by using Microsoft Visual Basic for Applications (VBA), Microsoft Visual C++, and Microsoft Visual Basic 6.0.

The Office Fluent Ribbon consists of a set of hierarchical components that appear at the top of the application window. For example, the Office Fluent Ribbon includes tabs that contain groups. The groups enclose controls such as buttons, menus, combo boxes, and check boxes (see Figure 1).

Figure 1. A view of the Office Fluent Ribbon

The Office Fluent Ribbon

You use XML or one of several programming languages to manipulate the components that make up the Office Fluent Ribbon. Because XML is plain text, you can create customization files in any text editor, which simplifies customization.

Using XML markup files to customize the UI greatly reduces the need for complex add-ins. However, add-ins written for previous versions of Office continue to work in the Office Fluent UI with little or no modification.

You can create a custom application-level Office Fluent Ribbon in most of the applications that support the new Office Fluent UI in the following ways:

  • By using Component Object Model (COM) add-ins in managed or unmanaged code

  • By using application-specific add-ins, such as .ppam files and .xlam files

  • By using templates (.dotm files) in Office Word 2007

NoteNote

Access 2007 and Outlook 2007 implement Ribbon customizations in slightly different ways than the other Office applications.

In a typical scenario, code in a COM add-in contains a procedure that returns XML markup from an external customization file or from XML contained in the add-in project. When the application starts, the add-in loads and runs the code that returns the XML markup. The code validates the XML markup against an XSD schema (though that is optional), and then loads the XML into memory and applies it to the Office Fluent Ribbon. The modified Office Fluent Ribbon is displayed when the application starts. Office Fluent Ribbon commands and controls use callback procedures to run code in the add-in. With callback procedures, you implement actions to update properties and perform actions from your UI at run time. For example, to specify an action that occurs when you click a button on the Ribbon, you supply the onAction callback function for the button. When you click the button, Office calls back to the procedure and performs whatever action is defined.

NoteNote

Document-level customizations use the same XML markup and an Office Open XML Formats file with one of these extensions: .docx, .docm, .xlsx, .xlsm, .pptx, or .pptm. For more information about the Office Fluent Ribbon, see the series of articles titled Customizing the 2007 Office Fluent Ribbon for Developers (Part 1 of 3).

The following sections explore, in detail, an example of customizing the Office Fluent Ribbon. The example is a COM add-in that adds components to the existing UI, which provides links to helpful training resources for either Excel 2007, PowerPoint 2007, or Word 2007 depending on which of three XML customization files you use. To download the completed add-ins, see the following page on the Microsoft Developer Network Code Gallery: Microsoft Office Getting Started Ribbon Tab Project

About the Get Started Tab Add-In

The Get Started Tab add-in provides links to various 2007 Office training resources located on Microsoft Office Online. It does this by adding a tab (with six groups and several buttons) to the Office Fluent Ribbon, as shown in Figure 2. Most of the code used in the three projects is the same. The primary differences are the references that point to system resources for each specific Office application.

Figure 2. The Get Started Tab on the Fluent Ribbon in Word 2007

The Get Started Tab on Fluent Ribbon in Word 2007

The XML customization markup is incremental in that each section of the code adds a single component to the Office Fluent Ribbon. To help you understand how this works, this section walks you through the customization file used in the Get Started Tab add-in sample.

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
  <ribbon>
    <tabs>
      <tab id="tr" label="Get Started">
        <group id="c1" label="Find a Command" >
......
        </group>
      </tab>
    </tabs>
  </ribbon>
</customUI>

The beginning statement indicates to the Office application that this is customization markup for the Office Fluent Ribbon. The xmlns attribute specifies the namespace where the names of the Office Fluent Ribbon components are defined. The <ribbon> element is the container (root) element for all of the other elements.

NoteNote

The <ribbon> element contains an attribute named startFromScratch. Setting this attribute to True removes all other tabs when the application launches so that you can display just the custom tabs that you define. The attribute is assumed to be False if it is not set explicitly.

The <tabs> element is the container element for one or more <tab> elements. The <tab> element defines the Get Started tab by specifying the id and label attributes. In callback procedures, the id attribute identifies the control. The label attribute contains the text that is displayed with the control.

Each tab component contains groups that identify related components. The group in this sample contains components related to helping you find the location of Office 2003 controls, commands, and menus in the new Office Fluent UI.

The following code example defines a button control that resides in the Find a Command group.

<button id="b1" label="Interactive Lookup Tool" size="large" 
   imageMso="SharePointListsWorkOffline"
   screentip="Interactive Lookup Tool"
   supertip="Point at Word 2003 buttons and commands to see them in Word 2007."
   onAction="openPage"
   tag="http://office.microsoft.com/search/redir.aspx?AssetID=HA100744321033&amp;CTT=4&amp;
   Origin=EC102128421033" />
NoteNote

The components defined in the add-in use only a subset of the total number of attributes that are available for a control. For a list of all of the attributes and callbacks for each of the Ribbon components, see Customizing the 2007 Office Fluent Ribbon for Developers (Part 2 of 3).

The first of the attributes in the sample specifies the size of the button. The choices available for controls that support the size attribute are "normal" and "large". Next the button's image is defined by the imageMso attribute. The Mso suffix is important. In addition to the ability to create custom controls, you can also access many controls and features that are part of the default Office Fluent UI. The Mso extension in an attribute name differentiates built-in features from custom features. For example, the id attribute for the built-in Font button is written as idMso="Font"; whereas a custom button is defined as id="button1". Just as there are built-in controls, there are also built-in images. So, in the custom button in the previous example, the built-in image is specified by imageMso="SharePointListsWorkOffline". In Figure 2, you see the built-in image associated with this name on the Interactive lookup tool button.

Continuing with the example, you can specify information to display when a user moves the mouse over the control (called Enhanced ScreenTips) by assigning text to the screentip attribute or supertip attribute.

screentip="Interactive Lookup Tool" 
supertip="Point at Word 2003 buttons and commands to see them in Word 2007."

Enhanced ScreenTip text provides additional information for a ScreenTip.

The onAction attribute points to a callback procedure that contains the action executed when you access the control—in this case, when you click the button. For example, in the Get Started Tab add-in, the onAction attribute points to the openPage subroutine, which opens a Web page in a browser.

Sub openPage(ByVal control As IRibbonControl)
   Shell("c:\program files\internet explorer\iexplore " & control.Tag, vbMaximizedFocus)
End Sub

Notice that the callback procedure receives an IRibbonControl object representing the control making the call. This allows the procedure to identify which control made the call and use that information to determine what action to execute. Next, you can set the tag attribute to any unique value. This means that you can use this value for other purposes, such as in a callback procedure. For example, consider the following statement:

tag=http://office.microsoft.com/search/redir.aspx?AssetID=HA100744321033&amp;CTT=4&amp;Origin=EC102128421033

In the Get Started add-in example, the openPage subroutine opens Internet Explorer. However, for the procedure to be useful, the browser needs to open to a specific page. To do this, you can use the tag attribute to store the page's address. Then, when the openPage callback procedure is called with the IRibbonControl object representing the button control, you can use the control's tag property to open the browser to the correct page.

This completes the walk through of one of the custom buttons on the Office Fluent Ribbon. The other groups and buttons function in a similar way, as you see in subsequent sections of this article.

Working with the Get Started Tab Add-in Project

Customizations made with COM add-ins result in application-level changes, in that the modified Office Fluent Ribbon appears in the application regardless of what document is open. Additionally, there are generally two options for creating COM add-ins in managed code: You can use the Shared Add-In template that is included with Microsoft Visual Studio 2005, or you can use Microsoft Visual Studio 2005 Tools for Office Second Edition, which makes it even easier to create add-ins. For more information about creating application-level add-ins by using Visual Studio 2005 Tools for Office, see Getting Started Programming Application-Level Add-Ins.

NoteNote

Code that runs under the Common Language Runtime is called managed code. This includes Microsoft Visual Basic .NET code, Microsoft Visual C# code, and Microsoft ASP.NET code. Code that does not run under the Common Language Runtime, such as Visual Basic for Applications (VBA) code and Visual Basic 6.0 code, is called unmanaged code.

The following steps describe the underlying method call sequence for a COM add-in that customizes the Ribbon.

Customizing the Office Fluent Ribbon by Using COM Add-Ins

The following steps describe the general process for creating a COM add-in that customizes the Fluent Ribbon:

  1. Create a COM add-in project.

    The add-in you create must implement the Extensibility.IDTExtensibility2 interface and the IRibbonExtensibility interface in the Microsoft.Office.Core namespace.

  2. Build the add-in project and setup project, and then install the project.

  3. Start the Office application.

When the add-in loads, the IDTExtensibility2::OnConnection event is triggered, which initializes the add-in, just as in previous versions of Office.

Next, the application calls the IRibbonExtensibility::GetCustomUI method, which returns the XML markup from an XML customization file or from XML markup embedded in the procedure, and then it loads the customized Office Fluent Ribbon into the application. Finally, the customized Ribbon is ready for the user.

Using Callback Procedures

As stated previously, each control specified in the XML markup exposes its functionality through callback procedures. For example, the XML markup for a button control can specify an onAction attribute that points to a procedure that is executed when the user clicks the button. In most cases, the callback procedure exposes an IRibbonControl interface that identifies the control. However, the callback might also pass other arguments, such as a Boolean object that specifies the state of a toggle button as pressed or not pressed or the identifier of the item selected in a combo box control. The IRibbonControl interface implements three properties: the Contextobject, the Id object, and the tag property. The Context object is the active window that contains the Office Fluent Ribbon that triggers the callback. The Id object is the string identifier of the custom control specified in the markup. The tag property, as you saw previously, is a non-unique property that you can optionally specify in the markup.

Using a Shared COM Add-in to Create the Get Started Tab Project

The following example uses a managed COM add-in to customize the Office Fluent Ribbon in Word 2007. The add-in creates the Get Started tab, with several groups and buttons. When you click the buttons, the add-in opens specific Web pages. In this case, it opens Office Word 2007 training resources.

NoteNote

You can follow the same process to create the Get Started Tab project in Excel 2007 and PowerPoint 2007. In the discussion that follows, areas where you can substitute the name of your own application are marked with application.

To create the add-in solution

Using the following steps, create the Get Started Tab add-in project.

  1. Start Visual Studio 2005.

  2. On the File menu, point to New, and then click Project.

  3. In the New Project dialog box, in the Project Types pane, expand Other Project Types, click Extensibility, and then select Shared Add-in.

  4. In the Name box, type application2007GetStartedTab, and then click OK to create the project.

  5. On the first page of the Shared Add-in Wizard, click Next.

  6. On the Select a Programming Language page, select Visual Basic, and then click Next.

  7. On the Select an Application Host page, clear all of the selections except for your Office application, and then click Next.

  8. On the Enter a Name and Description page, type GetStartedTab for the name and Adds a Get Started tab to the Office Fluent Ribbon for the description, and then click Next.

  9. On the Choose Add-in Options page, select I would like my Add-in to load when the host application loads, click Next, and then click Finish.

  10. Visual Studio creates a solution that contains two projects—the add-in class itself, and a Setup project. (The Setup project enables you to install the add-in on other users' computers, and it makes it easier for you, at design time, to install and uninstall the add-in.)

  11. To interact with the Office 2007 application and the Ribbon object model, add references to two type libraries.

To add references

  1. In Solution Explorer, expand the References folder.

    If you do not see the References folder, on the Project menu, click Show All Files.

  2. Delete the Microsoft.Office.Core reference.

  3. Right-click the References folder, and then click Add Reference.

  4. Click the COM tab, select Microsoft Office 12.0 Object Library, and then click OK.

  5. At the top of the open code file, add the following statements to the project.

    Imports Microsoft.Office.Core
    Imports application = Microsoft.Office.Interop.application
    

    For example, Imports Word = Microsoft.Office.Interop.Word.

To create an XML customization file

The following procedure creates the XML customization file for Office Word 2007. Versions of the same XML customization file for Office Excel 2007 and Office PowerPoint 2007 are included at the end of this article.

  1. On the Project menu, click Add New Item.

  2. In the Add New Item dialog box, select XML File. Name the new file Ribbon.xml, and then click Add.

  3. In the new XML file, add the following XML markup.

    <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
      <ribbon>
        <tabs>
          <tab id="tr" label="Get Started">
            <group id="c1" label="Find a Command" >
              <button id="b1" label="Interactive Lookup Tool" size="large" imageMso="SharePointListsWorkOffline" 
              screentip="Interactive Lookup Tool" 
              supertip="Point at Word 2003 buttons and commands to see them in Word 2007" onAction="openPage" 
              tag="http://office.microsoft.com/search/redir.aspx?
              AssetID=HA100744321033&amp;CTT=4&amp;Origin=EC102128421033" />
            </group>
    
            <group id="c2" label="Get Online Training">
              <button id="b2" label="Up to Speed Course" size="large" imageMso="RecurrenceEdit" 
              screentip="Up to Speed Course" 
              supertip="Learn quickly how to use Word 2007." onAction="openPage" 
              tag=http://office.microsoft.com/search/redir.aspx?
              AssetID=RC100664431033&amp;CTT=4&amp;Origin=EC102128421033 />
            </group>
    
            <group id="c3" label="Watch Demos">
              <button id="vid" label="Word 2007 Overview" size="large" imageMso="ContactPictureMenu" 
              screentip="Word 2007 Overview" 
              supertip="See Word 2007 in action." onAction="openPage" 
              tag=http://office.microsoft.com/search/redir.aspx?
              AssetID=HA101672751033&amp;CTT=4&amp;Origin=EC102128421033 />
              <button id="b3" label="Up to Speed" size="large" imageMso="MovieFromFileInsert" 
              screentip="Up to Speed" 
              supertip="Get familiar with Word 2007, and see why you won't have to learn Word all over again." 
              onAction="openPage" 
              tag="http://office.microsoft.com/search/redir.aspx?AssetID=HA100484691033&amp;CTT=4&amp;Origin=EC102128421033" />
            </group>
    
            <group id="c4" label="Ask the Community">
              <button id="b4" label="Discuss Word 2007" size="large" imageMso="MeetingsWorkspace" 
              screentip="Discuss Word 2007" 
              supertip="Questions? Ask someone for answers." onAction="openPage" 
              tag=http://office.microsoft.com/search/redir.aspx?
              AssetID=HA012061421033&amp;CTT=4&amp;Origin=EC102128421033 />
            </group>
    
            <group id="c5" label="View Home Pages">
              <button id="b5" label="Training" size="large" imageMso="BlogHomePage" 
              screentip=" Training " 
              supertip="See more free online training." onAction="openPage" 
              tag="http://office.microsoft.com/search/redir.aspx?
              AssetID=FX100565001033&amp;CTT=4&amp;Origin=EC102128421033" />
              <button id="b6" label="Demos" size="large" imageMso="MovieFromFileInsert" 
              screentip="Demos" 
              supertip="See more video demos." onAction="openPage" 
              tag="http://office.microsoft.com/search/redir.aspx?AssetID=FX100485311033&amp;CTT=4&amp;Origin=EC102128421033" />
              <button id="b7" label="Word 2007" size="large" imageMso="FileSaveAsWord97_2003" 
              screentip="Word 2007" supertip="See more video demos." onAction="openPage" 
              tag="http://office.microsoft.com/search/redir.aspx?AssetID=FX100649251033&amp;CTT=4&amp;Origin=EC102128421033" />
            </group>
          </tab>
        </tabs>
      </ribbon>
    </customUI>
    
  4. Save and close the file.

NoteNote

It is easier to use the XML file if it is treated as a resource within the project's resource file.

To create the XML resource

To add the file to the project as a resource:

  1. In Solution Explorer, select Ribbon.xml.

  2. In the Properties window, select the Build Action property, and then select Embedded Resource in the list of options.

  3. On the Project menu, click applicationGetStartedTab Properties.

  4. Click the Resources tab.

  5. From Solution Explorer, drag Ribbon.xml onto the Resources design surface.

    This action creates a file-based resource that contains the XML content. From now on, the Ribbon.xml file is automatically stored as an application resource, and you can retrieve this content by using Visual Basic language features.

  6. Close the Resources window. When prompted, click Yes to save the resources.

To access the host application and work with the Ribbon

  1. In Solution Explorer, right-click Connect.vb, and then click View Code.

  2. Find the existing declaration for the applicationObject variable, and modify it so that it refers to an Application object for the particular Office application. That is, modify the declaration so that it looks like the following code.

    Private applicationObject As application.Application
    
  3. Modify the existing first line of the OnConnection method, which creates an instance of the Application object for the Office application.

    applicationObject = DirectCast(application, application.Application)
    
  4. Modify the line of code near the top of the class that starts with Implements by adding support for implementing the IRibbonExtensibility namespace. Visual Basic inserts the GetCustomUI procedure automatically. If it does not, copy the procedure into the class.

    Implements Extensibility.IDTExtensibility2, IRibbonExtensibility
    
  5. Modify the GetCustomUI method so that it looks like the following code.

    Public Function GetCustomUI(ByVal RibbonID As String) As String _
      Implements Microsoft.Office.Core.IRibbonExtensibility.GetCustomUI
      Return My.Resources.Ribbon
    End Function
    
    Caution noteCaution

    You should implement the GetCustomUI method to return the XML string for your Ribbon customization. Do not use the GetCustomUI method for initialization. In particular, you should not attempt to display any dialog boxes or message windows in your GetCustomUI implementation. The more appropriate place to do initialization is in the OnConnection method.

  6. Add the following method to the class. This method opens Internet Explorer in full-screen mode to a Web page specified by the tag property of the control that called the procedure.

    #Region "Callbacks"
        Sub openPage(ByVal control As IRibbonControl)
            Shell("c:\program files\internet explorer\iexplore " & control.Tag, vbMaximizedFocus)
        End Sub
    #End Region
    
  7. On the File menu, click Save All.

  8. Exit the Office application if it is running.

  9. On the Build menu, click Build Solution.

  10. In Solution Explorer, right-click application2007GetStartedTabSetup, and then click Build.

  11. Right-click application2007GetStartedTabSetup, and then click Install.

    The Setup Wizard appears.

  12. Click Next on each of the pages of the wizard, and then click Close on the last page.

  13. Start the Office application.

    The Get Started tab appears to the right of the other tabs.

  14. Click Get Started, and then click Interactive lookup tool. Word opens the browser to the Microsoft Office Online Web page.

    Figure 3. Clicking the button opens the Office Online page

    Clicking the button opens the Office Online page

  15. Exit Word.

  16. In Visual Studio, in Solution Explorer, right-click application2007GetStartedTabSetup, and then click Uninstall.

  17. Click the other buttons to see the rich training information available to you about the 2007 Office application.

XML Customization File for Office Excel 2007

This section provides the XML customization file for Office Excel. Substitute this file for the Word XML customization file in the To create an XML customization file section of this article.

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
  <ribbon>
    <tabs>
      <tab id="tr" label="Get Started">
        <group id="c1" label="Find a Command">
          <button id="b1" label="Interactive Lookup Tool" size="large" imageMso="SharePointListsWorkOffline"
          screentip="Interactive Lookup Tool" 
          supertip="Point at Excel 2003 buttons and commands to see them in Excel 2007." 
          onAction="openPage" tag="http://office.microsoft.com/search/redir.aspx?
          AssetID=HA101491511033&amp;
          CTT=4&amp; Origin=EC102130091033" />
        </group>

        <group id="c2" label="Get Online Training">
          <button id="b2" label="Up to Speed Course" size="large" imageMso="RecurrenceEdit" 
          screentip="Up to Speed Course" supertip="Learn quickly how to use Excel 2007. onAction="openPage" 
          tag="http://office.microsoft.com/search/redir.aspx?AssetID=RC100620751033&amp;
          CTT=4&amp;Origin=EC102130091033"/>
        </group>

        <group id="c3" label="Watch Demos">
          <button id="vid" label="Excel 2007 Overview" size="large" imageMso="ContactPictureMenu" 
          screentip="Excel 2007 Overview" supertip="See Excel 2007 in action." onAction="openPage" 
          tag="http://office.microsoft.com/search/redir.aspx?
          AssetID=HA101672621033&amp;CTT=4&amp;Origin=EC102130091033"/>
          <button id="b3" label="Up to Speed" size="large" imageMso="MovieFromFileInsert"
          screentip="Up to Speed" supertip="Get familiar with Excel 2007, and see why you 
          won't have to learn Excel all over again." onAction="openPage"tag=
          "http://office.microsoft.com/search/redir.aspx?AssetID=HA100484501033&amp;CTT=4&amp;
           Origin=EC102130091033" />
        </group>

        <group id="c4" label="Ask the Community">
          <button id="b4" label="Discuss Excel 2007" size="large" imageMso="MeetingsWorkspace" 
          screentip="Discuss Excel 2007" supertip="Questions? Ask someone for answers." 
          onAction="openPage"tag="http://office.microsoft.com/search/redir.aspx?
         AssetID=HA011918011033&amp;CTT=4&amp;Origin=EC102130091033"/>
        </group>

        <group id="c5" label="View Home Pages">
          <button id="b5" label="Training" size="large" imageMso="BlogHomePage" 
          screentip="Training" supertip="See more free online training." onAction="openPage" 
          tag="http://office.microsoft.com/search/redir.aspx?AssetID=FX100565001033&
          amp;CTT=4&amp;Origin=EC102130091033" />
          <button id="b6" label="Demos" size="large" imageMso="MovieFromFileInsert" 
          screentip="Demos" supertip="See more video demos." onAction="openPage" 
          tag="http://office.microsoft.com/search/redir.aspx?AssetID=FX100485311033
          &amp;CTT=4&amp; Origin=EC102130091033" />
          <button id="b7" label="Excel 2007" size="large" imageMso="FileSaveAsExcel97_2003" 
          screentip="Excel 2007" supertip="Help and how-to information." onAction="openPage" 
          tag="http://office.microsoft.com/search/redir.aspx?AssetID=FX100646951033
          &amp;CTT=4&amp; Origin=EC102130091033" />
        </group>
      </tab>
    </tabs>
  </ribbon>
</customUI>

XML Customization File for Office PowerPoint 2007

This section provides the XML customization file for Office PowerPoint. Substitute this file for the Word XML customization file in the To create an XML customization file section of this article.

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
  <ribbon>
    <tabs>
      <tab id="tr" label="Get Started" >
        <group id="c1" label="Find a Command">
          <button id="b1" label="Interactive Lookup Tool" size="large" imageMso="SharePointListsWorkOffline"
          screentip="Interactive Lookup Tool" supertip="Point at PowerPoint 2003 buttons and commands 
          to see them in PowerPoint 2007."
          onAction="openPage" tag="http://office.microsoft.com/search/
          redir.aspx?AssetID=HA101490761033
          &amp;CTT=4&amp;Origin=EC102130081033" />

        </group>
        <group id="c2" label="Get Online Training">
          <button id="b2" label="Up to Speed Course" size="large" imageMso="RecurrenceEdit" 
          screentip="Up to Speed Course" supertip="Learn quickly how to use PowerPoint 2007." 
          onAction="openPage" tag="http://office.microsoft.com/search/redir.aspx?AssetID=RC100687671033
          &amp;CTT=4&amp;Origin=EC102130081033"/>

        </group>
        <group id="c3" label="Watch Demos">
          <button id="vid" label="PowerPoint 2007 Overview" size="large" imageMso=
          "ContactPictureMenu" screentip="PowerPoint 2007 Overview" supertip="See PowerPoint 2007 
           in action." onAction="openPage" tag="http://office.microsoft.com/search/redir.aspx
          ?AssetID=HA101672691033&amp;CTT=4&amp;Origin=EC102130081033"/>
          <button id="b3" label="Up to Speed" size="large" imageMso="MovieFromFileInsert"
          screentip="Up to Speed" supertip="Get familiar with PowerPoint 2007, and see why 
          you won't have to learn PowerPoint all over again." onAction="openPage" tag="
          http://office.microsoft.com/search/redir.aspx?AssetID=HA100484621033
          &amp;CTT=4&amp; Origin=EC102130081033" />
        </group>

        <group id="c4" label="Ask the Community">
          <button id="b4" label="Discuss PowerPoint 2007" size="large" imageMso="MeetingsWorkspace" 
          screentip="Discuss PowerPoint 2007" supertip="Questions? Ask someone for answers." 
          onAction="openPage" tag="http://office.microsoft.com/search/redir.aspx?
          AssetID=HA011595831033&amp;CTT=4&amp;Origin=EC102130081033"/>
        </group>

        <group id="c5" label="View Home Pages">
          <button id="b5" label="Training" size="large" imageMso="BlogHomePage" 
          screentip="Training" supertip="See more free online training." onAction="openPage" tag="
          http://office.microsoft.com/search/redir.aspx?AssetID=FX100565001033
          &amp;CTT=4&amp; Origin=EC102130081033" />
          <button id="b6" label="Demos" size="large" imageMso="MovieFromFileInsert" 
          screentip="Demos" supertip="See more video demos." onAction="openPage" tag="
          http://office.microsoft.com/search/redir.aspx?AssetID=FX100485311033&amp;
          CTT=4&amp;Origin=EC102130081033" />
          <button id="b7" label="PowerPoint 2007" size="large" imageMso=
          "FileSaveAsPowerPoint97_2003" screentip="PowerPoint 2007" supertip="Help and 
          how-to information." 
          onAction="openPage" tag="http://office.microsoft.com
          /search/redir.aspx?AssetID=FX100648951033&amp;CTT=4&amp;
          Origin=EC102130081033" />
        </group>
      </tab>
    </tabs>
  </ribbon>
</customUI>

Conclusion

Customizing the Office Fluent Ribbon is relatively simple and straightforward. By using just a few custom controls, you can access external resources such as those seen in the Get Started Tab example. By substituting the addresses for support pages on your intranet, you can provide your users with easy access to the information they need.

Additional Resources

To find more information about subjects related to the techniques discussed in this article, see the following resources: