jueves, 25 de septiembre de 2014

Vídeo: Ejecutar Macros o Código VBA desde los Botones de la Cinta de Opciones.



En la sesión anterior, aprendimos a crear botones en las fichas personalizadas de la Ribbon de Excel usando código XML. Los botones que creamos tenían una representación visual en Excel, pero funcionalmente no ofrecían nada, no funcionaban. En esta sesión nos vamos a dedicar a eso, aprenderemos como ejecutar las "Macros" o "Código VBA" que desarrollemos en Excel, desde los botones que creemos en la "Cinta de Opciones".

En esta sesión el trabajo con el código XML va ser mínimo, casi no vamos a trabajar en el "Office Custom UI Editor". Para conectar los botones con las macros lo único que debemos usar en el código XML es la propiedad "onAction" de los botones "button". En ella simplemente hay que indicar el nombre de la "Macro" que queremos que se ejecute al ser pulsado el botón y después sólo nos quedará desarrollar las macros en Excel.

Una vez estemos en Excel, en realidad el código que hay que escribir de VBA para conectar con los botones también es mínimo. Lo único que necesitamos es crear procedimientos de VBA que reciban un argumento de tipo "IRibbonControl", es el único requisito que hay que cumplir en cuanto a cómo deben ser las macros que ejecutemos desde los botones de la "Ribbon". El resto del código a desarrollar ya dependerá de las necesidades específicas de cada uno. En este vídeo por ejemplo, en ese sentido, vamos a ir poco más lejos que en el artículo que publiqué en el Blog sobre este tema, voy a crear un ejemplo algo más complicado.

Vamos a crear un ejemplo que "mate" dos pájaros de un tiro. Servirá para aprender a conectar las macros con los botones de la "Cinta de Opciones". Y también servirá para ayudaros a encontrar la solución a una de las dudas que más me soléis plantear: Como guardar en un documento nuevo de Excel una copia de una factura rellenada. En este ejemplo vamos a crear dos botones en una ficha personalizada de Excel que al pulsarlos, uno creará nuevas facturas y el otro las guardará. Ojo, que se trata de daros "pistas" para solucionar esa necesidad que algunos tenéis. Muchas veces pedís con cierta ligereza este tipo de ayuda y no os dais cuenta que crear un documento para gestionar estos temas requiere mucho tiempo y trabajo.

Documento con el que trabajaremos en el Vídeo
Documento con el que trabajaremos en el Vídeo.

miércoles, 17 de septiembre de 2014

Vídeo: Crear Botones en la Cinta de Opciones o Ribbon de Excel con XML y el Office Custom UI Editor.



En la sesión anterior, aprendimos a crear fichas personalizadas en la Ribbon de Excel usando código XML. En esta, vamos a dar contenido a las fichas, aprenderemos a crear "Grupos de Controles" y "Botones", también usando código XML y el Office Custom UI Editor.

En las fichas de la cinta de opciones puede haber multitud de tipos de controles: Botones, Listas, Cuadros combinados, galerías, etc... En este vídeo vamos a empezar por los más fáciles de crear y manejar, los botones. Antes de empezar a crearlos, debemos conocer otro tipo de objetos, los grupos de controles. Cualquier tipo de control que queramos añadir a una ficha debe estar dentro de un grupo de controles, en las fichas que tiene Excel de serie se pueden ver ejemplos. Por ejemplo en la ficha "Inicio" de Excel tenemos los grupos "Portapapeles", "Fuente", "Alineación", "Número", etc...

Grupos de Controles en la Ficha Inicio.

Los grupos se crean usando la etiqueta "group" y en su interior iremos añadiendo todas las etiquetas que definan los controles que irán dentro de cada grupo. En este caso irán todas las etiquetas "button" que definirán los botones que vamos a crear. Esto es principalmente lo que vamos a ver en esta sesión, las etiquetas "group" y "button" que nos permitirán crear "Grupos de Controles" y "Botones". Igual que en el vídeo anterior os iré explicando algunas de las propiedades que vamos a utilizar para definir ambos objetos.

Entre otras propiedades hablaremos de la propiedad "size" e "imageMso". Con la primera controlaremos el tamaño de los botones que creamos y con la segunda la imagen que se muestra en los botones. La propiedad "imageMso" es una de las posibilidades que tenemos para configurar la imagen de un botón, más adelante hablaremos del resto. Para configurar esta propiedad puede ser interesante que os descarguéis este archivo de la página Web de Microsoft. Es un documento que os ayudará a elegir la imagen que queréis para vuestro botón, en el vídeo os doy más detalles sobre su uso.


Para realizar los pasos que veréis en el vídeo os podéis descargar el siguiente archivo de Excel, sino tenéis el de las sesión anterior o no lo queréis modificar.


También os dejo aquí el enlace para descargar el programa "Custom UI Editor" que uso en los vídeos. Seguramente ya lo tendréis todos, pero lo pongo para los rezagados. Recordad que es de uso libre y aquí os dejo el enlace oficial en el que lo podéis descargar.

lunes, 15 de septiembre de 2014

Artículo: Cómo encontrar y depurar los errores en el código XML que personaliza la Interface de Excel.

Podemos depurar código XML en Excel
Podemos depurar código XML en Excel.
Seguro que más de uno, en los artículos anteriores, se ha vuelto loco buscando donde se había confundido y pensando en porque no se muestran los cambios que os he explicado en esos artículos. Como ya os he comentado es  muy fácil confundirse al escribir el código XML y la verdad es que si no conocemos las opciones que os voy a explicar hoy, es muy difícil encontrar el error. Como poco a poco los ejemplos se van a ir complicando, creo que ya es el momento de explicaros dos opciones que tenemos para encontrar errores en el código XML. Una está en el "Custom UI Editor" y la otra está dentro de Excel. Vamos con ellas. Para este artículo voy a utilizar el documento acabado en el artículo anterior. Si no lo tenéis lo podéis descargar del siguiente enlace:


Una vez tengamos todos el documento vamos a empezar con el trabajo en el "Custom UI Editor". Abrimos el documento y vamos a provocar varios errores en el código XML, para así ver que opciones tenemos en el programa para encontrarlos. Por ejemplo, vamos a empezar cometiendo uno de los errores más típicos, el de las mayúsculas. Vamos a cambiar las dos etiquetas "ribbon", pondremos la primera letra en mayúsculas.

<Ribbon>
</Ribbon>
Escribimos la etiqueta ribbon con mayúsculas
Escribimos la etiqueta ribbon con mayúsculas.

Ahora vamos con la opción que nos ayudará a encontrar este error, el botón para validar. Este botón está situado en la pequeña barra de herramientas que tiene el "Custom UI Editor", es el botón con una "V" roja de validación.

Botón para validar el código XML
Botón para validar el código XML.

Cuando pulséis este botón el "Custom UI Editor" hará una validación del código y si encuentra algún error os mostrará información sobre el error que ha encontrado. Pulsamos y obtendremos el siguiente mensaje.

Mensaje de error al validar el código XML
Mensaje de error al validar el código XML.

Os resumo lo que dice, básicamente nos está diciendo que dentro de un "customUI", no puede haber algo llamado "Ribbon". Eso es lo que nos dice en la primera parte del mensaje, nos dice que en el espacio de nombres que hemos indicado en la primera línea del código XML, no hay elementos que se llamen "Ribbon", dentro de un "customUI". Esta es la primera línea de código XML que tenemos escrita.

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">

Cuando escribimos esta línea en otro artículo, os conté un poco por encima para que servía, pero ahora os puedo dar más detalles. Un espacio de nombres es una manera de organizar elementos, objetos, es una organización virtual. Es una manera de organizar objetos de diferentes tipos que pueden tener los mismos nombres, organizándolos en espacios de nombres diferentes, podemos evitar esos conflictos. En concreto, en nuestro ejemplo, le indicábamos que queríamos utilizar el espacio de nombres en el que están incluidos todos los elementos y objetos que se pueden utilizar para crear una personalización de la Interface de Usuario en Excel 2010. Bueno pues al pulsar el botón para validar, el "Custom UI Editor" comprueba si los elementos que utilizamos en las etiquetas, existen en ese espacio de nombres. Como en XML se diferencia entre mayúsculas y minúsculas, no ha encontrado el que nosotros hemos indicado.

Fijaros, que el mensaje es mucho más interesante de lo que parece a primera vista. Habla de que dentro de un "customUI", es decir dentro del primer nivel que hemos creado en el código XML, no existe algo llamado "Ribbon". Es decir, que no solo mira si existe lo que hemos escrito, también mira si lo que hemos escrito tiene sentido en el nivel que está escrito. De hecho fijaros, justo después de decirnos eso, nos da las posibilidades que tenemos para utilizar dentro de un "cutomUI". Nos dice que podemos usar "commands", "ribbon", "backstage" y "contextMenus". Aquí sólo hemos usado "ribbon", del resto ya hablaremos. Por lo tanto ya veis, que si nos fijamos bien en el mensaje y nos lo tomamos con tranquilidad, tenemos mucha información para encontrar el problema.

martes, 9 de septiembre de 2014

Vídeo: Crear Fichas Personalizadas en la Ribbon de Excel usando XML y el Office Custom UI Editor.



Después de la pequeña introducción del vídeo anterior, empezamos con el trabajo directo con el código XML. En este vídeo os voy a enseñar cómo crear fichas personalizadas en la Ribbon, en la Cinta de Opciones. Las fichas son el principal contenedor de controles en la Cinta de Opciones y es el primer paso que daremos en la modificación de la Interface de Excel.

Para lograr el resultado final, empezaremos creando una personalización de la Interface de Usuario de Excel desde el cero, desde el principio. Iremos pasando por todos los niveles y elementos que forman la Interface del programa, hasta llegar al nivel en el que podemos crear las fichas. Entre otras cosas os hablaré de los siguientes elementos: cutomUI, ribbon, tabs y tab. Durante el vídeo también os hablaré de algunas de las propiedades que nos ayudarán a definir fichas en la Cinta de Opciones, en concreto os hablaré de las propiedades insertBeforeMSO, insertAfterMSO y de label. Las dos primeras nos permiten indicar en qué posición queremos crear las fichas nuevas dentro de la Ribbon y la última es la típica propiedad con la que controlamos el texto que muestran los controles.

Igual que en el vídeo anterior necesitaremos el programa "Custom UI Editor" para escribir el código XML que definirá las fichas. En el siguiente enlace lo podéis descargar.


Durante el vídeo también os hablo de la necesidad de conocer los nombres en inglés de los controles que forman Excel. Como os comento en el vídeo, los siguientes archivos os ayudarán en esa tarea, contienen listados con información sobre los diferentes controles que forman los programas de Office. Los tenéis disponibles para Excel 2013, 2010 y 2007.


miércoles, 3 de septiembre de 2014

Artículo: Guardar y Abrir documentos con Macros en Excel 2013.

Macros Deshabilitadas
Macros Deshabilitadas.
En el artículo anterior, creamos una pequeña macro y vimos varias maneras de ejecutarla. El siguiente paso lógico en el proceso de crear macros, es guardarlas. Aunque parezca que es un paso sin importancia, los "novatos" en este tema tenéis que tener cuidado porque en el proceso podéis perder las macros. Una vez guardadas, lo más normal es que en algún momento utilicéis de nuevo el documento que las contiene y ahí van a surgir otras "dificultadas" o "dudas" relacionadas con la seguridad de las macros. Sobre estos dos temas os hablo en este artículo, aunque en él no voy a desarrollar por completo la segunda parte, no voy a explicar todos los detalles relacionados con la seguridad de las macros., lo haré en los siguientes artículos.

Vamos con la primera parte, guardar "Macros". Para empezar deberíamos partir de un documento en el hayamos creado alguna macro, pero en el que todavía no hayamos dado el paso de guardar el documento, yo voy a utilizar el documento que contiene la macro del artículo anterior que todavía no lo había guardado. Para empezar no hay que hacer nada especial, debemos seguir los pasos habituales para guardar documentos en Excel 2013: Podemos pulsar en el botón para guardar de la "Barra de Herramientas de Acceso Rápido" o acceder a la ficha "Archivo" y utilizar alguna de las posibilidades que tenemos para guardar el documento.

Guardamos el documento que contiene la macro de ejemplo
Guardamos el documento que contiene la macro de ejemplo.

En mi caso, lo voy a guardar en una carpeta de mi equipo y con el nombre de "Calendario". De momento, no hay nada nuevo a la hora de guardar el documento. Ahora pulsamos el botón para guardar y...

Aviso de Excel para guardar macros
Aviso de Excel para guardar macros.

Aparecerá lo que os quería mostrar y con lo que tenéis que tener cuidado. Este mensaje lo tenéis que leer bien, porque si seleccionáis una de las opciones sin pensar, seguramente acabaréis perdiendo las macros. En este mensaje nos advierte que hay algo que no se puede guardar en un libro de Excel sin macros, en un documento "normal". En concreto nos dice que hay un proyecto de Visual Basic que no se puede guardar. Recordad que las macros que creamos con la "Grabadora de Macros" se convierten en código Visual Basic y a ese código es al que se está refiriendo en este mensaje.

Una vez que ya sabemos cuál es el problema, debemos fijarnos bien en el resto del mensaje que nos muestra, porque ahí está el paso en el que podemos perder las macros. Nos dice, que para guardar el documento con las macros, debemos pulsar en la opción "No" y a continuación seleccionar un formato de archivo que permita guardar las macros. Mucha gente no se fija en la información que muestra esta ventana y piensa que le está preguntando si quiere guardar el documento con las macros... A lo que se suele contestar pulsando en la opción "Si" y eso provoca que se pierdan las macros, ya que al contestar que "Si" le estamos diciendo que continúe guardando en un formato de archivo en el que no se permite guardar macros. Fijaros que al final del mensaje nos lo dice: "Para seguir guardando el archivo como libro sin macros, haga clic en Si".

Por lo tanto fijaros bien y responded lo que realmente necesitáis. Si no os interesa guardar las macros que tenga el documento, podéis pulsar en "Si" y el documento se guardará sin las macros que contenga. Si por el contrario, sí que os interesa guardar las macros, hay que pulsar en "No" y a continuación deberíamos hacer lo siguiente. Al pulsar en "No", volveréis a la ventana en la que le indicamos con que nombre y donde queremos guardar el documento, pero ahora debemos cambiar algo.

Cambiar el Formato del documento de Excel
Cambiar el Formato del documento de Excel.

Desde la versión 2007 de Excel, cuando un documento contiene Macros, hay que cambiar el formato del archivo en el que se guardará el documento. En versiones anteriores si un documento contenía macros no había que hacer nada especial para guardar, los documentos "normales" de Excel podían contener macros, pero ahora no. Los documentos "normales" de Excel 2007 en adelante acaban con la extensión ".xlsx", este tipo de documentos no puede contener macros. Hay que cambiar el formato a uno que permita guardar macros, en concreto a "Libro de Excel habilitado para Macros (*.xlsm)", en este caso los documentos tendrán la extensión ".xlsm".

Libro de Excel habilitado para Macros
Libro de Excel habilitado para Macros.

Este formato permite guardar en su interior macros y código VBA y es el que tenemos que seleccionar en estos casos. Si ahora pulsamos en "Guardar", se guardará el documento y ya no recibiremos ningún mensaje de advertencia. Bueno, pues ya está, estos eran los detalles que debéis tener en cuenta a la hora de guardar documentos con macros. Ahora llega la segunda parte, ¿Qué pasará cuando abramos el documento?