Ms office 为什么可以';t通过customUI.xml将第三方控件添加到Office PowerPoint中的自定义功能区

Ms office 为什么可以';t通过customUI.xml将第三方控件添加到Office PowerPoint中的自定义功能区,ms-office,powerpoint,office-interop,ribbon,Ms Office,Powerpoint,Office Interop,Ribbon,我们正试图通过外接程序将第三方外接程序控件放置到自定义功能区上 1) 通过修改PowerPoint进行自定义。officeUI正在工作: <mso:customUI xmlns:x1="ThirdPartyAddin" xmlns:mso="http://schemas.microsoft.com/office/2009/07/customui"> <mso:ribbon> <mso:qat/> <

我们正试图通过外接程序将第三方外接程序控件放置到自定义功能区上

1) 通过修改PowerPoint进行自定义。officeUI正在工作:

<mso:customUI
    xmlns:x1="ThirdPartyAddin"
    xmlns:mso="http://schemas.microsoft.com/office/2009/07/customui">
    <mso:ribbon>
        <mso:qat/>
        <mso:tabs>
            <mso:tab id="my_new_tab" label="my_new_tab">
                <mso:group id="Test" label="New Group" autoScale="true">
                    <mso:gallery idQ="x1:TheirFunction1" visible="true"/>
                </mso:group>
            </mso:tab>
        </mso:tabs>
    </mso:ribbon>
</mso:customUI>

我们通过使用文件>选项>功能区自定义并检查生成的PowerPoint.OfficeUI文件来提取此xml

2) 将以下内容放入我们的外接程序代码中,以从IRibbonExtensibility.GetCustomUI返回,也称为RibbonXML:

<mso:customUI
    xmlns:x1="ThirdPartyAddin"
    xmlns:mso="http://schemas.microsoft.com/office/2009/07/customui">
    <mso:ribbon>
        <mso:tabs>
            <mso:tab id="my_new_tab" label="my_new_tab">
                <mso:group id="Test" label="New Group" autoScale="true">
                    <mso:gallery idQ="x1:TheirFunction1" visible="true"/>
                </mso:group>
            </mso:tab>
        </mso:tabs>
    </mso:ribbon>
</mso:customUI>

笔记:
  • PowerPoint中的mso:gallery没有UI XML错误报告
  • 我们删除了,因为快速访问工具栏不能以这种方式修改
  • 除了这里显示的图库,我还尝试使用了一个按钮,该按钮在PowerPoint.officeUI中被列为mso:control,但我必须将其更改为GetCustomUI的mso:button,否则PowerPoint会抱怨“0x80004005自定义控件不能指定为。ID x1:TheirFunction 2需要控件类型
问题 该项目确实出现,但不起作用。它有用于gallery的小箭头,但没有图标

观察
  • 具有讽刺意味的是,用户可以右键单击它并将其添加到快速访问工具栏中,在那里它可以再次工作
  • 在加载GetCustomUI加载项的同时卸载第三方加载项将导致控件的轻微更新

相关文件
  • 从Cindy的评论中,我更明显地调查了“控制”,有一个非常类似的问题,不幸的是,答案未经证实:
  • 这也是关于“控制”的文档

一个明显的区别是,第一个是ms:control,第二个是mso:gallery。如果在第二个中用control代替gallery,它会起作用吗?谢谢Cindy,很好的理解。PowerPoint实际上抱怨“control”“所以我把它改成了画廊。我将对问题进行编辑以提供更多细节。仔细检查您所说的:首先,您不是在使用RibbonXML,而是在做用户通过文件/选项/自定义Ribbon所做的事情?但是:这个第三方是否在他们的RIbbonXML中使用相同的名称空间定义idQ?如果第三方没有明确公开其控件,则不能在RibbonXML中使用它们。用户可以将其视为用户与“他的”功能区上的控件之间的“合同”的一部分。但这不会让其他人知道。谢谢你花时间看完这个辛迪。我试图通过编辑这个问题来澄清。您是对的第一种情况是“用户驱动”首先,我们开始“自定义”功能区,然后从存储这些自定义内容的PowerPoint.OfficeUI文件中提取相关部分。我不知道外接程序是否在RibbonXML中使用相同的命名空间定义了相同的idQ。我想如果idQ出现的话,他们之间没有什么区别。您是否暗示在定义idQ时“仅用于用户自定义”或“其他加载项”与加载项XML有区别?我刚才在MSDN上看到了另一个问题,您在论坛中提出了这个问题:-)小世界。。。