Aunque seas un completo novato en la programación en VBA Excel estoy seguro de que con este tutorial vas a ser capaz de grabar fácilmente una macro para automatizar parte de tu trabajo. En el tutorial de hoy te enseñaré a utilizar paso a paso la grabadora de macros de Excel.
Antes de nada… ¿qué demonios es una macro?
¿Qué es una macro?
Si estás comenzando a trabajar con Excel quizá hayas oído hablar de este concepto pero no entiendes exactamente de qué se trata.
Una macro es un código escrito en VBA (Visual Basic for Applications) que te permite acelerar cualquier tarea.
Una macro es el código generado por tus acciones en la hoja de cálculo.
Cuando grabas una macro, Excel vigila los pasos que vas dando y los guarda en su "idioma" (VBA), creando un código muy detallado (que te mostraré más adelante).
Una vez que detienes la grabación, ya puedes ejecutarla. Excel volverá a ejecutar los pasos que seguiste durante este proceso, en el mismo orden.
Esto significa que, aunque no sepas nada de macros y VBA, puedes automatizar algunas tareas sencillas dejando que Excel grabe tus acciones una vez para luego volver a usarlos más tarde.
La teoría está bien, pero la mejor forma de saber qué demonios es una macro es grabando una… así que vamos a ello.
Preparar la cinta de opciones
El primer paso para grabar una macro es mostrar la ficha Programador en la cinta de opciones.
Si ya lo hiciste en alguna ocasión anterior, puedes ir al siguiente punto. En caso contrario sigue estos pasos:
- Haz clic con el botón derecho del ratón en cualquier parte de la cinta de opciones y selecciona la opción Personalizar la cinta de opciones.
- Aparecerá el cuadro de diálogo Opciones de Excel mostrando las opciones para personalizar la cinta de opciones. En el panel de la derecha, Activa la ficha Programador (o Desarrollador según la versión de Excel).
- Haz clic en Aceptar para cerrar el cuadro de diálogo.
Los pasos anteriores harán que se muestre la ficha Programador en la cinta de opciones.
Grabar una macro con la grabadora de macros
Una vez preparado el terreno, grabarás tu primera macro. Será una macro simple que seleccione una celda e introduzca el texto “Ayuda Excel” en ella (puedes cambiar “Ayuda Excel” por el texto que desees).
Sigue estos pasos:
- Haz clic en la ficha Programador (Desarrollador).
- En el grupo Código, haz clic en el botón Grabar macro. Esto hará que se muestre el cuadro de diálogo Grabar macro.
- En el cuadro de diálogo Grabar macro, introduce un nombre para la macro. En el ejemplo estoy utilizando “Introducir_AE”.
Existen algunas reglas que debes seguir para dar nombre a una macro. Una de ellas, por ejemplo, es que no puedes usar espacios (pero puedes introducir guiones bajos para simularlos). Yo suelo utilizar dos palabras y una de ellas siempre es un verbo que indica la acción que realizará la macro.
- De forma opcional puedes asignar un atajo de teclado para ejecutar la macro rápidamente. En este caso, utilizaré el atajo Ctrl + Mayús + Q.
Recuerda que el atajo que asignes en este cuadro anulará cualquier atajo que ya exista en el libro. Por ejemplo, si asignas el atajo Ctrl + G, no podrás utilizarlo para guardar el libro (en cambio, cada vez que presiones estas teclas se ejecutará la macro).
- En el desplegable Guardar macro en, asegúrate de que esté seleccionada la opción “Este libro”. Esto asegura que la macro formará parte del libro de Excel en el que se graba. Estará ahí cuando lo guardes y lo vuelvas a abrir, o incluso si lo compartes con alguien.
- De forma opcional puedes introducir una descripción en el cuadro de texto “Descripción”. Normalmente suelo rellenarlo para saber para qué sirve la macro. Si deseo volver a la macro tras algún tiempo, no siempre recuerdo su objetivo y esta descripción me viene bien.
- Haz clic en Aceptar. Desde este momento Excel comenzará a registrar las acciones que vayas realizando. Puedes ver el botón “Detener la grabación” en la ficha Programador, que indica que la grabación de la macro está en curso.
- Selecciona la tecla A2.
- Introduce el texto “Ayuda Excel” (o cualquier otro).
- Presiona la tecla Intro (lo cual seleccionará la celda A3).
- Haz clic en el botón Detener grabación.
¡Enhorabuena!
Acabas de grabar tu primera macro. Has dejado de ser un novato en esto de las macros.
Aunque esta macro es muy sencilla y no hace nada útil, servirá para explicar cómo funciona la grabadora de macros.
Ahora toca probar la macro. Sigue estos pasos:
- Elimina el texto que escribiste en la celda A2. Servirá para comprobado si funciona la macro que acabas de crear.
- Selecciona cualquier otra celda (que no sea A2). Esto probará si la macro selecciona la celda A2 o no.
- Haz clic en la ficha Programador.
- En el grupo Código, haz clic en el botón Macros.
- En el cuadro de diálogo Macro, haz clic en la macro Introducir_AE.
- Haz clic en el botón Ejecutar.
Observa que al hacer clic en Ejecutar, el texto “Ayuda Excel se insertará en la celda A2 y, a continuación, se selecciona A3 (¡todo ocurre a la velocidad de la luz!).
Aunque todo ha sucedido rápidamente, la macro ha seguido los pasos exactos que le mostraste mientras grababas la macro.
La macro primero selecciona la celda A2, luego introduce el texto en ella y, posteriormente, selecciona la celda A3.
Atención: También puedes ejecutar la macro con el atajo de teclado Ctrl + Mayús + Q (presiona Q mientras mantienes presionadas las teclas Ctrl y Mayús). Este es el atajo de teclado que asignaste a la macro cuando la grabaste.
¿Qué hace realmente la grabadora de macros?
Vamos a ir ahora al corazón de la grabadora de macros (el editor de VBA) para ver qué es lo que realmente hace la grabación de una macro.
Para abrir el editor de VBA:
- Haz clic en la ficha Programador.
- En el grupo Código haz clic en el botón Visual Basic.
Para abrir el editor de VBA también puedes presionar el atajo Alt + F11 en lugar de los dos pasos anteriores.
Si estás viendo el editor de VBA no te agobies. Te mostraré algunas partes de esta ventana.
- Barra de menú: Aquí se encuentran todas las opciones del editor de VBA. Es similar a la cinta de opciones de Excel. Contiene comandos que puedes usar cuando trabajes con el editor de VBA.
- Barras de herramientas: Similares a la Barra de herramientas de acceso rápido de Excel. Contiene algunas opciones útiles y también es posible personalizarlas. Es una forma rápida de acceder a muchas de las herramientas más utilizadas con un solo clic de ratón.
- Explorador de proyectos: Aquí se encuentran todos los libros de Excel abiertos y todos los objetos que contiene cada uno. Por ejemplo, si tienes un libro con tres hojas, éstas se mostrarían en el Explorador de proyectos. Existen algunos objetos más como módulos estándar, UserForms y módulos de clase.
- Ventana Código. Aquí es donde se registra o se escribe código VBA. Hay una ventana de código para cada objeto mostrado en el Explorador de proyectos. Más adelante te mostraré que el código que has grabado con la grabadora de macros, se encuentra en la ventana de código de un módulo.
- Ventana Propiedades: Puedes ver las propiedades de cada objeto en esta ventana, además de utilizarla para cambiar el nombre al objeto o modificar sus propiedades. Es posible que esta ventana no se muestre al abrir el editor de VBA. Para mostrarla haz clic en el menú Ver y selecciona Ventana Propiedades.
- Ventana Inmediato: Suelo utilizar muy a menudo esta ventana (por ello la tengo siempre activa). La utilizo para probar algunas instrucciones o mientras estoy depurando la macro. En caso de que no se muestre, haz clic en el menú Ver y, a continuación, en la opción Ventana Inmediato.
- Ventana Locales: Muy útil para hacer el seguimiento de los valores asignados a una o varias variables, cuando se está ejecutando la macro.
¿Qué ocurrió cuando grabaste la macro Introducir_AE?
- Se creó un módulo nuevo.
- Se grabaron las acciones de la macro con el nombre "Introducir_AE".
- El código generado por la grabación se guardó en la Ventana Código del módulo.
Así que si haces doble clic en el módulo (Módulo 1 en este caso), debe aparecer una Ventana código como la que se muestra a continuación:
Este es el código que creó la grabadora de macros:
Sub Introducir_AE() ' ' Introducir_AE Macro ' ' Acceso directo: Ctrl+Mayús+Q ' Range("A2").Select ActiveCell.FormulaR1C1 = "Ayuda Excel" Range("A3").Select End Sub
No te preocupes si no entiendes el código anterior. Te lo explico:
La primera línea contiene el nombre de la macro. Se utiliza la palabra Sub para indicar el comienzo de una macro. Los paréntesis indican que la macro no necesita información adicional para su funcionamiento. Las macros comienzan con Sub y finalizan con End Sub.
En VBA, cualquier texto que siga al carácter ‘ (apóstrofe) no se ejecuta. Es un comentario que se introduce solo con fines informativos. Si eliminas estas cinco líneas del código, la macro seguirá funcionando como se esperaba.
Range("A2").Select
– Selecciona la celda A2.
ActiveCell.FormulaR1C1 = "Ayuda Excel"
– Introduce el texto “Ayuda Excel” en la celda activa. Como en el paso anterior se seleccionó la celda A2, esa es la celda activa.
Range("A3").Select
– Selecciona la celda A3.
Espero que esta sencilla macro te haya servido para entender la grabadora de macros. Debes tener en cuenta que el código generado por la grabadora de macros no es, de ninguna manera, un código eficiente.
La grabadora de macros a veces añade mucho código innecesario. Pero esto no significa que no sea útil. Para alguien que está aprendiendo VBA, la grabadora de macros puede ser una gran forma de analizar cómo funcionan las cosas en VBA.
¿Grabación con referencias absolutas o relativas?
¿Conoces la diferencia entre referencias relativas y absolutas? Si no es así, te recomiendo que eches un vistazo a este tutorial:
Permíteme resumirte la diferencia entre referencias relativas y absolutas en VBA (en caso que no hayas leído el artículo del enlace anterior):
Si usas la opción de referencias absolutas para grabar una macro, el código VBA se referirá siempre a las mismas celdas que utilizaste. Por ejemplo, si seleccionas las celda A2 para introducir el texto “Ayuda Excel”, cada vez que ejecutas la macro (sin importar en qué lugar de la hoja te encuentres y sin importar qué celda esté seleccionada), tu código seleccionará primero la celda A2 para introducir, a continuación, el texto.
Si utilizas referencias relativas para grabar una macro VBA, dicha macro no se refiere a las celdas utilizando su referencia. En su lugar, se utiliza la celda activa como referencia. Lo verás mejor con un ejemplo: Supón que tienes seleccionada la celda A1 y comienzas a grabar la macro en el modo de referencia relativa. A continuación, seleccionas la celda A2, introduces el texto y presionas la tecla Intro.
Ahora, al ejecutar la macro, la celda activa no volverá a la celda A2 sino que se moverá en relación a la celda activa. Por ejemplo, si se selecciona la celda K3, la celda activa se moverá a K4, se introducirá el texto y a continuación se seleccionará K5.
La macro anterior fue grabada con referencias absolutas. Ahora te mostraré cómo grabarla con referencias relativas:
- Selecciona la celda A1.
- Haz clic en la ficha Programador.
- En el grupo Código haz clic en el botón Usar referencias relativas. El botón se activará mostrando un fondo más oscuro.
- Haz clic en Grabar macro.
- Introduce el texto "Introducir_AE_RefRel".
- Asegúrate de que se encuentra seleccionada la opción En este libro.
- Haz clic en Aceptar.
- Selecciona la celda A2.
- Introduce el texto “Ayuda Excel” (o cualquier otro texto).
- Presiona la tecla Intro para que la celda A3 quede seleccionada.
- Haz clic en el botón Detener grabación en la ficha Programador.
Una vez creada la macro, toca ejecutarla para ver si funcionamiento. Sigue estos pasos:
- Selecciona una celda (excepto A1).
- Haz clic en la ficha Programador.
- En el grupo Código haz clic en el botón Macros.
- Cuando se muestre el cuadro de diálogo Macros, selecciona Introducir_AE_RefRel.
- Haz clic en el botón Ejecutar.
En este caso la celda activa no vuelve a A3, pues la macro se grabó con referencias relativas. El cursor se mueve de forma relativa a la celda activa. Por ejemplo, si antes de ejecutar la macro, se encontraba seleccionada la celda K3, el texto Ayuda Excel se introducirá en K4 y la macro finaliza seleccionando K5.
Este es el código que acabas de grabar (se ha guardado en el mismo módulo que el código anterior):
Sub Introducir_AE_RefRel() ' ' Introducir_AE_RefRel Macro ' ' ActiveCell.Offset(1, 0).Range("A1").Select ActiveCell.FormulaR1C1 = "Ayuda Excel" ActiveCell.Offset(1, 0).Range("A1").Select End Sub
Observa que el código anterior no se refiere a celdas concretas (K3 o K4). En su lugar, utiliza ActiveCell
para referirse a la celda seleccionada y la propiedad Offset
para moverse en relación a ella.
También puedes ver una referencia a la celda A1 en Range(“A1”). A esto no le hagas mucho caso. Es uno de esos códigos innecesarios que añade la grabadora de macros y que no sirve para nada. Puedes eliminarlo. El código funcionará bien sin él.
¿Qué no puede hacer la grabadora de macros?
La grabadora de macros es una excelente herramienta para grabar los pasos que vas dando en Excel pero en muchas ocasiones se queda corta cuando necesites hacer algo más avanzado. Por ejemplo:
- No se puede ejecutar un código sin seleccionar el objeto: Si quieres que la grabadora de macros vaya a la siguiente hoja y resalte todas las celdas con datos de la columna A, sin salir de la hoja actual, no podrás hacerlo. Esto es porque nadie es capaz de hacerlo de la forma tradicional (sin abandonar la hoja actual). Y si una persona no lo puede hacer, la grabadora de macros tampoco.
- No se puede crear funciones personalizadas: Con VBA puedes crear funciones personalizadas que podrás usar en tus hojas. Con la grabadora de macros no se pueden crear.
- No se pueden crear macros de eventos: En VBA puedes usar muchos eventos (como abrir un libro, añadir una hoja, hacer doble clic en una celda, etc.) para ejecutar un código asociado a ese evento. Es imposible utilizar la grabadora de macros para asignar las grabaciones a eventos.
- No se pueden crear bucles: Cuando el código es introducido manualmente, puedes aprovechar la potencia de los bucles en VBA (como
For-Next
,For Each-Next
,Do While
oDo Until
). Esto no puedes hacerlo con la grabadora. - No se pueden establecer condiciones: Puedes evaluar condiciones al introducir el código de forma manual, pero no mediante la grabadora de macros.
- No se pueden pasar argumentos: Cuando utilizas la grabadora de macros, nunca podrás crear ningún argumento. Una macro puede tomar argumentos de entrada que se utilizan en el código para realizar una tarea. Cuando se graba una macro, esto no puede hacerse ya que las macros grabadas son independientes y no están conectadas a ninguna otra macro existente.
Resumen
Como he mencionado la grabadora de macros es una herramienta muy útil para todos los que trabajamos con VBA.
Si has utilizado la grabadora de macros durante algún tiempo habrás notado que genera mucho código innecesario. A pesar de esto sigue siendo útil y un buen punto de partida para aprender VBA. Por ejemplo, si alguien te pide que filtres una columna de datos usando VBA y no sabes de programación, puedes grabar rápidamente una macro y modificar el código.
¿Quieres profundizar en el mundo de las macros y crear automatizaciones más avanzadas? Entonces te recomiendo los siguientes artículos y recursos:
- Megaguía: Macros y VBA
- Cómo crear procedimientos en VBA
- Qué puedes modificar en la apariencia del editor de VBA
- La función MsgBox de VBA a fondo
- De 0 a 100 con macros y VBA
Para conocer qué dice Microsoft sobre su grabadora de macros, echa un vistazo a este artículo.
En mi experiencia te puedo decir que la grabadora de macros de Excel es una herramienta indispensable, y la sigo utilizando incluso después de más años de experiencia desarrollando plantillas con VBA. ¿Conocías la grabadora de macros? ¿La habías utilizado ya?
Los comentarios están cerrados.