Personalizar la cinta de opciones (Ribbon)

Fecha de publicación: 12-feb-2012 12:41:00

La cinta de opciones de Office 2007 se diseña siempre editando un archivo XML. Algunos asistentes lo hacen WYSIWYG sin que el usuario ni siquiera vea el archivo XML, pero también podemos editarlo directamente y luego "cargarlo" por distintos métodos.

En los enlaces de esta misma página tenemos algunos a tuturiales que explican claramente cuáles son los pasos para editar la cinta de opciones. Son lo suficientemente claros como para no intentar aquí hacer algo mejor y nos limitaremos a algunos consejos sobre cómo seguir esos tutoriales.

Los documentos de varias aplicaciones de Office 2007 se almacenan el formato Open XML, que se comporta como un archivo comprimido en cuyo interior podemos tener, entre otras cosas al archivo XML con la información sobre el Ribbon. Por el contrario, Access 2007 no utiliza ese formato y, por tanto debe usar otra forma de guardar la información del Ribbon.

La forma más sencilla es en una tabla de la propia base de datos que llamaremos UsysRibbon, que debe contener unos campos concretos, uno de ellos un Memo en el que copiamos literalmente todo el contenido del archivo XML.

Otro método sería pasar ese contenido desde cualquier soporte a una cadena de texto y usar el método Application.LoadCustomUI.

La forma más natural y la que mejor nos va a permitir introducirnos en el conociemiento del Ribbon es la de editar un archivo XML y guardar su contenido en la tabla UsysRibbon.

Usar un asistente.

Si sólo quieres crear una cinta de opciones sencilla y de forma rápida, la mejor opción para mi gusto es usar el Ribbon Creator, de Gunter Avenius. Muy sencillo de usar y completamente WYSIWYG, incluso crea los callbacks. Tiene una versión shareware con opciones restringidas, pero que vale si quieres algo muy sencillo o como apoyo en tus ensayos editando el xml. La versión de pago es realmente económica y, aunque no abarca todas las posibilidades del Ribbon, es de un uso muy sencillo que no obliga a tener conocimientos previos.

Editar el XML

A falta de otra cosa, pego aquí parte de la respuesta que, sobre la personalización de la cinta de opciones, dí en cierta ocasión en el foro de Access de Microsoft y que, poco a poco, iré corrigiendo:

En principio, no hace falta saber gran cosa sobre XML. Vete a http://www.accessribbon.com/ a la sección de descargas y a la de links descárgate todos los archivos. Todos te vendrán muy bien.

Lo primero es no intentar, bajo ningún concepto, editar el XML con otro editor que no sea Visual Studio, que en su edición Express es gratis y puedes encontrar el enlace en la página de Avenius que he mencionado antes o, directamente, en Visual Basic Express Edition. Entre las descargas citadas encontrarás una al archivo de especificaciones del Ribbon, 2007 Office System: XML Schema Reference (CustomUI.XSD), que no es necesario para editar el XML. pero es imprescindible si no quieres complicarte la vida.

Otra cosa importante es no seguir las instrucciones generales para Office para editar la cinta de opciones. Aunque buena parte valen para Access, éste tiene una forma peculiar, más sencilla de hacerlo y debes orientarte por las instrucciones para Access.

No recuerdo si en las descargas de Avenius hay algún XML de ejemplo, pero puedes abrir una de las aplicaciones, abrir la tabla UsysRibbon y copiar y pegar el texto. Si lo prefieres, tienes un ejemplo en Access 2007 Sample: Ribbon Extensibility in Access 2007 que, aunque utiliza macros en vez de VBA en respuesta a los eventos del Ribbon, el código XML del UsysRibbon es exactamente igual.

Abres el XML con el Visual Studio. Antes de hacer nada, haz que se muestre la ventana propiedades y en la opción Especificaciones, añade el archivo CustomUI.XSD.

Al hacerlo habrás conseguido que el Intellisense te vaya mostrando en cada momento las distintas posibilidades.

Para no tener que elegir el archivo de esquema cada vez que abramos nuestro XML con Visual Studio, lo mejor es guardar el archivo de esquema en la carpeta que Visual Studio reserva para los schemas de xml, por ejemplo C:\Program Files\Microsoft Visual Studio 8\xml\Schemas\CustomUI.xsd, de esa forma, ya no será necesario volver a indicar la ruta en lo sucesivo.

Si te fijas, las líneas empiezan por < y, en el momento en que lo escribas el Intellisense te sacará un menú contextual para que elijas lo que toque y además te añadirá el /> de cierre. Vamos, que combinando Visual Studio con el CustomUI.xsd resulta muy fácil editar la cinta.

Hay una estructura jerárquica, los Tabs pueden contener Groups, éstos Buttons, etc. anidando las lineas con las marcas de apertura y cierre. Todos ellos tienen su ID, que no es otra cosa que una cadena de texto con el nombre, único, que queramos darle.

Cada línea tiene sus propiedaes, todas de texto que nos va mostrando el Intellisense. Es importante saber que todos los comandos también tienen su ID, que es texto y que será ID o IDMso según sea personalizado o de Office. En 2007 Office System List of Control IDs tienes un archivo Excell con todos los IDMso. Lo mismo ocurre con las imágenes, que pueden ser personalizadas o ImageMso, es decir, propias de Office y e identificadas de manera unívoca por su nombre ImageMso, y en la web de Avenius puedes encontrar un ejemplo, esta vez de Access, con todas las imágenes de Office, y que, a su vez está extraido de un complemento para Excel que puedes descar en 2007 Office System Add-In: Icons Garllery.

Otra de las propiedades son los CallBacks. Son propiedades de texto en las que pones el nombre de la función que quieres que se ejecute ante distintos eventos, generalmente clic, de los controles. Lo distintos controles devuelven y admiten distintos parámetros y ¿Adivinas dónde puedes encontrar ejemplos?

No se te olvide que para que funcione el Ribbon debes incluir una referencia a la librería Office 12.x Objecto Library

Finalmente, no hay más que pasar el texto del XML a tu tabla UsysRibbon, que ya habrás creado o fusilado de un ejemplo. Puede valer copiar y pegar, pero si el XML es muy largo igual necesitas un pequeño procedimiento con Input Line. Otra pega es que, aunque Access lo interpreta bien, el texto no se lee muy bien, pues algunos caracteres como retorno de carro etc. se ven como marcas extrañas; yo me he hecho una rutinilla con Replaces que sustituye unos pocos códigos Ascii por otros más inteligibles desde el memo.

Por último, hay que ir a opciones de la base datos actual y seleccionar el Ribbon para nuestra BD en el desplegable que nos muestra los registros de nuestro UsysRibbon.

Debemos ir a Opciones de Access | Base de datos actual | Opciones de la barra de herramientas y la cinta de opciones | Nombre de la banda de opciones

A mí, al final, me resulta más cómodo que personalizar un menú clásico de Access.