How to get Ribbon custom Tabs IDs?

Ubalo picture Ubalo · Mar 5, 2009 · Viewed 9.5k times · Source

I am working with a Custom Ribbon in Power Point, I need to iterate through all tabs and get the ID of them.

The Ribbon contains Tabs added from different projects (C++, C#) as addins and I don't know their IDs. I am using VBA to handle the events fired from the Ribbon.

How do I do to get the ID from all tabs in the Ribbon using VBA?

Thanks in advance.

Answer

Alain picture Alain · Jan 6, 2011

The Ribbon is accessed using CommandBars("Ribbon") which returns an IAccessible object. You access tabs by using

AccessibleChildren _
            Lib "oleacc.dll" _
                (ByVal paccContainer As Object, _
                 ByVal iChildStart As Long, _
                 ByVal cChildren As Long, _
                       rgvarChildren As Variant, _
                       pcObtained As Long) _
            As Long

This will fill an array with a list of all child elements (tabs) which are also IAccessible objects. The ID's you get are strings, and you can iterate through the children of each one to get submenu items and so on.

It's quite complicated, so the best way to get this done would be to work from an example. Lucky for you there is a gleaming example here: http://www.wordarticles.com/Shorts/RibbonVBA/RibbonVBADemo.htm

ribbon tabs

Pore through the code on that one.