Excel Tips – Introduccion a las Macros (VBA)
Hoy les voy a presentar una de las herramientas más divertida y poderosa que tiene Excel; las Macros.
Una Macro, es una secuencia de instrucciones que automatiza algunos aspectos de Excel para hacernos la vida más fácil. Vamos a poder utilizar las Macros para, por ejemplo, dar formato a un reporte que procesamos a diario, o agregar alguna funcionalidad que Excel no posee.
Las Macros son construídas en un lenguaje de programacion propio de las herramientas de Microsoft Office que se llama Visual Basic for Applications (VBA). Este lenguaje es muy similar a Visual Basic, pero con el agregado de toda una batería de Objetos y Métodos propios de las herramientas de Office
Para utilizar una Macro no es necesario ser un usuario avanzado, o tener nociones de programación; veremos que cualquiera puede aprender a utilizar la grabadora de Macro que posee Excel, la cual generará el código VBA por nosotros y nos ayudará a construir Macros simples; claro está, que para realizar funciones más avanzadas, como por ejemplo, agregar nuevas funciones o realizar acciones que no se podrían realizar normalmente, va a ser necesario un conocimiento más profundo de Excel y nociones básicas de programación.
Algunas de las cosas que vamos a poder realizar a través de las Macros son:
- Automatizar un proceso que realizamos frecuentemente.
- Automatizar operaciones repetitivas.
- Crear comandos personalizados.
- Desarrallar nuevas formulas/funciones.
- Crear aplicaciones con propositos concretos.
- Crear complementos que agreguen varias funcionalidades a Excel.
- etc.
Para poder comenzar a utilizar las Macros en Excel 2007/2010; va a ser necesario que hagamos visible la ficha de “Programador”, la cual viene oculta por defecto. Para hacer visible la ficha de programador en Excel debemos dirigirnos a :
En Excel 2010
Archivo ==> Opciones ==> Personalizar Cinta de Opciones
y en el cuadro de la derecha tildar la ficha de “Programador”.
En Excel 2007
Boton Office ==> Opciones de Excel ==>Más frecuentes
y tildar en “Mostrar ficha de Programador en la cinta de opciones”
Una vez que tenemos habilitada esta ficha podemos comenzar a incursionar en el mundo de las Macros de Excel. A través de unos breves ejemplos, espero poder introducirlos en el uso de la grabadora, explicarles algunos conceptos básicos y mostrarles que tan poderosa pueda ser esta herramienta, incluso si no entendemos nada de programación.
Ejemplo Simple de Macro.
Comencemos con un ejemplo bien sencillo, vamos a hacer que Excel escriba automáticamente nuestro nombre cada vez que ejecutemos la Macro.
Para esto nos vamos a dirigir a la ficha “Programador” que acabamos de agregar y vamos a presionar el botón “Grabar Macro”.
Nos va a salir un cartel como el siguiente:
En el primer campo vamos a asignarle un nombre a nuestra macro, en este caso yo la voy a llamar “Macro1”.
Luego donde dice método abreviado, podemos asignar una combinación de teclas para ejecutar automáticamente nuestra macro, en este caso yo no le voy a asignar ninguna, lo voy a dejar en blanco; tengan en cuenta que si asignan una combinación de teclas a una macro, y esa combinanción de teclas ya era utilizada por Excel, esta última va a ser pisada por la de la macro; es decir, si por ejemplo le asignaramos la combinación CTL + C, que Excel la utiliza para copiar, a nuestra macro; cuando queramos utilizar esa combinación, en lugar de copiar, Excel ejecutaría nuestra macro.
En el siguiente cuadro, vamos a poder elegir donde queremos guardar nuestra macro, por defecto nos trae la opción en este libro, también podríamos elegir guardarla en un libro nuevo o en el libro personal de macros. Este último merece una mención especial; generalmente las macros que utilicemos van a ser utilizadas dentro del mismo libro que estamos utilizando, por lo que la mayoría de las macros que creamos las vamos a guardar dentro del mismo libro; pero hay veces que necesitarmos utilizar macros generales, que aplicamos indistintamente entre diferentes libros de Excel, para estos casos, podemos guardar esas macros en el libro personal de macros. Éste libro, es un libro especial que esta escondido y que se va a abrir cada vez que abramos Excel, de esta forma, cada vez que abramos cualquier libro, se va a abrir también nuestro libro personal de macros y luego vamos a poder elegir las macros que guardamos en él para ejecutarlas sobre el libro que estemos trabajando. Las macros que guardemos en el libro personal de macros siempre van a estar disponibles para que las podamos ejecutar cuando queramos. Para nuestro ejemplo, yo voy a guardar la macro en el mismo libro, voy a elegir la opción “Este libro”.
En el último campo, podemos agregar una breve descripción de lo que va a hacer la macro. Yo lo voy a dejar en blanco. Una vez que le damos aceptar, se comienza a grabar la macro, todas las acciones que realicemos dentro de Excel, van a ser registradas y se va a ir generando el código VBA que las hace posibles.
Para generar nuestra macro, vamos a realizar los siguientes pasos:
- Vamos a seleccionar la celda “A1”.
- Vamos a escribir nuestro nombre en ella.
- luego vamos a presionar enter, para confirmar la entrada del texto.
- por último, vamos a detener la grabadora de macro.
Felicitaciones!!!, han logrado crear su primera macro!!!
Ahora es tiempo de que probemos ejecutarla, para esto borremos lo que acabamos de escribir, volvamos a dejar la hoja en blanco; y luego presionemos el botón “Macros” que se encuentra en la solapa de “Programador”. (También podriamos utilizar la combinación de teclas ALT + F8). Esto nos va a traer un cuadro como el siguiente:
En este cuadro se van a listar todas nuestras macros, para ejecutarlas, simplemente la seleccionamos y le damos ejecutar. Prueben el funcionamiento de su nueva macro, si realizaron los pasos correctamente, veran que Excel ingresa automáticamente su nombre en la celda “A1” (traten de ejecuarla también en otra hoja).
Bien, hasta aquí nuestra primera macro, ahora es tiempo de conocer el código VBA que generó Excel por nosotros. Para esto debemos abrir el editor de Visual Basic que trae Excel incorporado; esto lo vamos a realizar presionando el boton “Visual Basic” en la solapa de “Programador” (También prodríamos utilizar la combinación de teclas ALT + F11 para abrir el editor). Deberían ver algo como lo siguiente:
Este el editor de Visual Basic, en el vamos a poder escribir o editar nuestras macros utilizando VBA. En el lado izquierdo del editor vamos a ver un cuadro con el título “Proyecto – VBAProject”. Cada libro que tengamos abierto, va a representar un VBAProject para Excel, y las macros que hayamos creado en cada libro se van a incluir en una carpeta que se llama “Módulo” dentro de cada proyecto. Como el libro donde generé la macro se llama “Excel Tips – Macros”, para ver el código VBA que generó, debo dirigirme a la carpeta “Módulo” dentro del proyecto “VBAProject (Excel Tips – Macros)”. El código que generó nuestra macro es el siguiente:
Dos tipos de VBA macros
Viendo el código que generó nuestra macro, vemos que empieza con la palabra “sub” y termina con las palabras “ end sub“; este uno de los dos tipos de macros que soporta VBA en Excel; el otro tipo de macros que soporta es el que comienza con la palabra “function” y termina con las palabras “end function“.
- “sub” es una abreviatura para subprocedure. Estos subprocesos son como nuevos comandos que cualquier usuario u ota macro puede utilizar, contienen una serie de instrucciones que se van ejecutando una a una; estos comandos realizan acciones en contreto que pueden modificar nuestro libro, pero no nos devuelven ningún valor. Este es el único tipo de macro que genera la grabadora de macros.
- “function“, obviamente hace referencia a funciones. Este tipo de macro, a diferencia de la anterior, siempre nos devuelve un único valor. Todas las instrucciones contenidas dentro de las palabras “function” y “end function” son en pos te devolvernos un resultado que podemos utilizar. Este tipo de macro, no puede realizar acciones que modifiquen nuestro libro y no pueden ser generadas por la grabadora; la única forma de crearlas es realizandolo uno mismo a través del editor de VBA.
Creando una funcion
Bien, ahora que ya conocemos los dos tipos de macros que podemos realizar, vamos a intendar crear una funcion utilzando el editor de VBA. En este ejemplo vamos a crear una nueva función, que cuando la utilicemos nos va a devolver la dirección completa en la que se encuetra grabado nuestro Libro. Para esto, vamos a ingresar debajo del código que generó la grabadora para nuestra primera macro, las siguientes instrucciones:
1 2 3 |
Function path() path = ThisWorkbook.FullName End Function |
Ahora, a probarla!!. Para probar nuestra nueva función, simplemente nos paramos en cualquier celda y llamamos a nuestra funcion como si fuera cualquier formula de Excel. Como nuestra función se llama “path” y no posee ningun argumento solo debemos ingresar en cualquier celda los siguiente:
1 |
=path() |
Utilizando referencias relativas con la grabadora de macros
Ahora ya sabemos crear los dos tipos de macros que nos ofrece Excel!!, pero antes de dar por terminada esta introducción, les voy a explicar una última cosa sobre la grabadora de macros.
Si ejecutaron la primer macro que creamos varias veces y en distintas hojas, habran notado que la misma siempre escribe nuestro nombre en la celda “A1” independientemente de la celda donde estemos parados cuando la ejecutemos. Estos es así porque cuando la generamos utilizamos la grabadora con referencias absolutas. Si vemos el código que generó, podremos ver que figura expresamete la celda “A1” en el mismo. Cuando utilizamos la grabadora con referencias absolutas el código VBA que genere Excel siempre va a tener la referencia expresa de la celdas en que nos posicionemos, por ejemplo, si dentro de las acciones que estamos grabando, en algun momento paramos el cursor en la celda “B4”, en el codigo que se genere va a existir la referencia expresa a la celda “B4”.
Si bien que utilice la referencia expresa a la celda en algunos casos puede ser correcto, en otros puede que no sea tan así; es por esto que la grabadora nos ofrece la posibilidad también de utilizar referencias relativas. Cuando utilizamos referencias relativas, a Excel ya no le va a interesar tanto la referencia exacta de las celdas en que nos posicionamos, sino que va a tener en cuenta la posición relativa de las celdas a partir de la celda en la que estamos posicionados en la posición inicial en la que comienza la macro. Por ejemplo, si dentro de las acciones que estamos grabando comenzamos parados en la celda “A1” y luego nos movemos a la celda “B1”; cuando utilizamos referencias relativas, el código que se genere no va a tener en cuenta “A1” y “B1” sino que va a ser referencia a que nos movimos una columna hacia la derecha desde la posición inicial.
Para que quede más claro, veamoslo a traves de un ejemplo; vamos a volver a generar nuestra macro que escribe nuestro nombre, pero ahora utilizando referencias relativas.
Para que la grabadora utilice referencias relativas debemos activar la opcion “Usar referencias relativas” en la solapa de “Programador” (fijense que debe quedar resaltada para que quede activada). Luego presionamos el boton de “Grabar Macro”, repetimos los pasos que utilizamos para generar nuestra primer macro y luego detenemos la grabadora.
El código que generó la grabadora ahora se ve algo distinto…
y si prueban ahora ejecutar esta nueva macro posicionados en cualquier celda, veran que ya no escribe siempre en la celda “A1”, sino que lo hace en la celda en la que estamos parados!.
Hasta aquí esta introducción, ahora les toca a ustedes explorar las posibilidades que les ofrece la grabadora de macros…supongo que ya se les debe haber ocurrido varias casos en los que podrían aplicar el poder de las macros de Excel para simplificar su trabajo!! 🙂
Saludos!!