Excel VBA macro tutorial para principiantes con ejemplos

  • Compartir Este
Michael Brown

Descubrirá cómo grabar una macro e insertar código VBA en Excel, copiar macros de un libro a otro, activarlas y desactivarlas, ver el código, realizar cambios y mucho más.

Para los novatos en Excel, el concepto de macros a menudo parece insuperable. De hecho, puede llevar meses o incluso años de formación dominar VBA. Sin embargo, esto no significa que no pueda aprovechar el poder de automatización de las macros de Excel de inmediato. Incluso si es un completo novato en programación VBA, puede grabar fácilmente una macro para automatizar algunas de sus tareas repetitivas.

Este artículo es tu punto de entrada al fascinante mundo de las macros de Excel. Cubre los aspectos básicos esenciales que necesitas saber para empezar y proporciona enlaces a los tutoriales en profundidad relacionados.

    ¿Qué son las macros en Excel?

    Las macros de Excel son un conjunto de comandos o instrucciones almacenadas en un libro en forma de código VBA. Se puede pensar en ellas como un pequeño programa para realizar una secuencia predefinida de acciones. Una vez creadas, las macros se pueden reutilizar en cualquier momento. Al ejecutar una macro se ejecutan los comandos que contiene.

    Normalmente, las macros se utilizan para automatizar tareas repetitivas y rutinas diarias. Los desarrolladores expertos en VBA pueden escribir macros realmente sofisticadas que van mucho más allá de reducir el número de pulsaciones de teclas.

    A menudo se oye hablar de "macro" como "VBA". Técnicamente, hay una distinción: una macro es un fragmento de código, mientras que Visual Basic para Aplicaciones (VBA) es el lenguaje de programación creado por Microsoft para escribir macros.

    ¿Por qué utilizar macros de Excel?

    El objetivo principal de las macros es realizar más trabajo en menos tiempo. Al igual que utilizas fórmulas para procesar números y manipular cadenas de texto, puedes utilizar macros para realizar tareas frecuentes de forma automática.

    Supongamos que tienes que crear un informe semanal para tu supervisor. Para ello, importas varios datos analíticos de un par o más de recursos externos. El problema es que esos datos están desordenados, son superfluos o no están en el formato que Excel puede entender. Eso significa que tienes que reformatear fechas y números, recortar espacios sobrantes y eliminar espacios en blanco, copiar y pegar información en las columnas adecuadas,crear gráficos para visualizar tendencias y hacer muchas más cosas para que su informe sea claro y fácil de usar. Ahora, imagínese que todas estas operaciones se pueden realizar por usted al instante con un clic del ratón.

    Por supuesto, crear una macro compleja lleva tiempo. A veces, puede llevar incluso más tiempo que realizar las mismas manipulaciones manualmente. Pero crear una macro es algo que se hace una sola vez. Una vez escrito, depurado y probado, el código VBA hará el trabajo rápidamente y sin fallos, minimizando los errores humanos y las costosas equivocaciones.

    Cómo crear una macro en Excel

    Hay dos formas de crear macros en Excel: utilizando el Grabador de macros y el Editor de Visual Basic.

    Consejo: En Excel, la mayoría de las operaciones con macros se realizan mediante la función Desarrollador así que asegúrese de añadir la pestaña Desarrollador a la cinta de opciones de Excel.

    Grabar una macro

    Incluso si no sabes nada de programación en general y de VBA en particular, puedes automatizar fácilmente parte de tu trabajo simplemente dejando que Excel registre tus acciones como una macro. Mientras realizas los pasos, Excel observa atentamente y anota tus clics de ratón y pulsaciones de teclas en el lenguaje VBA.

    La grabadora de macros captura casi todo lo que haces y produce un código muy detallado (a menudo redundante). Después de detener la grabación y guardar la macro, puedes ver su código en el Editor de Visual Basic y hacer pequeños cambios. Cuando ejecutas la macro, Excel vuelve al código VBA grabado y ejecuta exactamente los mismos movimientos.

    Para iniciar la grabación, pulse el botón Grabar macro en el botón Desarrollador o la pestaña Estado bar.

    Para obtener información detallada, consulte Cómo grabar macros en Excel.

    Escribir una macro en el editor de Visual Basic

    El Editor de Visual Basic para Aplicaciones (VBA) es el lugar donde Microsoft Excel guarda el código de todas las macros, tanto las grabadas como las escritas manualmente.

    En el Editor VBA, no sólo puede programar una secuencia de acciones, sino también crear funciones personalizadas, mostrar sus propios cuadros de diálogo, evaluar diversas condiciones y, lo que es más importante, ¡codificar la lógica! Naturalmente, la creación de su propia macro requiere un cierto conocimiento de la estructura y la sintaxis del lenguaje VBA, lo que queda fuera del alcance de este tutorial para principiantes. Pero no hay nada que pudierale impiden reutilizar el código de otra persona (por ejemplo, el que ha encontrado en nuestro blog :) ¡e incluso un completo novato en Excel VBA no debería tener dificultades con ello!

    Primero, pulsa Alt + F11 para abrir el Editor de Visual Basic y, a continuación, inserta el código en estos dos rápidos pasos:

    1. En el Explorador de proyectos de la izquierda, haga clic con el botón derecho en el libro de trabajo de destino y, a continuación, haga clic en Inserte > Módulo .
    2. En la ventana Código de la derecha, pegue el código VBA.

    Cuando haya terminado, pulse F5 para ejecutar la macro.

    Para conocer los pasos detallados, consulte Cómo insertar código VBA en Excel.

    Cómo ejecutar macros en Excel

    Hay varias formas de iniciar una macro en Excel:

    • Para ejecutar una macro desde una hoja de cálculo, haga clic en el botón Macros en el botón Desarrollador o pulse la combinación de teclas Alt + F8.
    • Para ejecutar una macro desde el Editor VBA, pulse:
      • F5 para ejecutar todo el código.
      • F8 para recorrer el código línea por línea, lo que resulta muy útil para realizar pruebas y solucionar problemas.

    Además, puede iniciar una macro haciendo clic en un botón personalizado o pulsando el método abreviado asignado. Para obtener más información, consulte Cómo ejecutar macros en Excel.

    Cómo activar macros en Excel

    Por motivos de seguridad, todas las macros de Excel están desactivadas por defecto. Así que, para utilizar la magia de los códigos VBA en tu beneficio, necesitas saber cómo activarlas.

    La forma más sencilla de activar las macros para un libro de trabajo específico es hacer clic en el botón Habilitar contenido en la barra amarilla de advertencia de seguridad que aparece en la parte superior de la hoja al abrir por primera vez un libro de trabajo con macros.

    Para obtener más información sobre la seguridad de las macros, consulte Cómo activar y desactivar macros en Excel.

    Cómo cambiar la configuración de las macros

    Microsoft Excel determina si permite o no la ejecución de códigos VBA en los libros en función de la configuración de macros seleccionada en la ventana de diálogo Centro de confianza .

    Estos son los pasos para acceder a la configuración de las macros de Excel y cambiarlas si es necesario:

    1. Ir a la Archivo y seleccione Opciones .
    2. En el panel izquierdo, seleccione Centro de confianza y, a continuación, haga clic en Configuración del Centro de Confianza... .
    3. En el Centro de confianza haga clic en Configuración de macros de la izquierda, seleccione la opción deseada y haga clic en OK .

    En la siguiente captura de pantalla, está seleccionada la macro por defecto:

    Para obtener más información, consulte Explicación de la configuración de macros de Excel.

    Cómo ver, editar y depurar códigos VBA en Excel

    Cualquier cambio en el código de una macro, ya sea generado automáticamente por el grabador de macros de Excel o escrito por usted, se realiza en el Editor de Visual Basic.

    Para abrir el Editor VB, pulse Alt + F11 o haga clic en el botón Visual Basic en el botón Desarrollador ficha.

    A ver y editar el código de una macro específica, en el Explorador de proyectos a la izquierda, haga doble clic en el módulo que lo contiene o haga clic con el botón derecho del ratón en el módulo y seleccione Ver Código Se abrirá la ventana Código, donde podrá editar el código.

    A probar y depurar una macro, utilice la tecla F8. Esto le llevará a través del código de la macro línea por línea, permitiéndole ver el efecto que cada línea tiene en su hoja de cálculo. La línea que se está ejecutando actualmente se resalta en amarillo. Para salir del modo de depuración, haga clic en la tecla Restablecer de la barra de herramientas (cuadrado azul).

    Cómo copiar una macro en otro libro

    ¿Has creado una macro en un libro y ahora quieres reutilizarla también en otros archivos? Hay dos formas de copiar una macro en Excel:

    Copiar el módulo que contiene una macro

    En caso de que la macro de destino resida en un módulo independiente o de que todas las macros del módulo le resulten útiles, entonces tiene sentido copiar todo el módulo de un libro de trabajo a otro:

    1. Abra ambos libros: el que contiene la macro y el que desea copiar.
    2. Abra el Editor de Visual Basic.
    3. En el panel Explorador de proyectos, busque el módulo que contiene la macro y arrástrelo al libro de destino.

    En la siguiente captura de pantalla, estamos copiando Módulo 1 de Libro1 a Libro2 :

    Copiar el código fuente de una macro

    Si el módulo contiene muchas macros diferentes mientras que usted sólo necesita una, copie sólo el código de esa macro específica. He aquí cómo:

    1. Abra ambos libros de trabajo.
    2. Abra el editor de Visual Basic.
    3. En el panel Explorador de proyectos, haga doble clic en el módulo que contiene la macro que desea copiar para abrir su ventana Código.
    4. En la ventana Código, busque la macro de destino, seleccione su código (que empieza por Sub y terminando con Fin Sub ) y pulsa Ctrl + C para copiarlo.
    5. En el Explorador de proyectos, busque el libro de trabajo de destino y, a continuación, inserte un nuevo módulo en él (haga clic con el botón derecho en el libro de trabajo y haga clic en Inserte > Módulo ) o haga doble clic en un módulo existente para abrir su ventana Código.
    6. En la ventana Código del módulo de destino, pulse Ctrl + V para pegar el código. Si el módulo ya contiene código, desplácese hasta la última línea de código y, a continuación, pegue la macro copiada.

    Cómo eliminar macros en Excel

    Si ya no necesita un determinado código VBA, puede eliminarlo utilizando la función Macro o el Editor de Visual Basic.

    Eliminar una macro de un libro

    Para eliminar una macro directamente del libro de Excel, siga estos pasos:

    1. En el Desarrollador en la pestaña Código haga clic en el botón Macros o pulse la combinación de teclas Alt + F8.
    2. En el Macro seleccione la macro que desea eliminar y haga clic en Borrar .

    Consejos:

    • Para ver todas las macros de todos los archivos abiertos, seleccione Todos los libros abiertos del Macros en lista desplegable.
    • Para poder eliminar una macro del Libro de trabajo de macros personales, primero debe desocultar Personal.xlsb.

    Eliminación de una macro mediante el Editor de Visual Basic

    Una ventaja de utilizar el Editor VBA es que permite eliminar de una sola vez un módulo completo con todas las macros que contiene. Además, el Editor VBA permite eliminar macros del Libro de trabajo de macros personales sin desocultarlo.

    De forma permanente eliminar un módulo realiza estos pasos:

    1. En el Explorador de proyectos haga clic con el botón derecho del ratón en el módulo y seleccione Eliminar del menú contextual.
    2. Cuando se le pregunte si desea exportar el módulo antes de eliminarlo, haga clic en No .

    A eliminar una macro específica simplemente elimine su código fuente directamente en la ventana Código. O bien, puede eliminar una macro utilizando el botón Herramientas del Editor VBA:

    1. Desde el Herramientas seleccione Macros . Macros aparecerá un cuadro de diálogo.
    2. En el Macros En seleccione el proyecto que contiene la macro no deseada.
    3. En el Macro Nombre seleccione la macro.
    4. Haga clic en el botón Borrar botón.

    Cómo guardar macros en Excel

    Para guardar una macro en Excel, ya sea grabada o escrita manualmente, basta con guardar el libro como macro habilitada (*.xlms). He aquí cómo hacerlo:

    1. En el archivo que contiene la macro, haga clic en el botón Guardar o pulse Ctrl + S .
    2. En Guardar como Seleccione Libro de Excel habilitado para macros (*.xlsm) del Guardar como tipo y haga clic en Guardar :

    Cómo exportar e importar macros en Excel

    Si desea compartir sus códigos VBA con alguien o trasladarlos a otro ordenador, la forma más rápida es exportar todo el módulo como archivo .bas.

    Exportación de macros

    Para exportar sus códigos VBA, esto es lo que tiene que hacer:

    1. Abra el libro que contiene las macros.
    2. Pulse Alt + F11 para abrir el Editor de Visual Basic.
    3. En el Explorador de proyectos, haga clic con el botón derecho en el Módulo que contiene las macros y seleccione Exportar archivo .
    4. Navegue hasta la carpeta en la que desea guardar el archivo exportado, asigne un nombre al archivo y haga clic en Guardar .

    Importar macros

    Para importar un archivo .bas con códigos VBA a su Excel, siga estos pasos:

    1. Abra el libro de trabajo en el que desea importar las macros.
    2. Abra el Editor de Visual Basic.
    3. En el Explorador de proyectos, haga clic con el botón derecho en el nombre del proyecto y seleccione Importar archivo .
    4. Navegue hasta el archivo .bas y haga clic en Abrir .

    Ejemplos de macros Excel

    Una de las mejores formas de aprender VBA de Excel es explorando ejemplos de código. A continuación encontrará ejemplos de códigos VBA muy sencillos que automatizan algunas operaciones básicas. Por supuesto, estos ejemplos no le enseñarán a programar, para eso existen cientos de tutoriales de VBA de nivel profesional. Sólo pretendemos ilustrar algunas características comunes de VBA que, con suerte, harán que su filosofía resulte un poco más familiar paraa ti.

    Desocultar todas las hojas de un libro

    En este ejemplo, utilizamos la función ActiveWorkbook para devolver el libro activo en ese momento y el objeto Para cada uno para recorrer una a una todas las hojas del libro de trabajo. Para cada hoja encontrada, establecemos el parámetro Visible propiedad a xlSheetVisible .

    Sub Unhide_All_Sheets() Dim wks As Worksheet For Each wks In ActiveWorkbook.Worksheets wks.Visible = xlSheetVisible Next wks End Sub

    Ocultar la hoja de cálculo activa o hacer que esté muy oculta

    Para manipular la hoja activa en ese momento, utilice la tecla ActiveSheet Esta macro de ejemplo cambia el objeto Visible de la hoja activa a xlSheetHidden para ocultarla. Para que la hoja esté muy oculta, establezca la opción Visible propiedad a xlSheetVeryHidden .

    Sub Hide_Active_Sheet() ActiveSheet.Visible = xlSheetHidden End Sub

    Desfusionar todas las celdas fusionadas en el rango seleccionado

    Si desea realizar determinadas operaciones en un intervalo en lugar de en toda la hoja de cálculo, utilice la función Selección Por ejemplo, el siguiente código deshará de un plumazo todas las celdas combinadas de un rango seleccionado.

    Sub Unmerge_Cells() Selection.Cells.UnMerge End Sub

    Mostrar un cuadro de mensaje

    Para mostrar algún mensaje a sus usuarios, utilice la función MsgBox He aquí un ejemplo de una macro de este tipo en su forma más simple:

    Sub Show_Message() MsgBox ("¡Hola Mundo!" ) End Sub

    En las macros de la vida real, un cuadro de mensaje se utiliza normalmente con fines informativos o de confirmación. Por ejemplo, antes de realizar una acción (desincrustar celdas en nuestro caso), se muestra un icono Sí/No Si el usuario hace clic en "Sí", las celdas seleccionadas se descomprimen.

    Sub Unmerge_Selected_Cells() Dim Answer As String Answer = MsgBox( "¿Seguro que quiere unir estas celdas?" , vbQuestion + vbYesNo, "Unmerge Cells" ) If Answer = vbYes Then Selection.Cells.UnMerge End If End Sub

    Para probar el código, seleccione uno o más rangos que contengan celdas combinadas y ejecute la macro. Aparecerá el siguiente mensaje:

    A continuación encontrará enlaces a macros más complejas que automatizan tareas complejas y lentas:

    • Macro para copiar hojas de varios libros de trabajo en uno solo
    • Macros para duplicar hojas en Excel
    • Macros para alfabetizar pestañas en Excel
    • Macro para desproteger hoja sin contraseña
    • Macro para contar y sumar celdas coloreadas condicionalmente
    • Macro para convertir números en palabras
    • Macro para ocultar todas las hojas de cálculo excepto la hoja activa
    • Macros para desocultar hojas
    • Macro para desocultar todas las columnas
    • Macros para hacer hojas muy ocultas
    • Macro para eliminar todos los saltos de línea de una hoja activa
    • Macros para eliminar filas en blanco
    • Macro para borrar cada dos filas
    • Macro para eliminar columnas en blanco
    • Macro para insertar cada dos columnas
    • Macros para corregir la ortografía en Excel
    • Macro para transponer columnas a filas
    • Macro para voltear columnas en Excel
    • Macros para fijar el área de impresión
    • Macros para insertar saltos de página

    Cómo proteger las macros de Excel

    Si quieres evitar que tu macro sea vista, modificada o ejecutada por otros, puedes protegerla con contraseña.

    Bloquear macro para ver

    Para proteger sus códigos VBA de la visualización y edición no autorizadas, haga lo siguiente:

    1. Abra el Editor VBA.
    2. En el Explorador de proyectos, haga clic con el botón derecho en el proyecto que desea bloquear y seleccione Propiedades de VBAProject...
    3. En el Propiedades del proyecto en el cuadro de diálogo Protección marque la casilla Bloquear proyecto para verlo introduzca dos veces la contraseña y pulse OK .
    4. Guarde, cierre y vuelva a abrir su archivo Excel.

    Cuando intente ver el código en el editor de Visual Basic, aparecerá el siguiente cuadro de diálogo. Escriba la contraseña y haga clic en Aceptar.

    A desbloquear macros basta con abrir el Propiedades del proyecto y quite la marca de la casilla Bloquear proyecto para verlo caja.

    Nota: este método protege el código de la visualización y la edición, pero no impide que se ejecute.

    Proteger macro con contraseña para que no se ejecute

    Para proteger tu macro para que sólo los usuarios que conozcan la contraseña puedan ejecutarla, añade el siguiente código, sustituyendo la palabra "contraseña" por tu contraseña real:

    Sub Password_Protect() Dim password As Variant password = Application.InputBox( "Please enter Password" , "Password Protected Macro" ) Select Case password Case Is = False 'no hacer nada Case Is = "password" 'su código aquí Case Else MsgBox "Contraseña incorrecta" End Select End Sub

    La macro utiliza la función InputBox para pedir al usuario que introduzca la contraseña:

    Si la entrada del usuario coincide con la contraseña codificada, su código se ejecuta. Si la contraseña no coincide, se muestra el cuadro de mensaje "Contraseña incorrecta". Para evitar que el usuario espíe la contraseña en el Editor de Visual Basic, recuerde bloquear la macro para su visualización como se explicó anteriormente.

    Nota: dado el número de descifradores de contraseñas disponibles en Internet, es importante tener en cuenta que esta protección no es absoluta, sino más bien una protección contra el uso accidental.

    Consejos sobre macros de Excel

    Los profesionales de Excel VBA han ideado montones de trucos ingeniosos para que sus macros sean más eficaces. A continuación compartiré un par de mis favoritos.

      Si su código VBA manipula activamente el contenido de la celda, puede acelerar su ejecución desactivando la actualización de la pantalla y el recálculo de fórmulas. Después de ejecutar su código, vuelva a activarlo.

      Las siguientes líneas deben añadirse al principio del código (después de las líneas que empiezan por Dim o después del Sub línea):

      Aplicación.ScreenUpdating = False Aplicación.Calculation = xlCalculationManual

      Las siguientes líneas deben añadirse al final del código (antes de Fin Sub ):

      Aplicación.ScreenUpdating = True Aplicación.Calculation = xlCalculationAutomatic

      Cómo dividir el código VBA en varias líneas

      Al escribir código en el editor VBA, a veces puede crear sentencias muy largas, por lo que tiene que desplazarse horizontalmente para ver el final de la línea. Esto no afecta a la ejecución del código, pero dificulta su examen.

      Para dividir una sentencia larga en varias líneas, escriba un espacio seguido de un guión bajo (_) en el punto en el que desea romper la línea. En VBA, esto se denomina la tecla carácter de continuación de línea .

      Para continuar correctamente el código en la línea siguiente, siga estas reglas:

      • No separe el código en medio de los nombres de los argumentos.
      • No utilice un guión bajo para separar los comentarios. Para comentarios de varias líneas, escriba un apóstrofo (') al principio de cada línea.
      • Un guión bajo debe ser el último carácter de una línea, no seguido de ningún otro.

      El siguiente ejemplo de código muestra cómo dividir la sentencia en dos líneas:

      Answer = MsgBox( "¿Está seguro de que desea unir estas celdas?" , _ vbQuestion + vbYesNo, "Unmerge Cells" )

      Cómo hacer accesible una macro desde cualquier libro de trabajo

      Cuando escribes o grabas una macro en Excel, normalmente sólo se puede acceder a ella desde ese libro específico. Si quieres reutilizar el mismo código en otros libros, guárdalo en el Libro de trabajo de macros personales. Esto hará que la macro esté disponible siempre que abras Excel.

      El único obstáculo es que el Libro de trabajo de macros personales no existe por defecto en Excel. Para crearlo, necesitará grabar al menos una macro. El siguiente tutorial proporciona todos los detalles: Libro de trabajo de macros personales en Excel

      Cómo deshacer una macroacción

      Después de ejecutar una macro, su acción no puede revertirse pulsando Ctrl + Z ni haciendo clic en el botón Deshacer botón.

      Los programadores de VBA experimentados pueden, por supuesto, validar los valores de entrada y/o las condiciones de inicio antes de permitir que la macro realice cualquier cambio en una hoja de cálculo, pero en la mayoría de los casos eso es bastante complicado.

      Una forma más sencilla es guardar el libro de trabajo activo desde el código de la macro. Para ello, simplemente añada la siguiente línea antes de dejar que la macro haga cualquier otra cosa:

      ActiveWorkbook.Guardar

      Opcionalmente, también puede mostrar un cuadro de mensaje informando al usuario de que el libro de trabajo actual se guardó justo antes de ejecutar el código principal de la macro.

      De este modo, si usted (o sus usuarios) no están satisfechos con los resultados, pueden simplemente cerrar y volver a abrir el libro de trabajo.

      Impedir que Excel muestre una advertencia de seguridad cuando no hay macros en un libro

      ¿Te has encontrado alguna vez en una situación en la que Excel te pregunta continuamente si quieres activar las macros cuando sabes a ciencia cierta que no hay macros en ese libro en concreto?

      La razón más probable es que se haya añadido algún código VBA y luego se haya eliminado, dejando un módulo vacío, lo que dispara la alerta de seguridad. Para deshacerse de ella, simplemente elimine el módulo, guarde el libro de trabajo, ciérrelo y vuelva a abrirlo. Si esto no ayuda, haga lo siguiente:

      • Para EsteLibroDeTrabajo y para cada hoja individual, abra la ventana Código, pulse Ctrl + A para seleccionar todo el código y eliminarlo (aunque la ventana Código parezca vacía).
      • Borre cualquier UserForms y Class Modules que contenga el libro de trabajo.

      Así es como se crean y utilizan las macros VBA en Excel. Te doy las gracias por leer y ¡espero verte de nuevo en nuestro blog la semana que viene!

      Michael Brown es un entusiasta de la tecnología dedicado y apasionado por simplificar procesos complejos utilizando herramientas de software. Con más de una década de experiencia en la industria de la tecnología, ha perfeccionado sus habilidades en Microsoft Excel y Outlook, así como en Google Sheets y Docs. El blog de Michael está dedicado a compartir su conocimiento y experiencia con otros, brindando consejos y tutoriales fáciles de seguir para mejorar la productividad y la eficiencia. Ya sea un profesional experimentado o un principiante, el blog de Michael ofrece información valiosa y consejos prácticos para aprovechar al máximo estas herramientas de software esenciales.