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

时间:2011-08-20 23:57:56

标签: c# .net xml ms-office add-in

我正在尝试使两个单词加载项组出现在同一个标​​签(工具)中,但它们都创建了唯一的标签(有两个“工具”标签)。我saw this video但我使用的是可视设计器,而不是XML。

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

1 个答案:

答案 0 :(得分:4)

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

Office 2007

创建功能区

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

    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. 在Solution Explorer中,右键单击Ribbon1.cs,然后单击View Code。
    12. 将类的名称空间更改为“SharedRibbonLibrary”。
    13. 对Ribbon1.designer.cs文件重复此步骤。
    14. 编译并保存SharedRibbonLibrary项目。您现在可以在任何支持功能区的VSTO项目中使用生成的程序集。
    15. 使用功能区自定义

      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() });
        
        }
        
      4. 向项目添加新类。接受默认名称“Class1.cs”。

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

         partial class ThisRibbonCollection :    Microsoft.Office.Tools.Ribbon.RibbonReadOnlyCollection
        {
         internal SharedRibbonLibrary.Ribbon1 Ribbon1
         {
             get { return this.GetRibbon<SharedRibbonLibrary.Ribbon1>(); }
         }
        }
        
      6. 好的 - 你完成了!您现在可以访问功能区和您在代码中添加到功能区的按钮。让我们尝试处理消费项目中的事件。

        处理按钮单击事件

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

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

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

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

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

          2010年的实施实际上增加了两个色带 - 每个插件一个。我相信该文章仅适用于不同Office产品(例如Word和Excel)中相同功能区的加载项,而不适用于两个Excel加载项。

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