如何在没有 xmlns/idQ 的情况下将组添加到 (VBA) 自定义功能区?
How to add a group to a (VBA) custom ribbon without xmlns/idQ?
情况:
- 用户有一个通过 .PPAM 添加的现有自定义功能区(VBA 宏和功能区自定义 XML 的组合)。
- 我们想通过我们的托管 COM 加载项向该自定义功能区添加一个组
- 对于来自其他托管 COM 加载项的自定义功能区,这可以通过 xmlns:foo="bar" & idQ 实现,可以从 customUI Link
中提取
并发症:
- 来自非托管加载项的自定义功能区似乎没有 xmlns 命名空间,它们不会显示在 customUI 中
- 即使通过 PowerPoint/Office 用户也无法自定义这些功能区。
知道我们如何实现添加按钮吗?
我们可以请求更改 non-managed/VBA 加载项。
从高角度来看,两个加载项可以共享控件的功能区选项卡,因为它们加载到单个 PowerPoint 实例中。当您使用自定义 UI 开发启用宏的文件时 - 只能同时打开此文件。但是两个加载项可以运行为file/template。这就是 idQ 旨在由加载项使用的原因。
您可以在 MSDN 中的以下系列文章中阅读有关 Fluent UI(功能区 UI)的更多信息:
VBA 加载项默认没有自己的命名空间,但 可以 有一个。例如,如果您创建自定义命名空间,则多个 VBA 加载项可以共享功能区上的同一个选项卡。
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui"
xmlns:nsMySpace="SomeName">
然后创建其他加载项可以共享的新选项卡:
<tab idQ="nsMySpace:MySpace_Tab" label="MyTabLabel">
除了 Steve 的回答之外,我们还发现 VBA 加载项具有默认命名空间,即使在其自定义 UI 中指定了 none 也是如此。
您可以通过将控件从功能区添加到快速访问然后导出 UI 自定义来提取命名空间。生成的文件应显示:
<mso:cmd app="PowerPoint" dt="1" />
<mso:customUI xmlns:x1="C:\Users\USERNAME\AppData\Roaming\Microsoft\AddIns\Addin.ppam">
所以默认命名空间似乎是加载项的完整路径。
情况:
- 用户有一个通过 .PPAM 添加的现有自定义功能区(VBA 宏和功能区自定义 XML 的组合)。
- 我们想通过我们的托管 COM 加载项向该自定义功能区添加一个组
- 对于来自其他托管 COM 加载项的自定义功能区,这可以通过 xmlns:foo="bar" & idQ 实现,可以从 customUI Link 中提取
并发症:
- 来自非托管加载项的自定义功能区似乎没有 xmlns 命名空间,它们不会显示在 customUI 中
- 即使通过 PowerPoint/Office 用户也无法自定义这些功能区。
知道我们如何实现添加按钮吗?
我们可以请求更改 non-managed/VBA 加载项。
从高角度来看,两个加载项可以共享控件的功能区选项卡,因为它们加载到单个 PowerPoint 实例中。当您使用自定义 UI 开发启用宏的文件时 - 只能同时打开此文件。但是两个加载项可以运行为file/template。这就是 idQ 旨在由加载项使用的原因。
您可以在 MSDN 中的以下系列文章中阅读有关 Fluent UI(功能区 UI)的更多信息:
VBA 加载项默认没有自己的命名空间,但 可以 有一个。例如,如果您创建自定义命名空间,则多个 VBA 加载项可以共享功能区上的同一个选项卡。
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui"
xmlns:nsMySpace="SomeName">
然后创建其他加载项可以共享的新选项卡:
<tab idQ="nsMySpace:MySpace_Tab" label="MyTabLabel">
除了 Steve 的回答之外,我们还发现 VBA 加载项具有默认命名空间,即使在其自定义 UI 中指定了 none 也是如此。
您可以通过将控件从功能区添加到快速访问然后导出 UI 自定义来提取命名空间。生成的文件应显示:
<mso:cmd app="PowerPoint" dt="1" />
<mso:customUI xmlns:x1="C:\Users\USERNAME\AppData\Roaming\Microsoft\AddIns\Addin.ppam">
所以默认命名空间似乎是加载项的完整路径。