BannerAnuncios

lunes, 4 de agosto de 2014

Personalizar la Cinta de Opciones o Ribbon de Excel con XML y VBA, Conceptos Previos.

Curso: Personalizar la UI de
Excel con XML y VBA.
Formato:
Artículo/Tutorial.
Artículo Nº:
1 de 10.
Siguiente Artículo/Tutorial:Crear Fichas Pers...
Versión Vídeo/Tutorial:Personalizar Interfa...

Con el Custom UI Editor podemos personalizar la UI de Excel.
Custom UI Editor.

Cuando creamos Macros o código VBA en Excel, siempre buscamos la manera más cómoda y rápida de ejecutar el resultado final. Nos gusta que nuestros documentos de Excel, queden como si fueran aplicaciones hechas a medida y muchas veces para conseguirlo, creamos botones u otro tipo de controles que insertamos en las hojas del documento. Cuando el usuario interactúa con ellos, se ejecutan las macros que hemos desarrollado. Por ejemplo podríamos aplicar filtros cuando el usuario pulse un botón, o cuando seleccione un valor de un cuadro combinado, como sería el caso de la siguiente imagen que os muestro en el artículo. Eso está muy bien, es uno de los usos clásicos de las Macros y el código VBA. Pero a partir de la versión 2007 de Excel, Microsoft puso a nuestra disposición otra manera de ejecutar el código que desarrollemos y de mejorar la usabilidad de nuestros documentos, la Cinta de Opciones. La Cinta de Opciones o Ribbon como se le conoce en Inglés, es la parte superior de la ventana de Excel en la que tenemos disponible todas las herramientas que podemos utilizar en el programa. También está disponible en otras aplicaciones de Office pero en los artículos que voy a publicar sobre ella, de momento me voy a centrar en Excel.

Aplicación de Filtros con Controles ActiveX.
Aplicación de Filtros con Controles ActiveX.

Cinta de Opciones en Excel 2013
Cinta de Opciones en Excel 2013.

En su primera aparición en Office 2007, prácticamente no se podía personalizar por parte del usuario "normal" de las aplicaciones. Mediante XML VBA sí que se podía personalizar bastante, no todo lo que querías, pero no estabas tan limitado como lo estabas desde el programa. A partir de la versión 2010, Microsoft abrió la mano y permitió que cualquier usuario la personalizara prácticamente a su gusto. Pero aun así, sigue siendo mucho más lo que podemos hacer programando con XML y VBA.

Código XML para definir una Ficha nueva en la Ribbon
Código XML para definir una Ficha nueva en la Ribbon.

En esta serie de artículos dedicados a la Ribbon no nos vamos a limitar a simplemente añadir botones y ejecutar macros, vamos a ver muchas más cosas. Veremos cómo crear fichas, grupos, botones, veremos cómo desactivar y activar los controles que creemos en las fichas, crearemos listas desplegables, listas desplegables con imágenes y muchas más cosas que os iré comentando. En realidad, se puede decir que prácticamente voy a ir aprendiendo a la vez que vosotros. Últimamente en los documentos que he creado he empezado a utilizar este recurso de los programas de Office y como me gusta mucho la funcionalidad que ofrece y como quedan los documentos... he decidido empezar con esta serie de artículos y los vídeos que llegarán posteriormente. Como suelo decir el que más aprende, es el que explica a otros y como de este tema no me puedo considerar experto... así aprendemos todos.

Antes de empezar con el "trabajo duro", en este primer artículo, os voy a comentar una serie de detalles que creo que son muy importantes. Para empezar, en las imágenes de los artículos veréis que uso la versión 2013 de Excel, pero todo lo que explique funcionará perfectamente en Excel 2010. Con Excel 2007 sí que hay algunas diferencias pero también funcionará prácticamente todo. Las diferencias que hay entre Excel 2007 y 2010-2013 es que en la versión 2007 estaba el Botón de Office y en las versiones 2010 y 2013, desapareció para dejar paso a la Ficha Archivo. Como de momento no vamos a empezar a personalizar esa ficha ni el botón de Office, si usáis Excel 2007 no creo que tengáis problemas en seguir los artículos, pero quería dejarlo claro antes de empezar. Por lo tanto lo que os explique aquí funcionará al 100% en Excel 2010-2013, en Excel 2007 tendréis que probar. Yo, es que ya no tengo acceso a Excel 2007, es una versión muy antigua y está mucho más difundida la versión 2010.

Diferencias en las Cintas de Opciones de Excel 2007 y Excel 2010/2013
Diferencias en las Cintas de Opciones de Excel 2007 y Excel 2010/2013.

Siguiente detalle. Aunque existen soluciones comerciales que permiten crear cintas de opciones de forma visual, no las voy a usar. ¿Por qué? Bueno pues porque cuestan dinero y no están accesibles a todo el mundo. Vamos a usar una herramienta libre llamada Custom UI Editor for Microsoft Office. Es una herramienta que nos permitirá insertar fácilmente el código XML que necesitamos para crear nuestras fichas personalizadas. Aunque parece que sólo sirve para Excel 2007 y 2010, no es así, también se puede utilizar junto con la versión 2013, en el siguiente artículo os daré más detalles. Lo podéis descargar desde el siguiente enlace.


Seguimos con más detalles. En este artículo vamos a empezar con algo suave pero son las bases de lo que vendrá después. A continuación os voy a dejar claro lo que vamos hacer en este artículo y en los siguientes. Sobre todo vamos a personalizar la Cinta de Opciones de Excel, pero sólo para los documentos que nosotros necesitamos. Es decir, vamos a crear personalizaciones que se cargaran cuando se abra el documento que las contiene. Las fichas que creemos desaparecerán en cuanto cerremos el documento. En la siguiente imagen podemos ver dos instancias de Excel 2013 funcionando a la vez, pero la de la izquierda tiene una Cinta de Opciones personalizada que se ha cargado al abrir el documento que la contenía y la de la derecha no. Son personalizaciones para documentos individuales.

Cinta de Opciones personalizada y sin personalizar
Cinta de Opciones personalizada y sin personalizar.



Una vez aclarado el objetivo, vamos a ver cómo conseguirlo. Para entender lo que vamos hacer y lo que hace el Custom UI Editor os tengo que explicar lo siguiente. Los documentos de Excel desde la versión 2007 no son lo que parecen, ya no son un solo archivo. Me explico lo que nosotros vemos como un solo archivo, un documento... En realidad son varios documentos y carpetas comprimidos en un archivo con formato ZIP. Si, el formato que llevamos años utilizando para comprimir archivos. Los archivos que contienen Macros a partir de la versión 2007 de Excel acaban con la extensión .XLSM, bueno pues si se la cambiamos a .ZIP y descomprimimos el archivo, obtendremos algo como esto.

Estructura de los documentos de Excel una vez descomprimidos
Estructura de los documentos de Excel una vez descomprimidos.

En la parte superior de la imagen podemos ver lo que obtenemos al descomprimir un archivo de Excel que tiene una Ribbon personalizada, que tiene la interface personalizada. Y en la parte de abajo tenemos lo que obtenemos al descomprimir un archivo que no tiene Ribbon personalizada. Si os fijáis hay una diferencia, en el que tiene Ribbon personalizada hay una carpeta más, la carpeta "customUI". Si entramos dentro de ella veremos lo siguiente:


Archivo XML de personalización de la Cinta de Opciones
Archivo XML de personalización de la Cinta de Opciones.

Encontraremos un archivo llamado customUI.xml, en su interior están guardadas las personalizaciones que hemos hecho a la cinta de opciones de ese documento. Es un archivo en formato XML que define la apariencia de la Cinta de Opciones de ese documento, en concreto contiene las modificaciones que hemos hecho en ella. En realidad lo que veis en la imagen anterior es un archivo de personalización de la cinta de opciones para la versión 2007, si es para Excel 2010 o 2013 tiene un nombre diferente, en la siguiente imagen lo podéis ver.

Archivos XML de personalización de la Cinta de Opciones para Excel 2007 y 2010/2013
Archivos XML de personalización de la Cinta de Opciones para Excel 2007 y 2010/2013.

Para Excel 2010 y 2013 el archivo se llama "customUI14.xml", ambas comparten el mismo archivo. Como os he dicho hay pequeñas diferencias entre las cintas de opciones de estas versiones y la 2007 y por eso se usan diferentes archivos de configuración. Incluso en un mismo documento de Excel pueden convivir los dos archivos para evitar pequeños problemas de configuración de las Cintas de Opciones y así podamos crear personalizaciones para ambos casos. De momento, no os preocupéis por esto, ya os daré más detalles en los siguientes artículos. Durante los artículos usaremos casi todo el rato archivos "customUI14.xml" que se corresponden a las versiones 2010 y 2013. Bueno pues en esto consiste lo que vamos hacer: En introducir dentro del documento de Excel un archivo XML llamado custoUI.xml o customUI14.xml, en el que están las personalizaciones que queremos para la cinta de opciones de ese documento y desde estos archivos llamaremos al código VBA que crearemos en Excel. ¿En qué nos puede ayudar el Custom UI Editor para realizar este trabajo?

Bueno pues si no tendríamos este programa, habría que hacer todo el trabajo de forma manual. Tendríamos que cambiar la extensión al archivo de Excel, descomprimirlo, crear la carpeta customUI, en su interior crear el archivo XML, volver a comprimir todas las carpetas y archivos y por último cambiar de nuevo la extensión a la del formato de Excel. Son muchos pasos y es muy fácil confundirse. Con el Custom UI Editor será tan fácil como abrir el documento de Excel e indicarle que queremos hacer una personalización a la Cinta de Opciones. Y a partir de ahí "sólo" quedará escribir el código XML que definirá las modificaciones que queremos realizar en el Custom UI Editor y el código VBA en Excel. No os preocupéis si no conocéis el lenguaje XML que es muy sencillo.

Fijaros, vamos hacer una prueba, sin entrar en muchos detalles, eso lo dejamos para el siguiente artículo. Crear un documento de Excel y guardarlo con el nombre de Prueba, por ejemplo. A continuación abrir el Custom UI Editor, si todavía no lo habéis instalado hacerlo.


Custo UI Editor for Office
Custom UI Editor for Office.

Como podéis comprobar se abre un programa muy sencillo, parece un editor de textos. De hecho es una especie de Bloc de Notas pero algo más avanzado. Ahora tenemos que abrir el documento que acabamos de crear en Excel, el que hemos llamado Prueba. Lo podemos hacer en el menú File o pulsando el botón con la carpeta amarilla.

Abrimos el documento de Excel
Abrimos el documento de Excel.

Al abrir el documento, veréis que la pantalla se divide en dos. En la parte izquierda deberíamos ver el archivo XML que contiene la personalización de la Cinta de Opciones y en la de la derecha deberíamos ver el código XML que define la personalización. Pero como en este caso no hay personalización, el documento lo acabamos de crear en Excel, no aparecen.

Custom UI Editor con el documento abierto
Custom UI Editor con el documento abierto.

Ahora, vamos a crear una ficha personalizada en la Cinta de Opciones del documento Prueba. Cuando lo abramos de nuevo en Excel veremos que tiene una nueva ficha con algunos botones en su interior. Es una ficha de ejemplo que se puede crear rápidamente en el Custom UI Editor. Para hacerlo accedemos al menú Insert y dentro de Sample XML seleccionamos Excel - A Custom Tab. El resto de opciones que tenemos en este menú las comentaremos en los siguientes artículos.

Añadimos una ficha de ejemplo a la Cinta de Opciones
Añadimos una ficha de ejemplo a la Cinta de Opciones.

Esto provocará que aparezca el archivo XML en la parte izquierda y en la derecha el código XML que define la personalización de la Cinta de Opciones.

Ficha de ejemplo creada
Ficha de ejemplo creada.

Ahora de momento no os voy a comentar nada sobre las líneas XML que se han creado, simplemente vamos a ver el resultado. Cerramos el Custom UI Editor guardando los cambios y abrimos de nuevo el documento en Excel.

Ficha de ejemplo creada
Ficha de ejemplo creada.

Ahí la tenemos, una ficha nueva llamada Contoso, esto es un nombre ficticio de empresa que suele utilizar Microsoft en sus ejemplos y documentaciones... En su interior la ficha tiene unos grupos de botones ya creados. En este caso aparecen opciones disponibles en otras fichas de Excel, pero en mis artículos también veremos cómo añadir nuestras propias utilidades o herramientas.

Bueno, pues ya está, esto es todo lo que os quería contar en este artículo. En el siguiente artículo dedicado a este tema ya empezaremos a crear nuestras propias fichas y nos ensuciaremos las manos con el código XML y el VBA.

*Siguiente Artículo:*:

18 comentarios:

  1. Excelente trabajo. Gracias por todas tus enseñanzas

    ResponderEliminar
  2. Muchas gracias. Impaciente por tu siguiente entrega :-)

    ResponderEliminar
    Respuestas
    1. Esta casi lista. En la noche del Domingo al Lunes la publicaré.

      Saludos.

      Eliminar
  3. Buenas tardes David

    Recientemente he conocido tu página y Felicidades por el trabajo.

    Estoy trabajando en con Excel 2007 en el que he definido una serie de Macros, unas abren unos archivos y copian su contenido y lo cierran, otras anexan solo el contenido nuevo. Otras son una consulta contra una base de datos de MySql y finalmente otras que me dan unos Informes, bien pueden ser unas tablas dinámicas como unos gráficos dinámicos.

    Ahora estaba intentando ordenar todo este trabajo que he estado preparando de las Macros, para ello he seguido tu vieo de la Ribbon Custom UI y bien me ha salido perfecto.

    Pero para sacar los informes y no liarme a botones quiero un DropDown donde aparazcan como Ítem los nombres de los informes que tengo definidos y una vez tenga esto darle a otro botón para Ejecutar la Macro del Informe correspondiente.

    Buscando por la red he encontrado un ejemplo de esto pero no exactamente ya que este coge los ítem del Dropdown de un rango de celdas Range("A2;UltimaFilaEscrita).

    Yo no quiero poner los Ítems en una Hoja quiero dárselos en un Array pero no me sale.

    El ejemplo que he encontrado es
    Ron_DropDown.xlsm

    ResponderEliminar
    Respuestas
    1. Hola

      Más adelante publicaré algún ejemplo que te puede servir, pero ahora a mano no tengo nada preparado. Además es que no lo ponen precisamente fácil para trabajar con los cuadros combinados. Tendrás que esperar un poco.

      Saludos.

      Eliminar
  4. Cómo instalo el programa para modificar la barra de ribbon de excel.

    ResponderEliminar
  5. Hola buen día tengo una pregunta que agradeceria mucho si me ayudas. Si quiero ocultar toda la cinta de opciones y dejar visible solo la pestaña de Custom UI Editor como podria lograrlo.

    ResponderEliminar
  6. Hola buen día tengo una pregunta que agradeceria mucho si me ayudas. Si quiero ocultar toda la cinta de opciones y dejar visible solo la pestaña de Custom UI Editor como podria lograrlo.

    ResponderEliminar
    Respuestas
    1. amigo es muy fácil.
      en archivo de Excel, vas a Opciones y aquí selecciones Personalizar cinta de opciones
      Veras que en la ventana de la derecha tienes todas las fichas, Deselecciona todas las que no desees. Le das a Aceptar en la parte de abajo y listo

      Eliminar
    2. Es aún más fácil en la etiqueta "ribbon" debes agregar:"startFromScratch="true"" y sólo mostrará la ficha personalizada.

      Muchas gracias por el artículo

      Eliminar
  7. como dar color a los grupos de fichas Ribbon?

    ResponderEliminar
  8. Estimado David.

    He visto tu trabajo de personalizar la ribbon por Youtube. Un trabajo muy bueno de exelencia y he pasado la mayoría de mis macros personales a la ribbon. Quiero hacerte algunas preguntas.

    1.- Cuantos botones personalizados se pueden insertar en un grupo.

    2.- Que tipo de macros son las que se deben de ejecutar a través de los botones.

    3.- Esto porque hay algunas macros que funcionan bien cuando las ejecutas desde el libro de macros personales y cuando las cargar en un botón dejan de funcionar o no las reconoce y te manda errores.

    Por Ejemplo: Macro para eliminar hipervinculos.

    Sub EliminarVinculos()
    On Error Resume Next
    Do Until ActiveSheet.Hyperlinks.Count = 0
    ActiveSheet.Hyperlinks.Delete
    Loop
    On Error GoTo 0
    End Sub

    Al pasarla a un botón ya no funciona.

    Te agradeceré si nos apoyas a resolver estos problemas.

    Gracias nuevamente.

    ResponderEliminar
  9. Aparte del custom UI editor, ¿que otros programas hay?

    ResponderEliminar
  10. Muy bueno, te comento que estoy haciendo cosas interesantes con custom UI

    ResponderEliminar
  11. Hola, tengo una duda, he creado la cinta de opciones, he puesto un dropDown y he conseguido cargarlo desde una base de datos de MySQL, tambien un checkbox pero ¿es posible seleccionar una de sus opciones y activar o desactivar el checkbox desde codigo VBA?. Gracias.

    ResponderEliminar
  12. Este comentario ha sido eliminado por el autor.

    ResponderEliminar

Nota: solo los miembros de este blog pueden publicar comentarios.