演练:使用功能区 XML 创建自定义选项卡

更新:2007 年 11 月

适用对象

本主题中的信息仅适用于指定的 Visual Studio Tools for Office 项目和 Microsoft Office 版本。

项目类型

  • 文档级项目

  • 应用程序级项目

Microsoft Office 版本

  • Excel 2007

  • Word 2007

  • Outlook 2007

  • PowerPoint 2007

有关更多信息,请参见按应用程序和项目类型提供的功能

此演练演示如何使用“功能区(XML)”项创建自定义功能区选项卡。

本演练阐释以下任务:

  • 将按钮添加到“外接程序”选项卡上。“外接程序”选项卡是在功能区 XML 文件中定义的默认选项卡。

  • 使用“外接程序”选项卡上的按钮实现 Microsoft Office Word 2007 的自动化。

Aa942955.alert_note(zh-cn,VS.90).gif说明:

以下说明中的某些 Visual Studio 用户界面元素在计算机上出现的名称或位置可能会不同。您安装的 Visual Studio 版本以及使用的设置决定了这些元素。有关更多信息,请参见 Visual Studio 设置

先决条件

您需要以下组件来完成本演练:

  • Visual Studio Tools for Office(Visual Studio 2008 专业版 和 Visual Studio Team System 的可选组件)。

  • Microsoft Office Word 2007。

默认情况下,Visual Studio Tools for Office 随列出的 Visual Studio 版本一起安装。若要检查它是否已安装,请参见安装 Visual Studio Tools for Office

创建项目

第一步是创建一个 Word 2007 外接程序项目。然后自定义此文档的“外接程序”选项卡。

创建新项目

  • 创建一个名为“MyRibbonAddIn”(我的功能区外接程序)的“Word 外接程序”项目。

    请确保使用适用于 2007 Microsoft Office system 的“Word 外接程序”项目模板。有关更多信息,请参见如何:创建 Visual Studio Tools for Office 项目

    Visual Studio 打开 ThisAddIn.cs 或 ThisAddIn.vb 代码文件,并将“MyRibbonAddIn”(我的功能区外接程序)项目添加到“解决方案资源管理器”中。

创建“外接程序”选项卡

若要创建“外接程序”选项卡,请将一个“功能区(XML)”项添加到您的项目。在此演练后面的部分,您将在此选项卡上添加一些按钮。

创建“外接程序”选项卡

  1. 在“项目”菜单上单击“添加新项”。

  2. 在“添加新项”对话框中,选择“功能区(XML)”。

  3. 将新功能区更名为 MyRibbon,然后单击“添加”。

    MyRibbon.cs 或 MyRibbon.vb 文件在设计器中打开。名为 MyRibbon.xml 的 XML 文件也将添加到项目中。

  4. 在“解决方案资源管理器”中右击“ThisDocument.cs”或“ThisDocument.vb”,然后单击“查看代码”。

  5. 向“ThisAddin”类中添加下面的代码。这段代码重写 CreateRibbonExtensibilityObject 方法,将功能区 XML 类返回给 Office 应用程序。

    Protected Overrides Function CreateRibbonExtensibilityObject() As  _
    Microsoft.Office.Core.IRibbonExtensibility
        Return New MyRibbon()
    End Function
    
    protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject()
    {
        return new MyRibbon();
    }
    
  6. 在“解决方案资源管理器”中,右击“MyRibbonAddIn”(我的功能区外接程序)项目,然后单击“生成”。验证项目已生成且未发生错误。

将按钮添加到“外接程序”选项卡上

此外接程序的目的是向用户提供一种将样本文字和特定表添加到活动文档的方法。若要提供用户界面,请通过修改功能区 XML 文件来向“外接程序”选项卡添加两个按钮。在此演练后面的部分中,您将为这两个按钮定义回调方法。有关功能区 XML 文件的更多信息,请参见 功能区 XML

向“外接程序”选项卡添加按钮

  1. 在“解决方案资源管理器”中,右击“MyRibbon.xml”,然后单击“打开”。

  2. 用以下 XML 替换 tab 元素的内容。此 XML 可以将默认控件组的标签更改为“Content”(内容),并添加两个标签为“Insert Text”(插入文本)和“Insert Table”(插入表)的新按钮。

    <tab idMso="TabAddIns">
        <group id="ContentGroup" label="Content">
            <button id="textButton" label="Insert Text"
                 screentip="Text" onAction="OnTextButton"
                 supertip="Inserts text at the cursor location."/>
            <button id="tableButton" label="Insert Table"
                 screentip="Table" onAction="OnTableButton"
                 supertip="Inserts a table at the cursor location."/>
        </group>
    </tab>
    

使用按钮实现文档自动化

必须为“Insert Text”和“Insert Table”按钮添加 onAction 回调方法,使其可以在用户单击时执行操作。有关功能区控件回调方法的更多信息,请参见 功能区 XML

为按钮添加回调方法

  1. 在“解决方案资源管理器”中,右击“MyRibbon.cs”或“MyRibbon.vb”,然后单击“打开”。

  2. 将以下代码添加到 MyRibbon.cs 或 MyRibbon.vb 文件的开头部分。这些代码将为 Microsoft.Office.Interop.Word 命名空间创建一个别名。

    Imports Word = Microsoft.Office.Interop.Word
    
    using Word = Microsoft.Office.Interop.Word;
    
  3. 将下面的方法添加到 MyRibbon 类中。这是“Insert Text”按钮的回调方法,它将一个字符串添加到活动文档中光标的当前位置处。

    Public Sub OnTextButton(ByVal control As Office.IRibbonControl)
        Dim currentRange As Word.Range = Globals.ThisAddIn.Application.Selection.Range
        currentRange.Text = "This text was added by the Ribbon."
    End Sub
    
    public void OnTextButton(Office.IRibbonControl control)
    {
        Word.Range currentRange = Globals.ThisAddIn.Application.Selection.Range;
        currentRange.Text = "This text was added by the Ribbon.";
    }
    
  4. 将下面的方法添加到 MyRibbon 类中。这是“Insert Table”按钮的回调方法,它将一个表添加到活动文档中光标的当前位置处。

    Public Sub OnTableButton(ByVal control As Office.IRibbonControl)
        Dim missing As Object = System.Type.Missing
    
        Dim currentRange As Word.Range = Globals.ThisAddIn.Application.Selection.Range
        Dim newTable As Word.Table = Globals.ThisAddIn.Application.ActiveDocument.Tables.Add( _
                   currentRange, 3, 4)
    
        ' Get all of the borders except for the diagonal borders.
        Dim borders() As Word.Border = New Word.Border(6) {}
        borders(0) = newTable.Borders(Word.WdBorderType.wdBorderLeft)
        borders(1) = newTable.Borders(Word.WdBorderType.wdBorderRight)
        borders(2) = newTable.Borders(Word.WdBorderType.wdBorderTop)
        borders(3) = newTable.Borders(Word.WdBorderType.wdBorderBottom)
        borders(4) = newTable.Borders(Word.WdBorderType.wdBorderHorizontal)
        borders(5) = newTable.Borders(Word.WdBorderType.wdBorderVertical)
    
        ' Format each of the borders.
        For Each border As Word.Border In borders
            border.LineStyle = Word.WdLineStyle.wdLineStyleSingle
            border.Color = Word.WdColor.wdColorBlue
        Next
    End Sub
    
    public void OnTableButton(Office.IRibbonControl control)
    {
        object missing = System.Type.Missing;
        Word.Range currentRange = Globals.ThisAddIn.Application.Selection.Range;
        Word.Table newTable = Globals.ThisAddIn.Application.ActiveDocument.Tables.Add(
        currentRange, 3, 4, ref missing, ref missing);
    
        // Get all of the borders except for the diagonal borders.
        Word.Border[] borders = new Word.Border[6];
        borders[0] = newTable.Borders[Word.WdBorderType.wdBorderLeft];
        borders[1] = newTable.Borders[Word.WdBorderType.wdBorderRight];
        borders[2] = newTable.Borders[Word.WdBorderType.wdBorderTop];
        borders[3] = newTable.Borders[Word.WdBorderType.wdBorderBottom];
        borders[4] = newTable.Borders[Word.WdBorderType.wdBorderHorizontal];
        borders[5] = newTable.Borders[Word.WdBorderType.wdBorderVertical];
    
        // Format each of the borders.
        foreach (Word.Border border in borders)
        {
            border.LineStyle = Word.WdLineStyle.wdLineStyleSingle;
            border.Color = Word.WdColor.wdColorBlue;
        }
    }
    

测试外接程序

运行该项目时,将打开 Word 2007 并且在功能区上显示名为“外接程序”的选项卡。单击“外接程序”选项卡上的“Insert Text”和“Insert Table”按钮测试代码。

测试外接程序

  1. 按 F5 运行项目。

  2. 确认功能区上是否显示了“外接程序”选项卡。

  3. 单击“外接程序”选项卡。

  4. 确认功能区上是否显示了“Content”组。

  5. 单击“Content”组中的“Insert Text”按钮。

    将向文档中光标的当前位置处添加一个字符串。

  6. 单击“Content”组中的“Insert Table”按钮。

    将向文档中光标的当前位置处添加一个表格。

后续步骤

可从以下主题了解有关如何自定义 Office 用户界面的更多信息:

  • 自定义另一个 Office 应用程序的功能区。有关支持自定义功能区的应用程序的更多信息,请参见 功能区概述

  • 使用功能区设计器自定义 Office 应用程序的功能区。有关更多信息,请参见功能区设计器

  • 创建自定义操作窗格。有关更多信息,请参见操作窗格概述

  • 使用 Outlook 窗体区域自定义 Microsoft Office Outlook 2007 的 UI。有关更多信息,请参见演练:设计 Outlook 窗体区域

请参见

任务

演练:使用功能区设计器创建自定义选项卡

概念

功能区概述

功能区 XML