C#VSTO合并文档级功能区和应用程序级功能区

C#VSTO合并文档级功能区和应用程序级功能区,c#,excel,vsto,ribbon,C#,Excel,Vsto,Ribbon,我已经在Excel中创建了一个包含功能区的文档级自定义,我想为Excel创建一个应用程序级自定义,其中包含一个同名功能区。我的问题是如何让两个色带结合起来?目前,它们具有相同的自定义控件ID 控件的idQ属性用于允许多个加载项共享容器,如自定义选项卡和组 在下面的VBA示例中,两个Excel加载项在“加载项”选项卡上共享同一个“Contoso”组;每个按钮都会添加一个按钮。键在标记中指定相同的唯一命名空间。然后,控件可以使用idQ引用此命名空间 外接程序1的自定义UI 外接程序2的自定义UI

我已经在Excel中创建了一个包含功能区的文档级自定义,我想为Excel创建一个应用程序级自定义,其中包含一个同名功能区。我的问题是如何让两个色带结合起来?目前,它们具有相同的自定义控件ID


控件的idQ属性用于允许多个加载项共享容器,如自定义选项卡和组

在下面的VBA示例中,两个Excel加载项在“加载项”选项卡上共享同一个“Contoso”组;每个按钮都会添加一个按钮。键在标记中指定相同的唯一命名空间。然后,控件可以使用idQ引用此命名空间

外接程序1的自定义UI


外接程序2的自定义UI


如果使用COM外接程序自定义Fluent UI,则命名空间名称必须是COM外接程序的ProgID,但在其他方面行为相同。使用共享外接程序时,ProgID为AddInName.Connect。使用2007 Microsoft Office系统的Microsoft Visual Studio 2005工具(Visual Studio 2005 Office第二版工具)创建外接程序时,ProgID是外接程序的名称

在MSDN的以下系列文章中,您可以阅读有关Fluent UI(也称为Ribbon UI)的更多信息:


  • 我正在使用视觉设计来设计功能区界面。我是否可以选择添加自定义名称空间并将ID更改为IDQ?否,您需要使用Ribbon XML来完成这项工作。可以在设计器上单击鼠标右键,然后选择“导出功能区标记”选项。然后可以通过添加所需的名称空间来更正XML标记。
    <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" 
    xmlns:x="myNameSpace" >
      <ribbon>
        <tabs>
          <tab idMso="TabAddIns">
            <group idQ="x:Contoso" label="Contoso">
              <button id="C1" label="Contoso Button 1" size="large" 
                imageMso="FileSave" onAction="c_action1" />
            </group>
         </tab>
       </tabs>
     </ribbon>
    </customUI>
    
    <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" 
     xmlns:x="myNameSpace" >
       <ribbon>
         <tabs>
           <tab idMso="TabAddIns">
              <group idQ="x:Contoso" label="Contoso">
                 <button id="C2" label="Contoso Button 2" size="large" 
                   imageMso="FileSave" onAction="c_action2" />
              </group>
           </tab>
         </tabs>
       </ribbon>
     </customUI>