Aprende cómo crear macros en Excel
En este tutorial en español, exploraremos el fascinante mundo de las macros de Excel y descubriremos cómo se hace una macro en Excel para simplificar tus tareas diarias. Aprenderás paso a paso cómo crear macros desde cero, grabar acciones y luego reproducirlas para automatizar procesos repetitivos. Además, te enseñaremos cómo personalizar y mejorar tus macros de Excel utilizando el lenguaje de programación VBA. Prepárate para descubrir una forma eficiente y efectiva de realizar tus tareas en Excel con las poderosas macros.
Si deseas llevar tus habilidades al siguiente nivel y explorar todo su potencial, te recomendamos considerar nuestro curso de Excel. Este curso te proporcionará conocimientos profundos sobre macros, fórmulas avanzadas y funciones especializadas, permitiéndote aprovechar al máximo esta poderosa herramienta.
¿Qué es una Macro?
Una macro es una serie de comandos o instrucciones que permanecen almacenados dentro de Excel y que podemos ejecutar cuando sea necesario y cuantas veces lo deseemos.
Se trata de un conjunto de comandos que se almacena en un lugar especial de Excel de manera que están siempre disponibles cuando los necesites ejecutar.
¿Cómo se hace una macro en Excel?
Las macros se escriben en un lenguaje de programación especial que es conocido como Visual Basic for Applications (VBA). Este lenguaje permite acceder a prácticamente todas las funcionalidades de Excel y con ello también ampliar la funcionalidad del programa.
Aunque en el caso de que no queramos hacerlo por código, podemos usar una herramienta que nos ofrece el propio Excel.
Mostrar la pestaña Programador
La pestaña Programador se utiliza en la creación de macros y de controles de formulario. Sin embargo, dicha pestaña se muestra de manera predeterminada en la Cinta de opciones de Excel y por lo tanto es importante aprender a mostrarla.
Para activar la pestaña Programador, debemos acudir a la configuración de la Cinta de opciones la cual se encuentra en el cuadro de diálogo Opciones y a continuación hacer clic derecho sobre ella.
Se nos abrirá un recuadro como este, y debemos activar la casilla donde está la opción de programador.
Una vez hecho esto, pulsamos el botón de “Aceptar” y a continuación veremos la pestaña de Programador en la Cinta de opciones.
Una vez activada la pestaña de Programador, veremos que los comandos se encuentran organizados en cuatro grupos.
- Código: Los comandos necesarios para iniciar el Editor de Visual Basic, listar las macros disponibles para ejecutarlas o eliminarlas y crear una macro sin necesidad de saber programación VBA.
- Complementos: Nos permite administrar y habilitar todo tipo de complementos como el caso del complemento Solver o las Herramientas para análisis.
- Controles: Contiene comandos para agregar controles especiales, como los controles de formulario.
- XML: Con estos comandos podremos importar datos de un archivo XML y trabajar con archivos XML.
Crear una Macro mediante la grabadora de Macros
El método más sencillo para crear una Macro es utilizar la grabadora de macros que guardará todos los pasos realizados para ejecutarlos posteriormente.
La grabadora de macros almacena cada acción que se realiza en Excel, por eso es conveniente planear con antelación los pasos a seguir de manera que no se realicen acciones innecesarias mientras se realiza la grabación. Para utilizarla nos dirigimos a la pestaña Programador y seleccionamos la opción Grabar macro.
Al pulsar el botón se mostrará el cuadro de diálogo Grabar macro.
En el cuadro de texto “Nombre de la macro” escribimos con qué se identificará a la macro. Opcionalmente, podemos asignar un método abreviado de teclado el cual permitirá ejecutar la macro con la combinación de teclas especificadas.
La lista de opciones “Guardar macro en” permite seleccionar la ubicación donde se almacenará la macro:
- Este libro. Guarda la macro en el libro actual.
- Libro nuevo. La macro se guarda en un libro nuevo y puede ser ejecutada en cualquier libro creado durante la sesión actual de Excel.
- Libro de macros personal. Esta opción permite utilizar la macro en cualquier momento sin importar el libro de Excel que se esté utilizando.
También podemos escribir una Descripción para la macro. Finalmente pulsamos el botón “Aceptar” para iniciar con la grabación de la macro. Al terminar de ejecutar las acciones planeadas pulsaremos el botón “Detener grabación” para completar la macro.
Programando en VBA
VBA, Visual Basic for Applications, es un lenguaje de programación que permite extender las habilidades del programa para cubrir nuestros requerimientos. Utilizando VBA se pueden desarrollar nuevos algoritmos para analizar la información o para integrar a Excel con alguna otra aplicación, como Microsoft Access.
El primer concepto a entender en este lenguaje es que cada elemento de Excel es representado en VBA como un objeto. Por ejemplo, existe el objeto Workbook que representa a un libro de Excel. También existe el objeto Sheet que representa una hoja y el objeto Chart para un gráfico.
El segundo concepto importante es que cada uno de estos objetos tiene propiedades y métodos. Por ejemplo el objeto Workbook tiene propiedades como ActiveSheet (Hoja activa), Name (Nombre), ReadOnly (Solo Lectura), Saved (Guardado) y algunos de sus métodos son Save (Guardar), Close (Cerrar), PrintOut (Imprimir), Protect (Proteger), Unprotect (Desproteger).
Editor de Visual Basic
El Editor de Visual Basic VBE, es un programa relacionado a Excel porque nos permite escribir código VBA para crear las macros.
Para abrir el editor nos situamos en la pestaña de Programador y seleccionamos la opción de Visual Basic.
En la parte izquierda se muestra el Explorador de proyectos el cual muestra el proyecto actual y además las hojas pertenecientes a ese libro de Excel.
Dentro del Editor podemos observar una ventana llamada “Inmediato” en la parte inferior. Esta ventana permite introducir instrucciones y observar el resultado inmediato. Además, desde el código VBA podemos imprimir mensajes hacia la ventana Inmediato con el comando Debug.Print para poder depurar nuestro código.
El área más grande en blanco es donde escribiremos el código VBA. Es en esa ventana en donde escribimos y editamos los comandos VBA que dan forma a nuestras macros.
Crear una Macro con VBA
Para crear una macro mediante código VBA, en primer lugar abrimos el editor de Visual Basic. Una vez dentro del Editor hacemos clic derecho sobre el título del proyecto y dentro del menú seleccionamos la opción “Insertar” y posteriormente “Módulo”.
Se creará la sección Módulos y dentro de la misma se mostrará el módulo recién creado. Podemos saber que el módulo está abierto porque su nombre se muestra en el título entre corchetes.
Nuestra primera subrutina va a consistir en copiar este comando dentro del editor VBA.
Sub MiPrimeraMacro()MsgBox "Hola mundo"End Sub
Llegados a este punto vamos a ver las instrucciones mostradas:
Subrutinas VBA
La instrucción Sub es la abreviación de la palabra subrutina. Una subrutina es un conjunto de comandos que se ejecutarán uno por uno hasta llegar al final de la subrutina, que está especificada por la instrucción End Sub.
Las subrutinas nos ayudan a agrupar varias instrucciones para poder organizar adecuadamente nuestras instrucciones. Una subrutina siempre tiene un nombre el cual debe ser especificado justo después de la instrucción Sub y seguido por paréntesis.
La función MSGBOX en VBA
Esta función nos ayuda a mostrar una ventana de mensaje de manera que podamos estar comunicados con el usuario sobre cualquier error o advertencia que necesitamos darle a conocer.
Ejecutar Macro
Para probar nuestro código bastará con pulsar el botón Ejecutar que se encuentra dentro de la barra de herramientas.
En cuanto pulsemos el botón, se ejecutará y veremos el resultado en pantalla.
Por último para guardar la macro debemos guardar el archivo como Libro de Excel habilitado para macros, de lo contrario perderemos todo lo desarrollado en el módulo creado.
Objetos y propiedades
Cada uno de los objetos de Excel tiene propiedades y métodos. Las propiedades son las características del objeto y los métodos son las acciones que el objeto puede realizar.
Un objeto de Excel tiene propiedades. Por ejemplo una celda (Range) tiene las propiedades valor (Value) y dirección (Address) entre muchas otras. Estas propiedades describen mejor al objeto.
Los métodos son las actividades o acciones que el objeto puede realizar. Por ejemplo una celda (Range) tiene los métodos activar (Activate), calcular (Calculate), borrar (Clear) entre muchos más.
Para acceder a las propiedades y métodos de un objeto lo hacemos a través de una nomenclatura especial. Justo después del nombre del objeto colocamos un punto seguido de la propiedad o del método.
Range("A1").Value = "Hola"
Así asignamos una cadena de texto al valor de la celda A1. Ahora bien, si queremos borrar ese valor que acabamos de colocar en la celda podemos utilizar el método Clear:
Range("A1").Clear
En el caso de que queramos ver todas las propiedades y métodos de un objeto podemos usar el Editor de Visual Basic.
Cuando introducimos el punto después del nombre del objeto, nos listará las propiedades y métodos con iconos distintos. En la imagen de arriba los métodos son los que tienen el icono de color verde.
Navegando por el modelo de objetos
Excel tiene un modelo de objetos el cual es una jerarquía de todos los objetos que podemos utilizar desde el lenguaje VBA. En la parte superior de la jerarquía se encuentra el objeto Application y todos los demás objetos estarán por debajo de él.
Para tener acceso a los objetos que están por debajo del objeto Application podemos utilizar el punto. El punto nos ayuda a navegar por la jerarquía hacia un nivel inferior.
Por ejemplo, si deseamos poner en negritas el texto de la celda A1 debemos llegar al objeto Range el cual nos dará acceso a modificar la propiedad Bold de la siguiente manera:
Application.ActiveWorkbook.ActiveSheet.Range("A1").Font.Bold = True
Existe una funcionalidad conocida como objetos predeterminados, la cual nos permite omitir la escritura de algunos objetos y aun así tener un código funcional. Por ejemplo, en la sentencia mostrada previamente podemos omitir el objeto Application y tener nuestro código funcionando correctamente:
ActiveWorkbook.ActiveSheet.Range("A1").Font.Bold = True
Incluso podemos omitir los objetos ActiveWorkbook y ActiveSheet sabiendo que el código se ejecutará siempre sobre el libro activo y la hoja que esté activa al momento de la ejecución:
Range("A1").Font.Bold = True
Los objetos Workbook y Worksheet
El objeto Workbook representa un libro de Excel y el objeto Worksheet representa una hoja. Como sabemos, un libro de Excel puede tener más de una hoja lo cual significa que un objeto Workbook puede contener más de un objeto Worksheet.
Para poder establecer mejor la relación entre los objetos Workbook y Worksheet usamos las colecciones de objetos. De esta manera un objeto Workbook tiene asociada una colección de objetos Worksheets la cual contiene los objetos Worksheet que representan las hojas de ese libro de Excel. De la misma manera, el objeto Application tiene una colección de objetos Workbooks la cual incluirá todos los objetos Workbook de los libros de Excel que usemos en nuestro VBA.
Para abrir un libro de Excel en VBA podemos utilizar el método Open del objeto Workbooks de la siguiente manera:
Application.Workbooks.Open Filename:="C:Libro1.xlsx"
Este comando abrirá el archivo ubicado en «C:Libro1.xlsx» y lo agregará a la colección de objetos Workbooks. De esta manera podemos abrir tantos archivos como sean necesarios y para cada uno de ellos se creará un objeto Workbook el cual será almacenado dentro de Workbooks.
Una vez que hemos abierto los archivos que necesitamos podremos hacer referencia a cada uno de ellos a través de la colección de objetos Workbooks de la siguiente manera:
Application.Workbooks(1).Activate
El número dentro de los paréntesis indica el índice del objeto Workbook dentro de la colección de objetos Workbooks. De manera predeterminada el índice 1 será para el libro de Excel que contiene el código VBA y a partir de ahí la numeración será de acuerdo al orden en que hayamos abierto otros archivos. Si conocemos el nombre del libro podemos utilizarlo en lugar del índice y tener una instrucción como la siguiente:
Application.Workbooks("Libro1.xlsx").Activate
De igual manera podemos acceder las hojas de cualquier libro a través de su colección de objetos Worksheets. Esta colección también puede ser accedida por el índice de cada una de las hojas del libro:
Application.Workbooks(1).Worksheets(1).Range("A1").Value = "Hola"
Este comando accede a la hoja con el índice 1 y coloca el valor “Hola Mundo” en la celda A1. También podemos acceder a una hoja a través de su nombre en caso de que lo conozcamos:
Application.Workbooks(1).Worksheets("Hoja1").Range("A1").Value = "Hola"
A través de la colección de objetos Worksheets podemos crear nuevas hojas en un libro con la siguiente instrucción:
Worksheets.Add
No es necesario iniciar la instrucción anterior con el objeto Application ni el objeto Workbooks. Esta sintaxis indica que se agregará una nueva hoja al libro que esté activo en ese momento. Este es un método abreviado que podemos utilizar si estamos seguros de que el libro activo es el libro al que deseamos agregar una nueva hoja. De lo contrario, podemos especificar tota la ruta completa:
Application.Workbooks("Libro1.xlsx").Worksheets.Add
El objeto Application
Es el objeto que está en el nivel más alto de la jerarquía del modelo de objetos de Excel. Además nos da acceso a opciones y configuraciones a nivel de la aplicación. Muchas de las opciones que podemos modificar con el objeto Application son las mismas que encontramos en la ficha Archivo dentro del cuadro de diálogo Opciones de Excel.
Ya que el objeto Application es el objeto principal dentro de VBA todos los demás objetos derivan de él. Es por ello que las instrucciones suelen empezar especificando el objeto Application:
Application.ActiveSheet.Name = "Reporte de Ventas"
Sin embargo en la mayoría de los casos podemos omitir la escritura del objeto Application, ya que supone que todos los demás objetos provienen de él. De esta manera la siguiente instrucción también es válida.
ActiveSheet.Name = "Reporte de Ventas"
El objeto Application tiene algunas colecciones que son de mucha utilidad como Sheets, Columns y Rows. La colección Sheets nos permite acceder a todas las hojas de un libro:
Application.Sheets.Count
Es importante mencionar que la colección Sheets se referirá al libro de Excel que se encuentre activo en el momento de ejecutar esta instrucción. Las colecciones Columns y Rows nos permitirán acceder a las columnas y filas de la hoja activa.
Application.Columns(5).SelectApplication.Rows(5).Select
El objeto Application tiene muchas propiedades, pero algunas de las más importantes son las siguientes:
- ActiveWorkbook. Devuelve un objeto Workbook que representa el libro de Excel activo.
- ActiveSheet. Devuelve un objeto Worksheet que representa a la hoja que esté actualmente seleccionada (activa).
- ActiveCell. Devuelve un objeto Range que representa la celda activa dentro de la hoja activa en el libro de Excel activo.
- ThisWorkbook. Esta propiedad devolverá un objeto Workbook que representará el libro que contiene la macro que está siendo ejecutada.
Ejemplos de macros con código básico
A continuación vamos a ver unos de cómo realizar tareas básicas con macros.
1. Hoja de trabajo con fecha y hora actual:
Para escribir la fecha y la hora actual utilizamos el siguiente código:
Sub escribirFechaYHora ()Range ("A1") = NowEnd Sub
Esto mostrará la fecha y hora en la primera celda, pero podemos cambiar Range(“A1”) para mostrarla en cualquier otra.
2. Ejecutar una macro al abrir la hoja de cálculo:
Hay casos donde la macro debe abrirse junto con la hoja de cálculo. En este caso basta con montar una macro con el parámetro Auto_Open () Con el siguiente código:
Sub Auto_Open ()MsgBox "Para más información sobre Excel, visite [https://support.microsoft.com/es-es/excel?ui=es-es&rs=es-es&ad=es](https://support.microsoft.com/es-es/excel?ui=es-es&rs=es-es&ad=es) "End Sub
3. Macro que habla:
Podemos crear una macro que nos lea el contenido de las celdas que le indiquemos:
Sub ExcelFalando ()("A1: A5").End Sub
Utilizando dicho código, nos leerá el contenido desde la celda A1, hasta la A5.
Conclusión
En este tutorial, has aprendido todo sobre la creación de macros en Excel paso a paso. Recuerda que las macros son una herramienta poderosa que puede ahorrarte tiempo y esfuerzo al automatizar tareas repetitivas. Experimenta con diferentes acciones para aprovechar al máximo Excel y mejorar tu productividad.
Si deseas profundizar tus conocimientos sobre Excel y seguir aprendiendo, te invitamos a consultar la página de nuestro curso de Excel. Allí encontrarás una amplia variedad de recursos, lecciones y ejercicios prácticos que te ayudarán a dominar aún más las habilidades de Excel. ¡Sigue aprendiendo y lleva tus habilidades en Excel al siguiente nivel!