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

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

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

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

Office 2007

创建function区

  1. 在Visual Studio中创建2007 Excel,Outlook,PowerPoint或Word项目。 出于这些步骤的目的,创建一个C#项目并将项目命名为RibbonStarterProject。
  2. 将一个function区(可视设计器)项添加到项目中。 出于这些步骤的目的,接受默认名称“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。 function区设计器出现。
  6. 从“工具箱”的“Officefunction区控件”选项卡中,将按钮拖到group1上。
  7. 单击button1选择它。
  8. 在“属性”窗口中,将“Modifiers”设置为“Public”。 注意:默认情况下,添加到function区的控件是“内部”。 这使得它们只能访问同一程序集中的代码。 但是,当您访问这些控件时,您将通过程序集引用访问它们。 因此,要从代码中获取它们,您必须将它们公开。 更多关于这一点。
  9. 右键单击function区设计器,然后单击“属性”。
  10. 在“属性”窗口中,单击“RibbonType”属性,然后选择要在其中显示function区的应用程序或Outlook Inspector窗口的function区ID。 有关此属性的更多信息,请参阅RibbonType属性的MSDN参考主题。
  11. 在“解决方案资源管理器”中,右键单击“Ribbon1.cs”,然后单击“查看代码”。
  12. 将类的名称空间更改为“SharedRibbonLibrary”。
  13. 对Ribbon1.designer.cs文件重复此步骤。
  14. 编译并保存SharedRibbonLibrary项目。 您现在可以在任何支持function区的VSTO项目中使用生成的程序集。

使用function区自定义

  1. 创建2007 Excel,Outlook,PowerPoint或Word项目。
  2. 添加对SharedRibbonLibrary程序集的引用。
  3. 将以下代码添加到项目的ThisAddin,ThisWorkbook或ThisDocument类中。 此代码重写CreateRibbonExtensibilityObject方法并将function区返回到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(); } } } 

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

处理按钮单击事件

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

     Globals.Ribbons.Ribbon1.button1.Click += new EventHandler(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应用程序时,单击“加载项”选项卡,然后单击按钮。 出现一条消息“我可以处理事件!”。

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)中相同function区的加载项,而不适用于两个Excel加载项。

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