Cómo grabar una macro en Excel: una guía paso a paso

Incluso si es un novato en el mundo de Excel VBA, puede grabar fácilmente una macro y automatizar parte de su trabajo.

En esta guía detallada, cubriré todo lo que necesita saber para comenzar a grabar y usar macros en Excel.

Si está interesado en aprender VBA de forma sencilla, consulte mi Capacitación en línea de Excel VBA.

¿Qué es una macro?

Si es un novato en VBA, primero permítame decirle qué es una macro; después de todo, seguiré usando este término en todo el tutorial.

Una macro es un código escrito en VBA (Visual Basic para Aplicaciones) que le permite ejecutar un fragmento de código cada vez que se ejecuta.

A menudo, encontrará que las personas (incluido yo mismo) se refieren a un código VBA como una macro, ya sea que se genere mediante una grabadora de macros o se haya escrito manualmente.

Cuando graba una macro, Excel observa de cerca los pasos que está tomando y los anota en un idioma que entiende, que es VBA.

Y como Excel es un buen tomador de notas, crea un código muy detallado (como veremos más adelante en este tutorial).

Ahora, cuando detiene la grabación, guarda la macro y la ejecuta, Excel simplemente vuelve al código VBA que generó y sigue exactamente los mismos pasos.

Esto significa que incluso si no sabe nada sobre VBA, puede automatizar algunas tareas simplemente dejando que Excel registre sus pasos una vez y luego los reutilice más tarde.

Ahora, profundicemos y veamos cómo grabar una macro en Excel.

Obtener la pestaña Desarrollador en la cinta

El primer paso para grabar una macro es obtener la pestaña Desarrollador en la cinta.

Si ya puede ver la pestaña de desarrollador en la cinta, vaya a la siguiente sección; de lo contrario, siga los pasos a continuación:

  • Haga clic con el botón derecho en cualquiera de las pestañas existentes en la cinta y haga clic en la opción "Personalizar la cinta". Se abrirá el cuadro de diálogo Opciones de Excel.
  • En el cuadro de diálogo Opciones de Excel, tendrá las opciones Personalizar la cinta. A la derecha, dentro del panel de pestañas principales, marque la opción Desarrollador.
  • Haga clic en Aceptar.

Los pasos anteriores harían que la pestaña Desarrollador esté disponible en el área de la cinta.

Grabar una macro en Excel

Ahora que tenemos todo en su lugar, aprendamos a grabar una macro en Excel.

Grabemos una macro muy simple, una que selecciona una celda e ingresa el texto "Excel" en ella. Estoy usando el texto "Excel" mientras grabo esta macro, pero siéntase libre de ingresar su nombre o cualquier otro texto que desee.

Estos son los pasos para grabar esta macro:

  1. Haga clic en la pestaña Desarrollador.
  2. En el grupo Código, haga clic en el botón Macro. Esto abrirá el cuadro de diálogo "Grabar macro".
  3. En el cuadro de diálogo Grabar macro, ingrese un nombre para su macro. Estoy usando el nombre Ingrese texto. Hay algunas condiciones de nomenclatura que debe seguir al nombrar una macro. Por ejemplo, no puede utilizar espacios intermedios. Por lo general, prefiero mantener mis nombres macro como una sola palabra, con diferentes partes con un primer alfabeto en mayúscula. También puede utilizar un guión bajo para separar dos palabras, como Enter_Text.
  4. (Paso opcional) Puede asignar un atajo de teclado si lo desea. En este caso, usaremos el atajo Control + Shift + N. Recuerde que el atajo que asigne aquí anulará cualquier atajo existente en su libro de trabajo. Por ejemplo, si asigna el atajo Control + S, no podrá usarlo para guardar el libro de trabajo (en cambio, cada vez que lo use, ejecutará la macro).
  5. En la opción "Almacenar macro en", asegúrese de que "Este libro de trabajo" esté seleccionado. Este paso asegura que la macro sea parte del libro de trabajo. Estará allí cuando lo guarde y lo vuelva a abrir, o incluso si lo comparte con alguien.
  6. (Paso opcional) Ingrese una descripción. Por lo general, no hago esto, pero si es extremadamente organizado, es posible que desee agregar de qué se trata la macro.
  7. Haga clic en Aceptar. Tan pronto como haga clic en Aceptar, comenzará a registrar sus acciones en Excel. Puede ver el botón "Detener grabación" en la pestaña Desarrollador, que indica que la grabación de macros está en curso.
  8. Seleccione la celda A2.
  9. Ingrese el texto Sobresalir (o puede usar su nombre).
  10. Presiona la tecla Enter. Esto seleccionará la celda A3.
  11. Haga clic en el botón Detener grabación en la pestaña Desarrollador.

¡Felicidades!

Acaba de grabar su primera macro en Excel. Ya no eres una virgen macro.

Si bien la macro no hace nada útil, cumplirá su propósito al explicar cómo funciona una grabadora de macros en Excel.

Ahora, probemos esta macro.

Siga los pasos a continuación para probar la macro:

  1. Elimina el texto de la celda A2. Esto es para probar si la macro inserta el texto en la celda A2 o no.
  2. Seleccione cualquier celda, que no sea A2. Esto es para probar si la macro selecciona la celda A2 o no.
  3. Haga clic en la pestaña Desarrollador.
  4. En el grupo Código, haga clic en el botón Macros.
  5. En el cuadro de diálogo Macro, haga clic en el nombre de la macro - EnterText.
  6. Haga clic en el botón Ejecutar.

Notará que tan pronto como haga clic en el botón Ejecutar, el texto "Excel" se inserta en la celda A2 y se selecciona la celda A3.

Ahora, todo esto puede suceder en una fracción de segundo, pero en realidad, la macro, al igual que un elfo obediente, siguió los pasos exactos que le mostró mientras grababa la macro.

Entonces, la macro primero selecciona la celda A2, luego ingresa el texto Sobresalir en él, y luego selecciona la celda A3.

Nota: también puede ejecutar la macro con el método abreviado de teclado Control + Mayús + N (mantenga presionadas las teclas Control y Shift y luego presione la tecla N). Este es el mismo atajo de teclado que le asignamos a la macro al grabarla.

Qué hace la grabación de una macro en el backend

Ahora vayamos al backend de Excel, el VB Editor, y veamos lo que realmente hace la grabación de una macro.

Estos son los pasos para abrir VB Editor en Excel:

  1. Haga clic en la pestaña Desarrollador.
  2. En el grupo Código, haga clic en el botón Visual Basic.

O puede usar el atajo de teclado - ALT + F11 (mantenga presionada la tecla ALT y presione F11), en lugar de los dos pasos anteriores. Este atajo también abre el mismo VB Editor.

Ahora, si está viendo VB Editor por primera vez, no se sienta abrumado.

Permítame que se familiarice rápidamente con la anatomía del VB Editor.

  • Barra de menús: Aquí es donde tienes todas las opciones de VB Editor. Considere esto como la cinta de VBA. Contiene comandos que puede usar mientras trabaja con VB Editor.
  • Barra de herramientas - Esto es como la barra de herramientas de acceso rápido del editor de VB. Viene con algunas opciones útiles y puedes agregarle más opciones. Su beneficio es que una opción en la barra de herramientas está a solo un clic de distancia.
  • Ventana del explorador de proyectos - Aquí es donde Excel enumera todos los libros y todos los objetos de cada libro. Por ejemplo, si tenemos un libro de trabajo con 3 hojas de trabajo, aparecerá en el Explorador de proyectos. Aquí hay algunos objetos adicionales, como módulos, formularios de usuario y módulos de clase.
  • Ventana de código - Aquí es donde se graba o escribe el código VBA. Hay una ventana de código para cada objeto listado en el Explorador de proyectos, como hojas de trabajo, libros de trabajo, módulos, etc. Veremos más adelante en este tutorial que la macro grabada entra en la ventana de código de un módulo.
  • Ventana Propiedades - Puede ver las propiedades de cada objeto en esta ventana. A menudo uso esta ventana para nombrar objetos o cambiar las propiedades ocultas. Es posible que no vea esta ventana cuando abra el editor de VB. Para mostrar esto, haga clic en la pestaña Ver y seleccione Ventana Propiedades.
  • Ventana inmediata - A menudo uso la ventana inmediata mientras escribo código. Es útil cuando desea probar algunas declaraciones o durante la depuración. Es posible que no sea visible de forma predeterminada y puede hacer que aparezca haciendo clic en la pestaña Ver y seleccionando la opción Ventana Inmediato.

Cuando grabamos la macro … Ingrese texto, sucedieron las siguientes cosas en VB Editor:

  • Se insertó un nuevo módulo.
  • Se grabó una macro con el nombre que especificamos: Ingrese texto
  • El código se escribió en la ventana de código del módulo.

Entonces, si hace doble clic en el módulo (Módulo 1 en este caso), aparecerá una ventana de código como se muestra a continuación.

Aquí está el código que la grabadora de macros y nos dio:

Sub EnterText () '' EnterText Macro '' Atajo de teclado: Ctrl + Shift + N 'Range ("A2"). Seleccione ActiveCell.FormulaR1C1 = "Excel" Range ("A3"). Seleccione End Sub

En VBA, cualquier línea que siga el (signo de apóstrofo) no se ejecuta. Es un comentario que se coloca solo con fines informativos. Si quita las primeras cinco líneas de este código, la macro seguirá funcionando como se esperaba.

Ahora permítanme cubrir rápidamente lo que hace cada línea de código:

El código comienza con Sub seguido del nombre de la macro y paréntesis vacíos. Sub es la abreviatura de Subroutine. Cada subrutina (también llamada Procedimiento) en VBA comienza con Sub y termina con End Sub.

  • Rango ("A2"). Seleccione - Esta línea selecciona la celda A2.
  • ActiveCell.FormulaR1C1 = "Excel" - esta línea ingresa el texto Excel en la celda activa. Como seleccionamos A2 como primer paso, se convierte en nuestra celda activa.
  • Rango ("A3"). Seleccione - Esto selecciona la celda A3. Esto sucede cuando presionamos la tecla Enter después de ingresar el texto, resultado de lo cual seleccionamos la celda A3.

Espero que ya tenga un conocimiento básico de cómo grabar una macro en Excel.

Tenga en cuenta que el código escrito por una grabadora de macros no es de ninguna manera un código eficiente.

La grabadora de macros a veces agrega mucha pelusa al código que a veces no es necesaria. Pero esto no significa que no sea útil. Para alguien que está aprendiendo VBA, una grabadora de macros puede ser una excelente manera de analizar cómo funcionan las cosas en VBA.

Grabación de macros absoluta versus relativa

Ya conoces las referencias absolutas y relativas en Excel… ¿verdad?

Si no es así, primero lea este tutorial sobre referencias.

¿Leerlo? Vamonos.

Veremos más adelante en esta sección sobre cómo grabar macros en referencias absolutas y relativas. Pero antes de eso, permítanme resumir rápidamente la diferencia entre la referencia absoluta y relativa en VBA (en caso de que se volviera perezoso y no leyera el enlace que di hace unas líneas):

Si usa una opción de referencia absoluta para grabar una macro, el código VBA siempre se referirá a las mismas celdas que usó. Por ejemplo, si selecciona la celda A2, ingrese el texto Excel y presione Entrar, cada vez; sin importar dónde se encuentre en la hoja de trabajo y sin importar qué celda esté seleccionada, su código primero seleccionará la celda A2, ingresará el texto Excel y luego muévase a la celda A3.

Si usa una opción de referencia relativa para grabar una macro, VBA no codificaría las referencias de celda. Más bien, se centraría en el movimiento en comparación con la celda activa. Por ejemplo, suponga que ya tiene la celda A1 seleccionada y comienza a grabar la macro en el modo de referencia relativa.

Ahora selecciona la celda A2, ingresa el texto Excel y presiona la tecla Intro. Ahora, cuando ejecute esta macro, no volverá a la celda A2, sino que se moverá en relación con la celda activa. Por ejemplo, si se selecciona la celda K3, se moverá a K4, ingresará el texto Excel y finalmente seleccionará la celda K5.

Ahora déjame decirte cómo grabar una macro en modo de referencias relativas:

  1. Seleccione la celda A1.
  2. Haga clic en la pestaña Desarrollador.
  3. En el grupo Código, haga clic en el botón "Usar referencias relativas". Se volverá verde, lo que indica que está encendido.
  4. Haga clic en el botón Grabar macro.
  5. En el cuadro de diálogo Grabar macro, ingrese un nombre para su macro. Estoy usando el nombre EnterTextRelRef.
  6. En la opción Almacenar macro en, asegúrese de que "Este libro de trabajo" esté seleccionado.
  7. Haga clic en Aceptar.
  8. Seleccione la celda A2.
  9. Ingrese el texto Sobresalir (o puede ingresar su nombre).
  10. Presiona la tecla Enter. Esto llevará el cursor a la celda A3.
  11. Haga clic en el botón Detener grabación en la pestaña Desarrollador.

Esto grabaría la macro en el modo de referencia relativa.

Ahora hacer esto.

  1. Seleccione cualquier celda (que no sea A1).
  2. Haga clic en la pestaña Desarrollador.
  3. En el grupo Código, haga clic en el botón Macros.
  4. En el cuadro de diálogo Macro, haga clic en el nombre de la macro - EnterTextRelRef.
  5. Haga clic en el botón Ejecutar.

¿Lo que pasa? ¿El cursor volvió a la celda A3?

No lo haría - porque ha grabado la macro en el modo de referencia relativa. Entonces, el cursor se movería en relación con la celda activa. Por ejemplo, si hace esto cuando se selecciona la celda K3, ingresará el texto Excel es la celda K4 y terminará seleccionando la celda K5.

Aquí está el código que se registra en el backend (ventana de código del módulo VB Editor):

Sub EnterTextRelRef () '' EnterTextRelRef Macro '' ActiveCell.Offset (1, 0) .Range ("A1"). Seleccione ActiveCell.FormulaR1C1 = "Excel" ActiveCell.Offset (1, 0) .Range ("A1"). Seleccione End Sub

Tenga en cuenta que este código completo no se refiere a las celdas K3 o K4 en ninguna parte. En su lugar, utiliza Activecell para referirse a la celda seleccionada y Offset para moverse en relación con la celda activa.

No se preocupe por la parte Range ("A1") que tiene el código. Es uno de esos códigos innecesarios que agrega la grabadora de macros que no sirve para nada y puede eliminarse. El código funcionaría bien sin él.

El botón "Usar referencia relativa" en la pestaña Desarrollador es un botón de alternancia. Puede apagarlo (y volver a la referencia absoluta) haciendo clic en él.

Lo que no puede hacer una grabadora de macros

La grabadora de macros es excelente para seguirlo en Excel y registrar sus pasos exactos, pero puede fallar cuando lo necesite para hacer más.

  • No puede ejecutar un código sin seleccionar el objeto. Si desea que el registrador de macros vaya a la siguiente hoja de trabajo y resalte todas las celdas llenas en la columna A, sin dejar la hoja de trabajo actual, entonces no podrá hacer esto. Es porque si le pido que haga esto, ni siquiera usted podrá hacerlo (sin dejar la hoja actual). Y si no puede hacerlo usted mismo, ¿cómo capturará la grabadora de macros sus acciones? En tales casos, debe ir manualmente y crear / editar el código.
  • No puede crear una función personalizada con una grabadora de macros. Con VBA, puede crear funciones personalizadas que puede usar en la hoja de trabajo como funciones regulares. Puede crear esto escribiendo el código manualmente.
  • No puede ejecutar códigos basados ​​en eventos: En VBA puede usar muchos eventos, como abrir un libro de trabajo, agregar una hoja de trabajo, hacer doble clic en una celda, etc., para ejecutar un código asociado con ese evento. Puede utilizar una grabadora de macros para hacer esto.
  • No puede crear bucles con una grabadora de macros. Cuando ingresa manualmente el código, puede aprovechar el poder de los bucles en VBA (como Para el siguiente, Para cada siguiente, Hacer mientras, Hacer hasta). Pero no puede hacer esto cuando graba una macro.
  • No puede analizar las condiciones: Puede verificar las condiciones dentro del código usando la grabadora de macros. Si escribe un código VBA manualmente, puede usar las declaraciones IF Then Else para analizar una condición y ejecutar un código si es verdadero (u otro código si es falso).
  • No puede pasar argumentos en un procedimiento de macro: Cuando graba una macro, nunca tendrá argumentos. Una subrutina puede tomar argumentos de entrada que se pueden usar dentro de la macro para realizar una tarea. Al grabar una macro, esto no se puede hacer ya que las macros grabadas son independientes y no están conectadas a ninguna otra macros existente.

Extensiones de archivo habilitadas para macros

Cuando graba una macro o escribe manualmente código VBA en Excel, debe guardar el archivo con una extensión de archivo habilitada para macros (.xlsm).

Antes de Excel 2007, había un solo formato de archivo que solía ser suficiente: .xls.

Pero a partir de 2007, se introdujo .xlsx como la extensión de archivo estándar. Los archivos que se guardan como .xlsx no pueden contener una macro. Entonces, si tiene un archivo con extensión .xlsx y graba / escribe una macro y la guarda, le advertirá que lo guarde en formato habilitado para macros y le mostrará un cuadro de diálogo (como se muestra a continuación):

Si selecciona No, Excel le permite guardarlo en un formato habilitado para macros. Pero si hace clic en Sí, Excel eliminará automáticamente todo el código de su libro de trabajo y lo guardará como un libro de trabajo .xlsx.

Entonces, si tiene una macro en su libro de trabajo, debe guardarla en formato .xlsm para mantener esa macro.

Diferentes formas de ejecutar una macro en Excel

Hasta ahora, solo hemos visto una forma de ejecutar una macro en Excel, que es mediante el cuadro de diálogo Macro.

Pero hay varias formas de ejecutar macros.

  1. Ejecutar una macro desde la cinta (pestaña Desarrollador)
  2. Usando un atajo de teclado (que debe asignar)
  3. Asignar la macro a una forma
  4. Asignar la macro a un botón
  5. Ejecute una macro desde el editor de VB

Conclusión: grabe una macro cuando esté atascada

Ya mencioné que una grabadora de macros es una herramienta útil para cualquiera que trabaje con VBA en Excel.

A medida que utilice la grabadora de macros varias veces, notará que escupe una gran cantidad de código innecesario. Sin embargo, sigue siendo útil y le ofrece algunas ideas sobre por dónde empezar. Por ejemplo, si le pido que filtre una columna de celdas usando VBA, y no tiene idea de cuál es la sintaxis, puede grabar rápidamente una macro y verificar el código.

Una grabadora de macros es una herramienta indispensable e incluso después de años de experiencia en codificación VBA en mi haber, a menudo recurro a la grabadora de macros en busca de ayuda.

Va a ayudar al desarrollo del sitio, compartir la página con sus amigos

wave wave wave wave wave