Office附加功能区:带有2个插件的相同选项卡

Mar*_*lor 8 .net c# xml add-in ms-office

我正在尝试使两个单词加载项组出现在同一个选项卡(工具)中,但它们都创建了唯一的选项卡(有两个"工具"选项卡).我看过这个视频,但我使用的是可视设计器,而不是XML.

我可以用某种方式编辑设计器代码来使其工作吗?

Jer*_*son 5

http://blogs.msdn.com/b/vsto/archive/2008/03/10/share-a-ribbon-customization-between-office-applications.aspx

办公室 2007

创建功能区

  1. 在 Visual Studio 中创建 2007 Excel、Outlook、PowerPoint 或 Word 项目。出于这些步骤的目的,创建一个 C# 项目并将该项目命名为 RibbonStarterProject。
  2. 将功能区(可视化设计器)项添加到项目中。就这些步骤而言,接受默认名称“Ribbon1”。
  3. 保存并关闭项目。

创建类库项目

  1. 在 Visual Studio 中创建一个新的类库项目。出于这些步骤的目的,将项目命名为 SharedRibbonLibrary。
  2. 添加对 Microsoft.Office.Tools.Common.v9.0 程序集的项目引用。
  3. 在 Visual Studio 的“项目”菜单上,单击“添加现有项”。
  4. 在“添加现有项目”对话框中,浏览到“RibbonStarterProject”项目目录,选择 Ribbon.cs 文件,然后单击“添加”。Ribbon1.cs 被复制到项目目录并出现在解决方案资源管理器中的项目节点下方。
  5. 双击 Ribbon1.cs。功能区设计器出现。
  6. 从工具箱的 Office 功能区控件选项卡中,将一个按钮拖到 group1 上。
  7. 单击按钮 1 将其选中。
  8. 在“属性”窗口中,将“修饰符”设置为“公共”。注意:默认情况下,您添加到功能区的控件是内部的。这使得它们只能被同一程序集中的代码访问。但是,当您访问这些控件时,您将通过程序集引用访问它们。因此,要通过代码访问它们,您必须将它们公开。很快就会有更多的介绍。
  9. 右键单击功能区设计器,然后单击“属性”。
  10. 在“属性”窗口中,单击“RibbonType”属性,然后选择要在其中显示功能区的应用程序或 Outlook 检查器窗口的功能区 ID。有关此属性的详细信息,请参阅 RibbonType 属性的 MSDN 参考主题。
  11. 在解决方案资源管理器中,右键单击 Ribbon1.cs,然后单击查看代码。
  12. 将类的命名空间更改为“SharedRibbonLibrary”。
  13. 对 Ribbon1.designer.cs 文件重复此步骤。
  14. 编译并保存 SharedRibbonLibrary 项目。您现在可以在任何支持功能区的 VSTO 项目中使用生成的程序集。

使用功能区自定义

  1. 创建 2007 Excel、Outlook、PowerPoint 或 Word 项目。
  2. 添加对 SharedRibbonLibrary 程序集的引用。
  3. 将以下代码添加到项目的 ThisAddin、ThisWorkbook 或 ThisDocument 类。此代码覆盖 CreateRibbonExtensibilityObject 方法并将功能区返回给 Office 应用程序。

    protected override Microsoft.Office.Core.IRibbonExtensibility
    CreateRibbonExtensibilityObject()
    {
         return new Microsoft.Office.Tools.Ribbon.RibbonManager(
         new Microsoft.Office.Tools.Ribbon.OfficeRibbon[] { new       
            SharedRibbonLibrary.Ribbon1() });
    
    }
    
    Run Code Online (Sandbox Code Playgroud)
  4. 向项目添加一个新类。接受默认名称“Class1.cs”。

  5. 将 Class1 文件中的代码替换为以下内容:

     partial class ThisRibbonCollection :    Microsoft.Office.Tools.Ribbon.RibbonReadOnlyCollection
    {
     internal SharedRibbonLibrary.Ribbon1 Ribbon1
     {
         get { return this.GetRibbon<SharedRibbonLibrary.Ribbon1>(); }
     }
    }
    
    Run Code Online (Sandbox Code Playgroud)

好的 - 你完成了!您现在可以访问功能区和您在代码中添加到功能区的按钮。让我们尝试处理消费项目中的事件。

处理按钮点击事件

  1. 将以下代码添加到项目的启动事件处理程序中。

    Globals.Ribbons.Ribbon1.button1.Click += new EventHandler<Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs>(button1_Click);
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将以下事件处理程序添加到您的项目中:

    void button1_Click(object sender,
    Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs e)
    {
    System.Windows.Forms.MessageBox.Show("I can handle events!");
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 运行项目。

  4. 当 Office 应用程序打开时,单击加载项选项卡,然后单击您的按钮。一条消息说“我可以处理事件!” 出现。

Office 2010实施:http : //blogs.msdn.com/b/vsto/archive/2010/06/23/sharing-a-ribbon-customization-between-office-projects-in-visual-studio-2010-mclean-斯科菲尔德.aspx

2010 年的实现实际上添加了两个功能区 - 每个加载项一个。我相信这篇文章仅适用于不同 Office 产品(例如 Word 和 Excel)中同一功能区上的加载项,而不适用于两个 Excel 加载项。

我发现的唯一其他途径是第 3 方组件:http : //www.add-in-express.com/creating-addins-blog/2012/11/05/excel-addin-shared-ribbon-tabs/