如何在没有xmlns/idQ的情况下将组添加到(VBA)自定义功能区?

Cil*_*vic 2 vba ribbon excel-vba word-vba powerpoint-vba

情况:

  • 用户具有通过.PPAM(VBA宏和功能区自定义XML的组合)添加的现有自定义功能区.
  • 我们希望通过托管的COM加载项向该自定义功能区添加一个组
  • 对于来自其他托管COM加载项的自定义功能区,这可以通过xmlns:foo ="bar"&idQ来实现,可以从customUI 链接中提取

并发症:

  • 来自非托管加载项的自定义色带似乎没有xmlns命名空间,它们不会显示在customUI中
  • 即使通过PowerPoint/Office,用户也无法自定义这些色带.

知道我们如何才能实现添加按钮吗?

我们可以请求更改非托管/ VBA加载项.

Ste*_*erg 6

默认情况下,VBA加载项没有自己的命名空间,但可以有一个.例如,如果创建自定义命名空间,则多个VBA加载项可以共享功能区上的相同选项卡.

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui"
xmlns:nsMySpace="SomeName">
Run Code Online (Sandbox Code Playgroud)

然后创建其他加载项可以共享的新选项卡:

<tab idQ="nsMySpace:MySpace_Tab" label="MyTabLabel">
Run Code Online (Sandbox Code Playgroud)


Cil*_*vic 5

除了Steve的回答,我们还发现VBA加载项具有默认命名空间,即使它们的customUI中没有指定也是如此.

您可以通过将功能区中的控件添加到快速访问,然后导出UI自定义来提取命名空间.生成的文件应显示:

<mso:cmd app="PowerPoint" dt="1" />
<mso:customUI xmlns:x1="C:\Users\USERNAME\AppData\Roaming\Microsoft\AddIns\Addin.ppam">
Run Code Online (Sandbox Code Playgroud)

因此,默认命名空间似乎是加载项的完整路径.