RibbonX Limitations

The first version of any new technology can never hope to be perfect for everyone. To their great credit, the RibbonX team at Microsoft implemented a huge number of the suggestions that were submitted during the Office 2007 Beta testing (within the limits imposed on them by the overall Ribbon design) and have done an amazing job of making RibbonX as feature-rich, well-rounded, and stable as it is. The remaining major limitations are, in our view and in no particular order, as follows:

□ There is no way for VBA to provide the full XML at run time. It would have been nice to see a standard GetCustomUI event added to the Workbook object, or a CreateCustomUI method added to the CommandBars object.

□ The only way to remove a workbook's customizations is to close the workbook. Abetter alternative might have been a RemoveCustomUI method added to the CommandBars object.

□ The getImage callback can be fed either an idMso name or an IPicture object to provide a built-in or custom image. You should also be able to provide an internal relationship ID to use a custom image contained in the workbook file.

□ There are a number of controls on Excel's Ribbon that can't be created using RibbonX—such as the Page Layout Scale spinner, the galleries that display directly in the Ribbon area, and the list boxes from the Filter popup.

□ You cannot create custom contextual tab sets. It would be beneficial to be able to define your own contexts (for example, inside a P&L report) and display appropriate context-sensitive tabs.

□ The only way to activate a tab is to use SendKeys; there should be an ActivateMso method to select rather than execute a control — or perhaps using ExecuteMso on a tab name should activate it.

□ You can't modify the Mini Toolbar or the status bar.

□ You cannot add custom ActiveX controls to the Ribbon (though you can now create Task Panes with them).

□ You cannot modify the built-in groups—though that's as much a Ribbon design issue as a RibbonX one.

□ You can't read the text of built-in dropDown, comboBox, or editBox controls, identify the currently active tab, group, or control, or identify the selected item from a gallery; indeed, missing are all the getItem equivalents to those properties that were added to the CommandBars object.

□ There is no way to execute an item from a comboBox, dropdown, or gallery. ExecuteMso should take an optional ItemID or ItemIndex parameter.

□ Every RibbonX container item, from the root customUI element to a deeply nested menu, should support having its contents set dynamically, using a getContent callback.

□ Both the RibbonX XML and any images in the file should be exposed through the Workbook object's CustomXMLParts collection, so they can be easily read or updated with VBA.

□ There is no way for a custom group to fit in with the resize/collapse behavior of the built-in groups. You should be able to determine how large a custom group is, and how much spare space there is on a tab — thereby allowing you to change what you display to make the best use of the available space.

0 0

Post a comment