lunes, 24 de noviembre de 2014

Filtrar Datos en Excel usando un ComboBox de la Cinta de Opciones con VBA y XML.

Curso: Personalizar la UI de
Excel con XML y VBA.
Formato:
Artículo/Tutorial.
Archivos necesarios:Personal v0.02.xlsm.
Anterior Artículo/Tutorial:Crear ComboBox...
Siguiente Artículo/Tutorial:Próximamente.
Versión Vídeo/Tutorial:Próximamente.

Vamos a crear un comboBox con imágenes en la Ribbon.
Aplicamos Fltros con un ComboBox.

Seguimos con la creación de un comboBox en la Cinta de Opciones de Excel, en la Ribbon. En el artículo anterior os explique cómo crear un cuadro combinado usando XML y también os expliqué los atributos o propiedades más importantes que tiene un comboBox para controlar su apariencia. En este artículo nos vamos a dedicar a su funcionamiento, os voy a explicar cómo utilizar la opción seleccionada, vamos a ver cómo acceder a ella desde VBA. Como ejemplo, se me ha ocurrido que cuando seleccionemos una opción se aplicará un filtro, por lo tanto eso es lo que vamos hacer. Vamos a ir dando todos los pasos necesarios para conseguir aplicar filtros con el comboBox y así descubriremos de qué manera podemos comunicar el comboBox con VBA, con Visual Basic. Sorprendentemente, no es tan difícil como seguro que estáis pensando. Después de todo lo que hicimos para conseguir desactivar los botones de la Ribbon en un artículo anterior, os va sorprender lo fácil que es hacer lo que os acabo de proponer.

Vamos con el trabajo. Para realizar los mismos pasos que yo, os he dejado para descargar el documento que utilizo en el artículo. Si habéis realizado los pasos del artículo anterior podéis usar ese, de lo contrario, podéis realizar la descarga a continuación o al inicio del artículo en su ficha descriptiva.
Como casi siempre, el primer paso lo tenemos que dar en el Custom UI Editor. Debemos añadir algo más al código XML que desarrollamos en el artículo anterior. Accedemos a él y abrimos el documento con el que vamos a trabajar. Lo que tenemos que añadir en esta ocasión es bastante evidente. Tal y como tenemos el comboBox no hace nada, debemos añadir algo para poder conectarlo con el código VBA que se encargará de filtrar los datos de los trabajadores. Los comboBox tienen un atributo llamado onChange que es el que se encarga de esa tarea. En él debemos indicar que macro o procedimiento de VBA se ejecutará cuando cambie la opción seleccionada en el cuadro combinado. Añadimos ese atributo a la definición del comboBox con el valor que podéis ver a continuación.

<comboBox id="comboPoblacion" label="Selecciona una población: " sizeString="XXXXXXXXXXXXXXXXXXXXXXXXX" 
imageMso="GroupSmartArtQuickStyles" screentip="Selecciona una población..." supertip="Al seleccionar una..." onChange="ModuloEmpleados.FiltrarPorPoblacion">


He acortado los valores de screentip y supertip para que no molesten, pero vosotros mantener los que establecimos en el artículo anterior. En cuanto a onChange hay poco que comentar. Le he indicado que cuando se cambie la opción seleccionada, debe llamar a un procedimiento de VBA llamado FiltrarPorPoblacion, que está guardado en un módulo llamado ModuloEmpleados. Ya está, no hay nada más que hacer en el código XML, todo el trabajo que nos queda es de programación con VBA. Por lo tanto cerramos el Custom UI Editor guardando los cambios y a continuación lo abrimos en Excel.

Cuando abráis el documento no notaréis nada diferente, pero si seleccionáis una de las opciones del cuadro combinado, sí que pasará algo.

Al seleccionar una opción se produce un error, todavía no hemos creado la macro que se llama.
Error por no encontrar la macro de onChange.

Se produce un error porque no encuentra la macro que hemos indicado en onChange, evidentemente porque todavía no la hemos creado. De todas las maneras, el error nos permite hacernos una idea de cómo funciona lo que hemos hecho en el código XML. En cuanto hemos cambiado la opción seleccionada ha llamado a la macro que le hemos indicado en onChange. Ahora enseguida vamos a crearla, pero antes vamos hacer algo que nos facilitará posteriormente aplicar los filtros desde VBA.

Datos que vamos a convertir en una Tabla.
Datos que vamos a convertir en una Tabla.

Los datos que tenemos en la primera hoja del documento, los datos de los empleados, los vamos a convertir en una Tabla a la que llamaremos Trabajadores. No es necesario hacer esto, pero si les damos un nombre a los datos, luego será más fácil acceder a ellos desde código. Para crear una Tabla, el primer paso es seleccionar una celda cualquiera de los datos que queremos convertir en Tabla... Y a continuación en la ficha Insertar, pulsaremos el botón Tabla.

Botón para crear Tablas en Excel.
Botón para crear Tablas en Excel.

Si alguno no tiene activado el botón Tabla, si no lo puede pulsar y ha hecho bien la selección de una celda de los datos, es porque para el artículo anterior, sin darme cuenta, subí un documento en el que ya estaba creada la Tabla y por lo tanto no os la deja crear de nuevo. Ya he actualizado ese documento para que no la tenga, pero seguramente más de uno tendréis la versión antigua y tendréis creada la Tabla. Para comprobarlo, no tenéis más que seleccionar una celda de los datos y fijaros si en la Cinta de Opciones os aparece una ficha llama Diseño. Si es así, significa que está creada y lo primero que os aparecerá dentro de esa ficha es el nombre de la Tabla.

Podemos ver el nombre de la Tabla en la ficha Inicio.
Podemos ver el nombre de la Tabla en la ficha Inicio.

Para los que no la tenemos creada, pulsamos en el botón y aparecerá la ventana para crear una Tabla, en la que debemos indicar dos cosas.

Ventana para crear Tablas en Excel.
Ventana para crear Tablas en Excel.

Lo primero que debemos indicar son las celdas que formará la tabla. Si habéis seleccionado previamente una celda de los datos que deben formar la tabla, Excel ya habrá seleccionado todas las celdas por nosotros. En este caso indica que usará las celdas que van de la A1 a la G13, que es correcto. Si no lo fuera deberíais indicar vosotros cuales son las celdas qué queréis usar. Lo siguiente que debemos indicar es si la tabla tiene encabezados. Con esto se refiere a si los datos que estamos indicando para crear la tabla, tienen una primera fila, que sirva de rótulos de columnas, de títulos. Como en este caso, sí que es así, dejamos marcada la opción. Si no los tendría habría que desmarcar la opción y Excel crearía los títulos de las columnas. Por lo tanto, tal y como está la ventana, todo es correcto, luego pulsamos en Aceptar.

Datos convertidos en Tabla.
Datos convertidos en Tabla.

Al hacerlo la tabla cogerá un formato diferente y aparecerá la ficha que os he comentado antes, la ficha Diseño. En ella le vamos a cambiar el nombre a la tabla, ahora mismo tienen un nombre genérico que no queda muy bien, le llamamos Trabajadores.

La tabla se crea con el nombre de Tabla1.

Cambiamos el nombre de la Tabla.

La tabla se crea con el nombre de Tabla1 hay que cambiarlo a Trabajadores.

En esa ficha también podéis cambiar el formato que tiene la tabla, por si no os gusta el que ha cogido. En estilos de tabla podéis seleccionar el primer estilo, el estilo ninguno... Y así se quitará.

Podemos quitar el estilo aplicado a la Tabla.
Podemos quitar el estilo aplicado a la Tabla.


miércoles, 19 de noviembre de 2014

Crear un ComboBox en la Ribbon de Excel con XML y el Custom UI Editor.

Curso:
Formato:
Artículo/Tutorial.
Archivos necesarios:Personal v0.01.xlsm.
ImagenesCombo.rar.
Anterior Artículo/Tutorial:Act. y Des. Botones...
Siguiente Artículo/Tutorial:Próximamente.
Versión Vídeo/Tutorial:Próximamente.

Vamos a crear un comboBox con imágenes en la Ribbon.
ComboBox con imágenes en la Ribbon.

Seguimos con los artículos dedicados a la personalización de la Interface de Excel usando XML y VBA. Aparcamos de momento el tema de los botones y empezamos con otro control de los que podemos usar en nuestras fichas personalizadas, el comboBox o Cuadro Combinado. ¿Qué es un comboBox? Bueno pues se trata de uno de los controles más usados en todos los programas, son controles que muestran listas, en las que podemos seleccionar alguno de sus elementos. En realidad podemos seleccionar y escribir, por eso se llaman cuadros combinados. Son una combinación de un cuadro de texto en el que podemos escribir y una lista en la que podemos seleccionar. Por ejemplo, en la siguiente imagen podemos ver el cuadro combinado que permite aplicar formatos numéricos a las celdas de Excel.

ComboBox para seleccionar el formato numérico en Excel.
ComboBox para seleccionar el formato numérico en Excel.

En este artículo nos vamos a centrar en como crearlo, en las opciones que tenemos para variar su aspecto físico, su apariencia. En el siguiente artículo conseguiremos que funcione, como ejemplo haremos lo necesario para que al seleccionar una de las opciones que aparecen en un cuadro combinado, se aplique un filtro. Para realizar los mismos pasos que yo, os he dejado para descargar el documento y las imágenes que uso en el artículo, podéis realizar la descarga a continuación o al inicio del artículo en su ficha descriptiva.


Antes de empezar a crear nuestro primer comboBox os voy a contar un detalle. En la Ribbon podemos crear otro control muy parecido a un comboBox, llamado dropDown. Un dropDown es como un cuadro combinado, pero sin la posibilidad de escribir en el. Es decir, si sólo quiero permitir seleccionar un elemento  y no quiero permitir escribir, esa debería ser mi opción. A mi particularmente siempre me gusta más la opción de los comboBox, pero que sepáis que también tenéis esa otra opción de la que ya hablaremos. De todas las maneras para lo que queremos hacer en este caso, la mejor opción es el comboBox. La idea es que con lo que se seleccione en el comboBox se aplicarán filtros, es decir el texto que se quedará seleccionado en el comboBox será parte del criterio de un filtro. Bueno pues para eso es mejor el comboBox porque es muy fácil acceder al texto que se ha quedado seleccionado. Por el contrario, en un DropDown, no se puede acceder fácilmente al texto que se queda seleccionado. Cuando veamos los dropDown ya veremos que se puede hacer y que no. De momento quedaros con que un comboBox, es la mejor opción si queremos acceder al texto que se queda seleccionado. En la siguiente imagen podéis ver los dos controles, la única diferencia visual que podemos ver a primera vista es que en el de la izquierda se puede escribir, es el comboBox.

comboBox y dropDown. En el primer se puede escribir, en el segundo no.
comboBox y dropDown. En el primer se puede escribir, en el segundo no.

Todo el trabajo que hay que realizar en este artículo lo vamos a realizar en el Custom UI Editor, por lo tanto accedemos a él y abrimos el documento descargado. A Excel solo vamos a ir para ver como queda el código XML que iremos escribiendo, para ver como va quedando el comboBox. Para empezar vamos a crear un customUI para la versión 2010 de Excel. Como ya hemos visto el proceso en artículos anteriores, no entro en detalles. En la siguiente imagen podéis ver como se hace desde el menú Insert.

Insertamos un customUI para Excel 2010.
Insertamos un customUI para Excel 2010.

A continuación debemos añadir algunas líneas de código XML para definir la personalización que vamos a crear y los elementos contenedores en los que vamos a crear el comboBox. El código debe quedar como veis a continuación.

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
  <ribbon>
    <tabs>
      <tab id="fichaRecursosHumanos" label="Recursos Humanos" insertBeforeMso="TabHome">
        <group id="grupoEmpleados" label="Empleados">
          
        </group>
      </tab>
    </tabs>
  </ribbon>
</customUI>

Estas líneas ya las hemos comentado en los artículos anteriores, básicamente creamos una ficha personalizada que aparece justo antes de la ficha Inicio y en su interior tiene un grupo de controles. En la siguiente imagen podéis ver el resultado de esas líneas de código.

Creamos una ficha personalizada con un grupo de controles.
Creamos una ficha personalizada con un grupo de controles.

Dentro del grupo que hemos creado, es donde irá el comboBox. Para hacerlo debemos escribir dentro de las etiquetas group las siguientes líneas de código, debe quedar como vemos a continuación:

<group id="grupoEmpleados" label="Empleados">
  <comboBox id="comboPoblacion" label="Selecciona una población: ">
    
  </comboBox>
</group>
  

Con la etiqueta comboBox definimos cuadros combinados, en concreto aquí hemos creado un comboBox identificado como comboPoblacion y que muestra un texto al lado, en el que se puede leer que debemos seleccionar una población. Como ya sabéis el atributo id identifica al control y en este caso la etiqueta label controla el texto que aparece justo al lado del cuadro combinado, es el texto que ayuda a saber que es lo que debemos seleccionar. En la siguiente imagen podéis ver como ha quedado el comboBox.

ComoBox vacío creado en la ficha personalizada.
ComoBox vacío creado en la ficha personalizada.

En el siguiente paso vamos a dar contenido al cuadro combinado. En este caso se trata de un cuadro combinado con opciones fijas. Es decir, tiene las mismas opciones todo el rato por lo que las opciones las podemos definir en el código XML. Si por ejemplo se tratará de un comboBox que debe cargar las opciones de una hoja de Excel, el proceso para darle contenido sería diferente a lo que vamos hacer ahora. En este caso para darle contenido debemos usar elementos item, escribimos lo siguiente y os comento que hemos hecho.

<comboBox id="comboPoblacion" label="Selecciona una población: ">
  <item id="itemTodas" label="*--Todas las Poblaciones--*"/>
  <item id="itemBarcelona" label="Barcelona"/>
  <item id="itemMadrid" label="Madrid"/>
  <item id="itemPamplona" label="Pamplona"/>
</comboBox>

Por cada opción que aparece en el cuadro combinado debemos utilizar una etiqueta item, debemos definir un item para cada opción, en este caso cuatro. El filtro que aplicaremos en el próximo artículo, utilizará las poblaciones a las que pertenecen unos trabajadores, para mostrar sólo los que trabajan en esa población. He creado cuatro opciones, una para mostrar los datos de todas las poblaciones, otra para mostrar los datos de los trabajadores de Barcelona, otra para los de Madrid y otra para los de Pamplona. Si abrís el documento en Excel esto es lo que tendremos.

Con item creamos cada una de las opciones que se muestran en el comboBox.
Con item creamos cada una de las opciones que se muestran en el comboBox.

En cada item he usado dos atributos, el id y label. Como siempre el id es para identificar, en este caso cada opción que aparece, pero a nosotros nos da igual no lo usamos. Label en este caso se corresponde con el texto que mostrará cada opción. Así ya tendríamos creado el comboBox, pero evidentemente no pasa nada si selecciono una de las opciones, eso lo dejamos para el siguiente artículo. Ahora vamos a conocer algunos atributos más que tiene comboBox e item para ajustar más su apariencia.

martes, 18 de noviembre de 2014

Curso Excel 2013: Copiar Fórmulas con Referencias Relativas.

Curso:
Formato:
Vídeo/Tutorial.
Archivo de Excel:CopiarForm....xlsx.
Anterior Vídeo/Tutorial:Constantes y P...
Versión Artículo/Tutorial:Próximamente.
Acceso al vídeo 
en Youtube:
Seguimos con el Curso de Excel 2013 y con sus Fórmulas. Dentro de las sesiones dedicadas a las fórmulas, en mi opinión las más importantes son las que voy a dedicar a los Tipos de Referencias, hoy empezamos con las Referencias Relativas. En Excel tenemos tres tipos de Referencias: Relativas, Mixtas y Absolutas. Seguro que muchos os estaréis preguntando... ¿Por qué necesitamos tres tipos de referencias? Bueno pues la respuesta es muy fácil, porque en Excel se van a copiar fórmulas a otras celdas y dependiendo de cada caso, tendremos que elegir cual de estos tres tipos de referencias debemos usar, para que las fórmulas copiadas sigan funcionando bien en sus nuevas celdas.

En cuanto empecéis a usar mucho Excel y a crear muchas fórmulas, os daréis cuenta que muchas de ellas son iguales en planteamiento. Por ejemplo, si tengo que calcular totales en varias columnas, todas las fórmulas van a ser igual en cuanto a planteamiento, en todas hay que crear una fórmula que sume. Lo único que cambiará serán las celdas que intervienen, pero en planteamiento la fórmula será la misma.

Bueno pues en estos casos no hay que crear una fórmula para cada celda, lo que hay que hacer es crear una sola fórmula y esa copiarla para el resto de casos. Es ahí, cuando copiemos las fórmulas, cuando surgirá la necesidad de utilizar un tipo de referencia u otro. Si yo me dedico a crear de forma manual, una fórmula para cada caso que se me plantea, da igual que tengamos tres tipos de referencias... Si no copio fórmulas no las necesito. Pero hacer esto significa perder parte de la potencia que tiene Excel y también perder mucho tiempo haciendo fórmulas que en unos segundos estarían acabadas, si se copian. De todas las maneras aunque fuera este el caso, os acabaríais encontrando con ellas. Para poder crear algo avanzado con muchas de las herramientas que forman Excel, es absolutamente necesario que entendáis como funcionan los tres tipos de referencias.

En el vídeo os voy a explicar el primer tipo de referencia, las Referencias Relativas. Son las "normales", las típicas que la mayoría de la gente usa sin saber que son Relativas. Os voy a explicar el comportamiento que tienen este tipo de referencias cuando se copia una fórmula en la que intervienen y para ello os voy a poner varios ejemplos muy fáciles de entender. Es muy importante, durante el vídeo os lo recuerdo muchas veces... Que os quedéis con que pasa cuando copio una fórmula con Referencias Relativas, que comportamiento tienen este tipo de referencias, que cambia en una fórmula que contiene este tipo de referencias cuando es copiada a otra celda, que no cambia... Esta sesión y en las que os hable de las Referencias Mixtas y Absolutas, son el ABC de las Fórmulas de Excel. Cuando dominéis este tema, Excel ya no será un problema para vosotros.

Para poder realizar los pasos del vídeo con los mismos datos que yo, os podéis descargar el siguiente archivo. Es el mismo que está disponible para descargar al inicio de este texto:

Para finalizar ya, como siempre, aquí tenéis el enlace para ver el vídeo desde el Blog, espero que os guste:

  • Nombre: Curso Excel 2013: Copiar Fórmulas con Referencias Relativas.
  • Versión de Excel: ES/Español.
  • Audio: Español.
  • Subtítulos: Español.
  • Duración Vídeo: 20m 41s.


Nada más por hoy. En cuanto a vídeos no creo que publique nada más esta semana, pero artículos si que tengo dos o tres en preparación... Habrá otro poquito de XML para personalizar Excel ;)