Hijacking the RibbonX Onload event

badOedipus

New member
Joined
Aug 22, 2011
Messages
1
Reaction score
0
Points
0
So I have written a pretty extensible add-in which has a couple of tabs and mutliple commands across those tabs. I'm now being told that the users need the ability to customize which commands they see, the order they are presented, etc. I can easily create forms to let them administer this, and store what would be the resulting customUI.xml out to a file.
My question is this:
Is there anyway to load XML using an interface into the ribbon during the onload event of the ribbon?

So far the only possible solution I have come up with, short of telling the users no, is to create a workbook with an open_workbook event that would build the customUI, unzip the add-in, do a switch-er-oo on the xml file, zip it back up then open the add-in and close the initial workbook.

This just seems like a lot of added complexity, especially if there is some easily accessible interface for updating the ribbon. So far I have seen some references to the Office.IRibbonExtensibility.GetCustomUI in regards to building a COM Add-In in VSTO, however it does appear in the package viewer in the VBA IDE. I just can't figure out how to implement it.

Anyone know how I can implement this interface or know of some other way to hijack the ribbon's onload event to add some customUI xml to the ribbon?
 

Bob Phillips

Super Moderator
Staff member
Joined
Mar 21, 2011
Messages
1,940
Reaction score
0
Points
36
Excel Version(s)
O365
Your workaround is how I do it. I wrote a couple of blogs about it.
 

Ken Puls

Administrator
Staff member
Joined
Mar 13, 2011
Messages
2,519
Reaction score
4
Points
38
Location
Nanaimo, BC, Canada
Website
www.excelguru.ca
Excel Version(s)
Excel Office 365 Insider
The only way to do this inside Excel (without going to VSTO or the route you've described) is through the DynamicMenu controls. I'd love to see a "DynamicUI" that would let us reload the entire XML on the fly, but unfortunatetly it's not there yet. :(
 
Top