2
votes

Situation:

  • Users have an existing custom ribbon that is added via a .PPAM (combination of VBA macros and Ribbon customization XML).
  • We want to add a group to that custom ribbon via our managed COM add-in
  • For custom ribbons from other managed COM add-ins this is feasible via the xmlns:foo="bar" & idQ that can be extracted from the customUI Link

Complication:

  • Custom Ribbons from non-managed add-ins seem to have no xmlns namespace, they do not show up in the customUI
  • Even via PowerPoint/Office the user can not customize those ribbons.

Any idea how we could achieve adding buttons?

We can request changes to the non-managed/VBA add-in.

3
Have you looked over this information, and tried the Custom UI Editor? rondebruin.nl/win/s2/win001.htmChel
@rdhs Thanks, I looked at it, but didn't find anything for this problem in there.Cilvic

3 Answers

6
votes

VBA add-ins don't have their own namespace by default, but can have one. If you create a custom namespace, then multiple VBA add-ins can share the same tab on the ribbon, for example.

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui"
xmlns:nsMySpace="SomeName">

Then to create a new tab that other add-ins can share:

<tab idQ="nsMySpace:MySpace_Tab" label="MyTabLabel">
5
votes

In addition to Steve's answer we've discovered that VBA add-ins have a default namespace even when none is specified in their customUI.

You can extract the namespace by adding a control from the ribbon to the Quick Access and then exporting the UI Customizations. The resulting file should show:

<mso:cmd app="PowerPoint" dt="1" />
<mso:customUI xmlns:x1="C:\Users\USERNAME\AppData\Roaming\Microsoft\AddIns\Addin.ppam">

So the default namespace seems to be the complete Path to the add-in.

1
votes

From a high perspective two add-ins can share a ribbon tab for controls because they are loaded into a single PowerPoint instance. When you develop a macro enabled file with a custom UI - only this file can be opened at the same time. But two add-ins can be run for the file/template. That's why idQ is intended to use by add-ins.

You can read more about the Fluent UI (Ribbon UI) in the following series of articles in MSDN: