Curso Macros y VBA Excel Udemy

jueves, 28 de agosto de 2014

Artículo: Grabar, Ejecutar, Eliminar y Modificar Macros en Excel 2013.

Resultado de Ejecutar la Macro
Resultado de Ejecutar la Macro.
En el artículo anterior dedicado a las macros, nos paramos justo en el momento antes de empezar la grabación de una Macro. Sobre todo, lo dediqué a explicar muchas de las opciones y pasos previos que hay que conocer antes de empezar con la grabación. En este artículo vamos a continuar desde ese punto, grabaremos una pequeña macro de ejemplo y finalizaremos el artículo ejecutándola. En concreto veremos dos de las posibilidades que tenemos para ejecutar macros, en artículos posteriores veremos el resto. A la vez que ejecutamos la macro que vamos a crear también os hablaré de cómo modificar y eliminar macros.

Lo primero que hay que tener claro a la hora de grabar una macro, son los pasos que queremos grabar. Si os confundís durante la grabación, las equivocaciones también se grabarán y la macro seguramente no hará su trabajo, o hará trabajo de más que no debería hacer. Para este artículo vamos a crear algo muy sencillo, vamos a grabar una macro que asignará en unas celdas los días de la semana y posteriormente dará a esas celdas un formato que ahora os comentaré. Los días se van a crear en las celdas que van de la A1 a la G1, siempre en esas celdas. Vamos a imaginar que estos pasos los repetimos habitualmente y queremos tenerlos automatizados para que no nos quiten mucho tiempo de trabajo.

Resultado Final de la Ejecución de la Macro
Resultado Final de la Ejecución de la Macro.

Vamos con la macro. Cuando grabéis una macro, os aconsejo que practiquéis antes los pasos que vais a grabar. Si la macro es muy compleja, conviene que lo hagáis varias veces e incluso que los apuntéis en un papel a modo de guion, para no confundiros. Como aquí no hay diferencia entre que practiquemos o grabemos, vamos a empezar directamente con la grabación. Por lo tanto, creamos un documento nuevo en Excel y en la ficha "Desarrollador" pulsamos el botón para empezar la grabación de la macro, para que aparezca la "Grabadora de Macros".

Botón para empezar a Grabar la Macro
Botón para empezar a Grabar la Macro.

En las opciones iniciales de la macro le vamos a indicar que la macro se llamará "CrearSemana" y que se guardará en el documento actual, en ese libro. Como atajo de teclado o método abreviado le vamos a indicar las teclas Ctrl + Mayúsuculas + S. Recordad que en artículo anterior os aconsejé utilizar la tecla Mayúsculas en los atajos de teclado, para evitar malentendidos con los atajos de teclado de Excel. En la descripción podéis escribir lo que queráis, como la macro no es muy importante tampoco es fundamental que lo hagamos. Lo habitual ya sabéis que es escribir una pequeña descripción de que hace la macro.

Opciones Iniciales de la Macro
Opciones Iniciales de la Macro.

Bueno pues ahora, desde el momento en el que aceptemos, todo lo que hagamos se irá grabando y formará parte de la macro. Vamos a realizar los siguientes pasos, hacer todos lo mismo que yo.
  1. Seleccionamos la celda A1, escribimos en ella el texto "Lunes" y confirmamos el contenido de la celda pulsando la tecla "Intro".
  2. Primer Paso de la Macro.
  3. A continuación seleccionamos la celda A1 otra vez y una vez seleccionada, hacemos clic en el cuadrito situado en la parte inferior derecha de la celda... Y sin soltar, arrastramos hasta llegar a la celda G1, hasta que aparezca el "Domingo".
  4. Arrastramos el contenido de la celda A1 hasta que aparezca el Domingo en la G1
    Arrastramos el contenido de la celda A1 hasta que aparezca el Domingo en la G1.
  5. Ahora, sin quitar la selección de celdas que se ha quedado después de arrastrar... Aplicamos en esas celdas los formatos que os he indicado: Centrado, Negrita, Color de Fondo Negro y Color de Fondo Blanco. Accedemos a la ficha "Inicio" y los aplicamos.
  6. Aplicamos los formatos a las celdas seleccionadas
    Aplicamos los formatos a las celdas seleccionadas.

  7. Por último, como vamos a empezar a escribir justo debajo del "Lunes", seleccionamos la celda A2 para que al finalizar la macro estemos ya situados en esa celda.

  8. Seleccionamos la celda A2
    Seleccionamos la celda A2.

Bueno, pues ya están todos los pasos que queríamos grabar, ahora debemos detener la grabación de la macro, en la ficha "Desarrollador" pulsamos el botón "Detener Grabación". Es el mismo que servía para empezar la grabación, solo que ahora nos permite pararla.

Detenemos la Grabación de la Macro
Detenemos la Grabación de la Macro.

lunes, 25 de agosto de 2014

Vídeo: Personalizar la Interface de Usuario y la Ribbon de Excel con XML y VBA, Conceptos Básicos.



Al crear Macros o código VBA en Excel siempre buscamos la manera más cómoda y rápida de ejecutar el código que hemos desarrollado. Habitualmente se suelen utilizar controles ActiveX integrados en las hojas para conseguirlo, pero en mi opinión tenemos otra opción mucho mejor. Personalizando la Interface de Usuario de Excel, podemos conseguir que los documentos que creamos se adapten mejor a nuestras necesidades y que las herramientas que desarrollamos con VBA queden perfectamente integradas hasta el punto de parecer herramientas propias de Excel. En concreto personalizando la Cinta de Opciones o Ribbon, podemos conseguir un resultado mucho más satisfactorio a la hora de ejecutar las macros que desarrollemos, que con los típicos controles ActiveX que os acabo de comentar. Con controles ActiveX me refiero a los típicos botones, cuadros combinados, etc... Que se suelen insertar en las hojas.

En esta serie de vídeos que comienzo hoy os voy a explicar cómo personalizar la Interface de Excel, sobre todo la Ribbon para conseguir crear documentos mucho más usables y adaptados a lo que necesitamos. Veremos cómo crear nuevas fichas, grupos de botones, botones, cuadros combinados, cuadros combinados con imágenes, cómo activar o desactivar controles en la Ribbon según nuestras necesidades... En definitiva sobre todo vamos a intentar tener un control total sobre la Cinta de Opciones y otros elementos que componen la Interface de Usuario de Excel.

Personalización de una Cinta de Opciones
Personalización de una Cinta de Opciones.

Para conseguirlo vamos a crear personalizaciones utilizando el lenguaje XML y el código VBA de Excel, todo el trabajo que vamos a desarrollar lo vamos a realizar desde el punto de vista de la programación. Para crear el código XML necesario para las personalizaciones vamos a utilizar un programa libre, completamente gratis, llamado "Custom UI Editor", en el siguiente enlace lo podéis descargar.


No os cuento nada más, si os gustan los temas avanzados de Excel os aconsejo que no os perdáis esta serie de vídeos porque abren todo un mundo de posibilidades para integrar mucho mejor nuestros desarrollos en los documentos de Excel. En este vídeo se tocan los mismos temas que en el artículo que publiqué hace unos días, "Conceptos previos para personalizar la Cinta de Opciones o Ribbon de Excel con XML y VBA", pero como sabéis yo soy más partidarios de los vídeos y aquí tenéis el correspondiente a ese artículo.

jueves, 14 de agosto de 2014

Opciones y Pasos Previos a la Grabación de una Macro en Excel 2013.


Ficha Desarrollador en Excel 2013
Ficha Desarrollador en Excel 2013
Antes de realizar algunas macros de ejemplo, en este artículo os voy a explicar los pasos previos que hay que seguir para empezar a grabar una macro. Entre otras cosas os voy a explicar cómo mostrar todas las herramientas relacionadas con las "Macros". Y también veremos qué información y opciones iniciales hay que indicar antes de empezar la grabación de una macro.

Lo primero que hay que hacer es mostrar la ficha "Desarrollador" en la "Cinta de Opciones" de Excel 2013, que por defecto está siempre oculta. En ella tenemos disponibles todas las herramientas que nos van a permitir crear Macros y código VBA. Se pueden crear macros sin tener visible esta ficha, se puede utilizar el botón situado en la "Barra de estado" para iniciar la grabación de macros, en la siguiente imagen lo podéis ver. Cuando empecéis a grabar una macro con él, se convertirá en el botón para detener la grabación de la macro. Pero como os digo, es mejor que os acostumbréis a tener visible la ficha "Desarrollador".

Botón para iniciar la grabación de una macro desde la barra de estado
Botón para iniciar la grabación de una macro desde la barra de estado.

Para mostrar la ficha "Desarrollador" debemos acceder a la personalización de la "Cinta de Opciones". Podemos hacer clic con el botón secundario del ratón sobre la cinta y seleccionar la opción "Personalizar la cinta de opciones".

Accedemos a las opciones de la Cinta de Opciones
Accedemos a las opciones de la Cinta de Opciones.

Una vez seleccionada esa opción, aparecerá una ventana donde podemos activar la casilla de verificación que nos permitirá mostrar la ficha. Está en la lista de la derecha y por defecto siempre está desactivada. La activamos y a continuación aceptamos para que aparezca la ficha, en la "Cinta de Opciones".

Activar la ficha Desarrollador
Activar la ficha Desarrollador.

Cuando la tengamos visible, accedemos a ella y para empezar a grabar una macro nos debemos fijar en el botón "Grabar macro" del grupo "Código". En ese grupo de botones tenemos las opciones más importantes para crear macros y código VBA.

Botón para iniciar la grabación de una macro
Botón para iniciar la grabación de la macro.

Al hacer clic en el botón "Grabar macro", aparecerá una ventana en la que debemos indicar algo de información inicial sobre la macro que vamos a crear. En este punto todavía no hemos empezado a grabar la macro, sólo cuando pulsemos el botón "Aceptar", empezará la grabación.

Opciones iniciales de una Macro
Opciones iniciales de una Macro.

Lo primeo que debemos indicar es el nombre de la macro. El nombre es muy importante ya que es lo que identificará a la macro que queremos ejecutar entre todas las que tengamos disponibles. Para ser válidos los nombres deben cumplir unos criterios que si no se cumplen, no permitirán iniciar la grabación de la macro:


  • El Nombre siempre debe empezar con una letra, el primer carácter del nombre debe ser una letra.
  • A partir del segundo carácter se pueden utilizar letras, números y el guion de subrayado. Todo lo demás está prohibido. 
  • Una vez comentado lo anterior, obviamente los espacios están prohibidos. Todo lo que se os pueda ocurrir fuera de letras, números y guiones de subrayado... prohibido.
  • Debéis evitar nombrar a las macros con nombres que tengan otros objetos del documento en el que estáis trabajando. Por ejemplo no podéis utilizar nombres de celdas que hayáis creado en las hojas. Imaginaros que habéis llamado a una celda Iva, bueno pues no deberíais llamar a una macro de la misma manera.

Mensaje de error al usar un nombre de macro que no es correcto
Mensaje de error al usar un nombre de macro que no es correcto.

martes, 12 de agosto de 2014

Artículo: Ejecutar una Macro o Código VBA desde un Botón de la Cinta de Opciones.

Resultado final del artículo
Resultado final del artículo.
En el artículo anterior creamos varios botones en una ficha personalizada y os hablé de algunas de las propiedades de los botones que se crean con la etiqueta "button". Pero no os hablé de la propiedad más importante, la que permite indicar que tiene que suceder cuando se pulsa el botón, la propiedad "onAction". En ella podemos indicar que macro o código VBA queremos que se ejecute al ser pulsado el botón. En este artículo la vamos a usar y veremos cómo enlazar los botones de la Cinta de Opciones con nuestras Macros o código VBA.

Para la explicación voy a seguir con el documento que creamos en el artículo anterior, pero en mi caso le he quitado el grupo "Albaranes" de la ficha "Facturación" y la ficha "Productos". He quitado casi todo lo que por el momento no vamos a utilizar. Si no lo tenéis, lo podéis descargar del siguiente enlace.


En la primera imagen del artículo, podemos ver cuál será el resultado visual final. Como podéis ver aparecen los dos botones que añadimos en el artículo anterior y uno tercer botón nuevo. Entre el segundo y el tercero he metido un separador que consiste en una línea vertical de separación. Primero vamos a realizar estos cambios, añadiremos el tercer botón y el separador.


Podemos utilizar el control separador para separar controles en los grupos de controles
Separador para separar controles en los grupos de controles.

Abrimos el documento en el Custom UI Editor y vamos con las modificaciones en el aspecto visual del grupo de controles "Facturas". En algunas ocasiones puede que queramos separar controles dentro de un mismo grupo, por ejemplo en este caso he querido separar de los otros dos el botón que permitiría eliminar facturas. Como es un poco peligros he decidido separarlo un poco. Para esto tenemos un control que podemos definir en el código XML y que se utiliza como separador, escribimos la siguiente líneas después de los dos botones que tenemos definidos del artículo anterior.

<separator id="separador01" />
<button id="botonEliminarFactura" label="Eliminar" size="large" imageMso="ReviewDeleteComment" />

Añadimos un separador con la etiqueta separator y un botón con button
Añadimos un separador con la etiqueta separator y un botón con button.

La primera línea que hemos añadido es completamente nueva, en ella usamos la etiqueta "separator" para añadir un separador entre los dos botones que ya existen y el que creamos en la siguiente línea. Como ya os he comentado como separador se crea una línea vertical, en la siguiente imagen lo podéis ver. Es una etiqueta muy sencilla lo único que hemos utilizado en su interior es la propiedad "id" para darle un identificador. Como podéis observar, al igual que la etiqueta "buton" no tiene etiqueta de cierre, se define en una sola etiqueta. Como en su interior no hay otros elementos no hace falta, todo en una sola etiqueta.

Después del separador hemos añadido otro botón que usaremos para eliminar facturas. Sobre los botones ya os hablé en el artículo anterior y de momento no hay nada nuevo que contaros en este. Para definirlo he utilizado las propiedades de las que ya os hablé.

Aspecto definitivo de la ficha Facturación
Aspecto definitivo de la ficha Facturación.

Una vez que tenemos el aspecto visual creado, vamos con el lógico, con el funcionamiento. Como os he dicho antes, de los botones no hemos utilizado la propiedad más importante que tienen, la que nos permite indicar que pasará cuando se pulsen. ¿De qué nos sirve un botón si no pasa nada al pulsarlo? De los tres botones que tenemos, dos los vamos a modificar para que hagan algo al ser pulsados. Va ser muy sencillo, ya os he dicho que en estos artículos sobre todo me quiero centrar en conocer todo lo relacionado con el XML. Ya tendremos tiempo de crear código más complejo para ser ejecutado desde la Cinta de Opciones. De momento lo único que pasará es que cuando pulsemos el botón "Nueva" se añadirá una nueva hoja al documento y al pulsar el botón "Eliminar" se eliminará la hoja en la que estamos en ese momento. Evidentemente ninguna de las dos tareas se corresponde con crear nuevas facturas y eliminarlas, pero ya os digo que eso no es lo que estamos aprendiendo en estos artículos. Vamos con el primero, modificamos el código del primer botón para añadir una nueva propiedad, la propiedad "onAction":

<button id="botonNuevaFactura" label="Nueva" size="large" imageMso="FileNew" onAction="Facturas.CrearFactura"/>

La propiedad "onAction" es la responsable de controlar que se hace cuando se pulsa un control, en este caso un botón. En ella tenemos que indicar el nombre de la macro o procedimiento VBA que queremos que se ejecute al ser pulsado el botón. Aquí le he dicho que se ejecutará un procedimiento llamado "CrearFactura" que está situado dentro de un módulo llamado "Facturas". Ahora diréis, ¿Y dónde está esto? Bueno pues cuando acabemos en el Custom UI Editor debemos ir a Excel para crear ambas cosas, el módulo y el procedimiento. Es cuanto llegará el momento de programar. En cuanto al XML ya no hay nada más que hacer, esto es todo para este botón. Nos falta hacer lo mismo con el tercer botón, el que eliminará las facturas.

<button id="botonEliminarFactura" label="Eliminar" size="large" imageMso="ReviewDeleteComment" onAction="Facturas.EliminarFactura"/>

Nada nuevo, en este caso le indicamos que cuando se pulse el botón se ejecutará el procedimiento "EliminarFactura" situado en el módulo "Facturas". El código XML de todo el documento quedará como veis en la siguiente imagen, el siguiente paso es pasar a Excel para escribir el código VBA.

Código XML con las llamadas a los Procedimientos de VBA.

lunes, 11 de agosto de 2014

Artículo: Cómo crear Botones en la Cinta de Opciones o Ribbon de Excel con XML.

Crear Botones en ficha personalizada
Resultado Final de este Artículo.
En el artículo anterior, llegamos a crear dos fichas personalizadas en la Cinta de Opciones de Excel, en la Ribbon. Pero estaban vacías, no había controles en su interior. En este artículo vamos a empezar a añadirlos, en concreto vamos a ver como insertar botones en las fichas personalizadas de la Ribbon. A partir de aquí, nos vamos a encontrar con multitud de controles y propiedades que poco a poco iremos explicando en los diferentes artículos. En la imagen de al lado podéis ver el resultado final que obtendremos  al finalizar el artículo. El documento que voy a usar, lo podéis descargar pulsando en el siguiente enlace.


Si habéis seguido los pasos del artículo anterior podéis usar el vuestro. Por lo tanto abrimos el documento  en el Custom UI Editor y así veremos el código XML de ese artículo

Código XML para definir dos fichas personalizadas
Código XML para definir dos fichas personalizadas.

Lo primero que debemos tener en cuenta para añadir controles en las fichas de la Ribbon, es que deben estar dentro de otro contenedor que todavía no hemos usado. En el anterior artículo llegamos hasta la etiqueta "tab", que era la que realmente creaba la ficha. Pero todavía necesitamos otro para poder crear botones u otros controles. Escribimos las siguientes líneas entre las etiquetas que definían la ficha "FACTURACIÓN". 

<group id="grupoFacturas" label="Facturas">
</group>
Creamos un grupo de controles con la etiqueta group
Creamos un grupo de controles con la etiqueta group.

Con la etiqueta "group" que hemos añadido dentro de "tab", creamos un grupo de controles. Si os fijáis en cualquiera de las fichas que tiene Excel de serie, veréis que los controles están distribuidos en grupos de controles. Por ejemplo en la ficha "Inicio" tenemos los grupos "Fuente", "Alineación", "Número", etc...

Grupos de controles en la ficha "Inicio" de Excel 2013
Grupos de controles en la ficha "Inicio" de Excel 2013.

Bueno, pues con la etiqueta "group" creamos un grupo de controles en el que posteriormente iremos añadiendo botones. Se pueden insertar más tipos de controles, pero en este artículo sólo usaremos botones. Esta etiqueta es muy sencilla e igual que todas las etiquetas que pueden contener otros elementos, tiene etiqueta de inicio y de fin. En cuanto a las propiedades, solo hemos usado la propiedad "id" para identificar el grupo y la propiedad "label" para indicar el texto que se verá como nombre del grupo. En este caso como texto hemos puesto "Facturas".

Ficha con el grupo de controles creado pero vacío
Ficha con el grupo de controles creado pero vacío.

En la imagen anterior podéis ver el grupo de controles y en la parte inferior tiene el nombre que hemos indicado en la propiedad "label". Como no hemos metido todavía controles en su interior, está vacío. Como podéis comprobar en las fichas de Excel, puede haber más de un grupo en una ficha. Lo único que habría que hacer es añadir tantas etiquetas "group" como grupos tenga. Por ejemplo puedo añadir otro grupo dentro de la primera ficha, en este caso un grupo dedicado a los albaranes, a las notas de entrega.

<group id="grupoAlbaranes" label="Albaranes">
</group>
Código XML para definir un grupo de controles
Código XML para definir un grupo de controles.

Igual que con las fichas, el orden en el que aparecerán los grupos depende del orden en el que los escribáis en el código XML. Este sería el resultado que obtenemos:

Dos grupos vacíos en la ficha personalizada
Dos grupos vacíos en la ficha personalizada.

viernes, 8 de agosto de 2014

Artículo: Cómo crear fichas en la Cinta de Opciones con XML y el Custom UI Editor.


Ficha Personalizada que vamos a crear
Ficha Personalizada que vamos a crear.
Después de la pequeña introducción del artículo anterior, vamos a crear unas fichas personalizadas en la Ribbon, usando el Custom UI Editor. En este ejemplo vamos a crear algo muy sencillo, como es el primer ejemplo nos vamos a centrar más en conocer detalles del Custom UI Editor y del lenguaje XML. En este artículo sólo vamos a escribir el código XML necesario para mostrar dos fichas nuevas en la Cinta de Opciones de Excel. En el siguiente artículo les añadiremos controles, pero en este sólo las vamos a crear. En concreto vamos a crear dos fichas llamadas "Facturación" y "Productos". Vamos a suponer que vamos a crear un documento que nos permita llevar la gestión de un pequeño negocio. Pero fijaros que estoy hablando de suponer, no vamos a desarrollar el documento por completo, sólo lo vamos a utilizar para las explicaciones relacionadas con la Ribbon. Recordad que yo utilizo la versión 2013 de Excel, pero todo lo que expliqué en este artículo funcionará igual en Excel 2010.

Para empezar, tenéis que crear un documento nuevo en Excel y lo debéis guardar, yo por ejemplo le voy a llamar "GestionNegocio". Cuidado, porque en el tipo de archivo tenéis que elegir Libro de Excel habilitado para macros (*.xlsm). Los controles que vamos a crear en los artículos van a interactuar con macros, con código VBA y por lo tanto el archivo tiene que tener este formato para poder contener ese código.

Guardar el documento como Libro habilitado para Macros
Guardar el documento como Libro habilitado para Macros.

Una vez guardado el documento, cerráis Excel o el documento, lo que más rápido os parezca... Y así, de momento, ya hemos acabado con el trabajo en Excel, ahora toca el trabajo en el "Custom UI Editor". En el artículo anterior os comenté donde conseguir este programa libre, podéis acceder a él para descargarlo si todavía no lo tenéis. Lo buscamos en Windows y lo ejecutamos... En cuando se cargue, abrimos el documento que acabamos de crear en Excel.

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

Al hacerlo, la pantalla se dividirá en dos. En la parte izquierda del programa nos muestra el nombre del documento que tenemos abierto. Si el archivo tendría hecha una personalización, veríamos algo más, en esa parte izquierda, pero como no es así solo vemos el nombre del documento. Enseguida os contaré que es lo que veríamos. La parte derecha la veréis completamente vacía por la misma razón, todavía no hemos personalizado el documento. Ahí deberíamos ver el código XML que define la personalización que hemos realizado. Para empezar con el trabajo debemos añadir a nuestro documento el archivo XML que os comenté en el artículo anterior, el que tenía que contener la definición de la cinta personalizada o las modificaciones que hagamos en la Interface de Usuario de Excel. Para hacerlo debemos acceder al menú "Insert" y ahí tenemos dos opciones.

Añadir archivo XML al archivo de Excel
Añadir archivo XML al archivo de Excel.

Como podéis ver en la imagen, se puede elegir entre crear una personalización para Office 2010 o 2007. Ya os comenté en el artículo anterior que hay pequeñas diferencias entre ambas versiones y por eso se da la opción de crear una personalización específica para cada versión. En el caso de Excel 2013 también se usa la de la versión 2010, aunque no lo ofrezca como opción, funcionará sin problemas. Este programa es muy antiguo y no se ha actualizado para la versión 2013 porque no hace falta, con la personalización de la versión 2010 funciona perfectamente.

Archivo XML de personalización insertado en el documento de Excel
Archivo XML de personalización insertado en el documento de Excel.

En mi caso he seleccionado la opción 2010 y ya podéis ver el resultado. Como os comenté en el artículo anterior para personalizar la interface de Excel, en este caso la cinta de opciones, en la versión 2010/2013 de Excel hay que insertar un archivo XML llamado "customUI14.xml"... Y eso es lo que acaba de hacer el programa. Si usáis la versión 2007 deberíais seleccionar su opción para insertar el archivo XML correcto, que en ese caso se llamaría "customUI.xml".

Archivo XML insertado par ala versión 2007
Archivo XML insertado para la versión 2007.

En el artículo anterior os comenté que si queréis podéis añadir los dos archivos de configuración a un documento. Si pensáis que puede ser interesante que cada versión, 2007 por un lado y 2010/2013 por otro, tengan personalizaciones diferentes, lo podéis hacer. Lo único que tenéis que hacer es volver al menú "Insert" y seleccionar la versión que todavía no habéis metido. Así acabaréis con dos archivos de configuración en el documento de Excel que se adaptarán a la versión que usemos.

Dos archivos XML insertados para cada una de las versiones
Dos archivos XML insertados para cada una de las versiones.

Yo sigo adelante con el archivo de la versión 2010/2013 y vamos a empezar a escribir código XML. Usando algunas de las plantillas que hay en el menú "Insert" podríamos ahorrarnos algo de escritura de código, pero no las voy a usar. Como añaden más líneas de las que necesitamos y habría que borrar algunas, prefiero empezar escribiendo todo manual y explicando cada una de las líneas que añadimos. Las dos primeras líneas que tenemos que añadir son las siguientes.

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
</customUI>
Líneas que definen una personalización de la Interface de Usuario de Excel
Líneas que definen una personalización de la Interface de Usuario de Excel.

Con estas dos primeras líneas estamos definiendo una personalización de la Interface de Usuario de Excel. Cuando se abra el documento, Excel mirará este archivo y al encontrar estas dos líneas, ya sabe que hemos personalizado algo y que tiene que prestar atención a lo que estará entre estas dos líneas. La primera línea es la de apertura y la última es la de cierre. Todo lo que forme parte de la personalización deberá estar entre estas dos líneas. Esta es la estructura del lenguaje XML, se basa en elementos que se definen con etiquetas. En este caso hay una etiqueta de apertura, la que empieza por "<customUI" y la de cierre "</customUI>". Cuando hay etiqueta de apertura y de cierre, la de cierre siempre es el elemento que se crea con una barra por delante, en este caso el elemento era un customUI, una personalización de la interface de usuario.

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.