Office附加function区:带有2个插件的相同选项卡
我正在尝试使两个单词加载项组出现在同一个选项卡(工具)中,但它们都创建了独特的选项卡(有两个“工具”选项卡)。 我看过这个video,但我使用的是可视设计器,而不是XML。
我可以用某种方式编辑设计器代码来使其工作吗?
Office 2007
创建function区
- 在Visual Studio中创建2007 Excel,Outlook,PowerPoint或Word项目。 出于这些步骤的目的,创建一个C#项目并将项目命名为RibbonStarterProject。
- 将一个function区(可视设计器)项添加到项目中。 出于这些步骤的目的,接受默认名称“Ribbon1”。
- 保存并关闭项目。
创建一个类库项目
- 在Visual Studio中创建一个新的类库项目。 出于这些步骤的目的,将项目命名为SharedRibbonLibrary。
- 将项目引用添加到Microsoft.Office.Tools.Common.v9.0程序集。
- 在Visual Studio的“项目”菜单上,单击“添加现有项”。
- 在“添加现有项”对话框中,浏览到“RibbonStarterProject”项目目录,选择Ribbon.cs文件,然后单击“添加”。 Ribbon1.cs将复制到项目目录,并显示在解决方案资源管理器中的项目节点下方。
- 双击Ribbon1.cs。 function区设计器出现。
- 从“工具箱”的“Officefunction区控件”选项卡中,将按钮拖到group1上。
- 单击button1选择它。
- 在“属性”窗口中,将“Modifiers”设置为“Public”。 注意:默认情况下,添加到function区的控件是“内部”。 这使得它们只能访问同一程序集中的代码。 但是,当您访问这些控件时,您将通过程序集引用访问它们。 因此,要从代码中获取它们,您必须将它们公开。 更多关于这一点。
- 右键单击function区设计器,然后单击“属性”。
- 在“属性”窗口中,单击“RibbonType”属性,然后选择要在其中显示function区的应用程序或Outlook Inspector窗口的function区ID。 有关此属性的更多信息,请参阅RibbonType属性的MSDN参考主题。
- 在“解决方案资源管理器”中,右键单击“Ribbon1.cs”,然后单击“查看代码”。
- 将类的名称空间更改为“SharedRibbonLibrary”。
- 对Ribbon1.designer.cs文件重复此步骤。
- 编译并保存SharedRibbonLibrary项目。 您现在可以在任何支持function区的VSTO项目中使用生成的程序集。
使用function区自定义
- 创建2007 Excel,Outlook,PowerPoint或Word项目。
- 添加对SharedRibbonLibrary程序集的引用。
-
将以下代码添加到项目的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() }); }
-
向项目添加新类。 接受默认名称“Class1.cs”。
-
使用以下内容替换Class1文件中的代码:
partial class ThisRibbonCollection : Microsoft.Office.Tools.Ribbon.RibbonReadOnlyCollection { internal SharedRibbonLibrary.Ribbon1 Ribbon1 { get { return this.GetRibbon
(); } } }
好的 – 你完成了! 您现在可以访问function区和您在代码中添加到function区的按钮。 让我们尝试处理消费项目中的事件。
处理按钮单击事件
-
将以下代码添加到项目的启动事件处理程序中。
Globals.Ribbons.Ribbon1.button1.Click += new EventHandler
(button1_Click); -
将以下事件处理程序添加到项目中:
void button1_Click(object sender, Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs e) { System.Windows.Forms.MessageBox.Show("I can handle events!"); }
-
运行该项目。
-
打开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/