Cuando se trabaja ha­bi­tua­l­me­n­te con programas de edición de textos, con bases de datos o con hojas de cálculo es fácil darse cuenta de lo que significa tener que in­tro­du­cir co­n­s­ta­n­te­me­n­te los mismos comandos. En especial cuando se trata de procesos complejos o en varios pasos, este tipo de programas puede poner a prueba los nervios más re­si­s­te­n­tes. Las de­no­mi­na­das macros, que se tra­du­ci­rían del inglés como “in­s­tru­c­cio­nes”, registran una secuencia de comandos para que puedan ser eje­cu­ta­das au­to­má­ti­ca­me­n­te por el usuario en un de­te­r­mi­na­do momento, co­n­vi­r­tié­n­do­se así en un elemento de apoyo más que bien recibido. Escritas en lenguaje de pro­gra­ma­ción, su uso no requiere, sin embargo, disponer de co­no­ci­mie­n­tos in­fo­r­má­ti­cos, pues muchos programas, entre ellos Microsoft Excel, son capaces de grabar macros simples, al mismo tiempo que pro­po­r­cio­nan ayuda a la hora de es­cri­bi­r­las. Para el software de pro­ce­sa­mie­n­to de hojas de cálculo de Microsoft, las macros son una de las funciones más im­po­r­ta­n­tes. Ahora bien, ¿qué son las macros de Excel y por qué son tan útiles? La respuesta a esta pregunta fu­n­da­me­n­tal a co­n­ti­nua­ción.

Compra y registra tu dominio ideal
  • Ce­r­ti­fi­ca­do SSL Wildcard gratis
  • Registro privado
  • Función Domain Connect para una co­n­fi­gu­ra­ción DNS si­m­pli­fi­ca­da gratis

Qué es una macro de Excel

Microsoft Excel se cuenta entre las so­lu­cio­nes más de­ma­n­da­das a la hora de editar, analizar y presentar datos. Los usuarios de Windows pueden utilizar las populares hojas de cálculo, incluidas en la suite ofimática de Microsoft, para, entre otras cosas, pla­ni­fi­car un pre­su­pue­s­to o crear un ca­le­n­da­rio personal. En el entorno laboral Excel es también una he­rra­mie­n­ta muy utilizada, pues no solo permite elaborar planes de proyectos, registros de horas de trabajo o planes pre­su­pue­s­ta­rios, sino también e igual de fá­ci­l­me­n­te, re­pre­se­n­ta­cio­nes gráficas de cifras de ventas, de be­ne­fi­cios o de pérdidas. Una vez se ha aprendido a utilizar el programa, se aprecian pronto sus numerosas funciones, aunque también es fácil de­sa­rro­llar una cierta aversión hacia tareas ru­ti­na­rias y re­pe­ti­ti­vas o ante acciones que no se puedan ejecutar fá­ci­l­me­n­te con ayuda de la interfaz estándar.

No es extraño, por esto, que la po­si­bi­li­dad de crear macros se cuente entre las ca­ra­c­te­rí­s­ti­cas cruciales del programa de cálculo. La he­rra­mie­n­ta integrada en Excel para grabar macros utiliza el lenguaje de scripts Visual Basic for Ap­pli­ca­tio­ns (VBA), que también se im­ple­me­n­ta en Word, Po­we­r­poi­nt, Access y Outlook. Gracias a este lenguaje es posible crear macros en Excel capaces de ejecutar de forma au­to­má­ti­ca comandos ru­ti­na­rios o incluso añadir nuevas funciones (al­go­ri­t­mos para el análisis de datos) a la hora de cálculo.

Así funcionan las macros en Excel

Excel dispone los diversos elementos que componen la interfaz de uso como objetos-programa or­ga­ni­za­dos je­rá­r­qui­ca­me­n­te, cada uno de los cuales posee pro­pie­da­des y métodos es­pe­cí­fi­cos. En este sistema je­rá­r­qui­co, todos los objetos di­s­po­ni­bles se en­cue­n­tran co­ne­c­ta­dos entre sí y se ven re­fle­ja­dos de forma apro­xi­ma­da en la interfaz de usuario, que pro­po­r­cio­na los mandos ne­ce­sa­rios para poder in­ter­ac­tuar con la apli­ca­ción. Estos objetos pueden editarse de­te­r­mi­na­n­do sus pro­pie­da­des y asi­g­ná­n­do­les métodos. Por ejemplo, para el objeto “Workbook” existen los métodos “Close”, con cuya ayuda se cierra el libro se­le­c­cio­na­do, así como la propiedad “Ac­ti­ve­Sheet”, que muestra la hoja activa en el libro de trabajo.

Mediante las listas (objetos señalados con el sufijo plural -s) las macros también pueden ejecutar acciones sobre un grupo de objetos. El objeto para listas “Wo­r­k­sheets” en una macro tiene como resultado que las in­s­tru­c­cio­nes se aplican a todas las hojas de trabajo. Para ejecutar una macro se tienen estas tres opciones:

  • Se­le­c­cio­nar la opción co­rre­s­po­n­die­n­te en el menú de macros
  • Se­le­c­cio­nar una tecla creada por el usuario
  • Un atajo de teclado personal

Las ventajas de utilizar macros con Excel

Si, con an­te­rio­ri­dad, co­n­s­cie­n­te o in­co­n­s­cie­n­te­me­n­te, no se ha apro­ve­cha­do la utilidad de las macros de Excel, no significa esto que haya sido en de­tri­me­n­to del trabajo con archivos de Excel, pero sí que se ha elegido el camino más difícil. Y es que saltan a la vista las ventajas decisivas de la te­c­no­lo­gía de macros que las co­n­vie­r­ten en una tarea obli­ga­to­ria para todo aquel que quiera sacar el máximo partido al software de hojas de cálculo. Esto es lo que aporta crear macros con Excel:

  • Reducen la tasa de errores: con cada comando que se introduce ma­nua­l­me­n­te en la hoja de cálculo aumenta la pro­ba­bi­li­dad de cometer un error y es que, es­pe­cia­l­me­n­te cuando se trata de se­cue­n­cias complejas de comandos y de acciones re­pe­ti­ti­vas, es muy fácil dar un paso en falso que bloquee incluso al programa al completo. Grabando macros, en cambio, solo esconde un potencial de error el propio proceso de su creación, pero si se hizo todo co­rre­c­ta­me­n­te, la macro funciona siempre a la pe­r­fe­c­ción.
  • Reducen el tiempo de trabajo: como las macros se crean una sola vez y se utilizan siempre que se necesite, ahorran un tiempo valioso que es posible dedicar a otras tareas.
  • Aumentan la utilidad de Excel: Con Visual Basic no solo se pueden programar macros, sino también de­sa­rro­llar nuevas funciones. De este modo el usuario tiene la po­si­bi­li­dad de ampliar el abanico de funciones con aquellas adecuadas a sus ne­ce­si­da­des y de si­m­pli­fi­car de forma co­n­si­de­ra­ble sus fórmulas. Algo muy práctico es que Excel presenta estas funciones definidas por el usuario como si fueran nativas del programa y, más aún, el usuario puede fijar botones de acceso rápido a sus propias macros en la barra de símbolos.

Crear macros en Excel: manual paso a paso

Para crear macros propias hay que activar el editor Visual Basic, que forma parte de las he­rra­mie­n­tas para de­sa­rro­lla­do­res y no está, por defecto, di­s­po­ni­ble en la cinta de opciones (la antigua barra de he­rra­mie­n­tas). En un primer paso, entonces, se debe añadir la pestaña o ficha de­no­mi­na­da Developer (Pro­gra­ma­dor).

Nota: por motivos edi­to­ria­les se ha seguido la versión en inglés de Microsoft Excel. Entre pa­ré­n­te­sis se mostrará siempre la función en ca­s­te­llano.

Primer paso: añadir la ficha Developer a la cinta de opciones

Dirígete a la pestaña File (Archivo) y se­le­c­cio­na Options (Opciones). En el punto Customize the Ribbon (Pe­r­so­na­li­zar la cinta de opciones) se encuentra un listado de todas las pestañas pri­n­ci­pa­les o Main Tabs, entre las que se encuentra Developer (Pro­gra­ma­dor):

Marca la casilla de Developer y confirma haciendo clic en OK. Ahora la pestaña ya se encuentra en la cinta de opciones.

Segundo paso: crear un libro nuevo para macros

A co­n­ti­nua­ción se crea un libro que sirva de base a las macros re­gi­s­tra­das. Para ello, haz clic en Macros en la pestaña Developer y cuando aparezca la ventana emergente introduce el nombre de la primera macro –en este ejemplo “Hello”– en Macro Name. Confirma haciendo clic en Create (Crear), a lo que se abre el editor Visual Basic con el siguiente código:

Sub equivale aquí a subrutina y hace re­fe­re­n­cia a una macro, que en sí es una especie de programa se­cu­n­da­rio de Excel. Cuando se inicia una macro, se ejecuta el código que figura entre Sub y End Sub. Podemos realizar una pequeña prueba ampliando el código de la macro Hello con el mensaje “Hello World!”:

Sub Hello()
    MsgBox ("Hello world!")
End Sub

Guardamos el código en formato .xslm (Macro-Enabled Excel Format), cerramos y volvemos a la hoja de Excel. Aquí hacemos clic en Macros y se­le­c­cio­na­mos la macro llamada “Hello” de la lista. Para eje­cu­tar­la ac­cio­na­mos el botón Run (Ejecutar) y aparece un pequeño cuadro de in­fo­r­ma­ción con el texto que acabamos de definir:

Haciendo clic en OK se cierra la ventana y se finaliza la ejecución de la macro.

Por último, se guarda el libro en el editor Visual Basic.

Tercer paso: crear un botón de acceso rápido para las macros

Las macros de Excel son ac­ce­si­bles para su ejecución tanto desde la pestaña Developer como desde View, pero si se va a usar una macro a menudo, quizá convenga generar un acceso rápido en la lista de símbolos de acceso rápido en la parte superior izquierda. Eso se hace de la siguiente forma:

  1. Abre la pestaña File (Archivo).

  2. Abre las opciones y haz clic en Quick Access Toolbar (Lista de símbolos de acceso rápido)

  3. Se­le­c­cio­na en Choose comands from (Se­le­c­cio­nar comando desde) la opción Macros y busca allí la macro “Hello” que has creado.

  4. Añádela a la lista de símbolos de acceso rápido ma­r­cá­n­do­la y co­n­fi­r­ma­n­do con Add (Añadir).

  5. Antes de confirmar de­fi­ni­ti­va­me­n­te con OK aún puedes de­te­r­mi­nar el símbolo con el que se mostrará. Para ello se­le­c­cio­na la macro y a co­n­ti­nua­ción haz clic en Modify (Cambiar). Para este ejemplo se ha elegido un smile.

Una vez fi­na­li­za­do, la lista de símbolos, que incluye “Guardar”, “Deshacer” y “Rehacer”, se ha co­m­ple­ta­do con la macro “Hello”:

Nota: también es posible definir un atajo de teclado para la ejecución de macros. Sigue para ello la ruta “Pro­gra­ma­dor>Macros>Opciones” o “Developer>Macros>Options”.

Cuarto paso: grabar una macro

El editor Visual Basic, incluido entre las apli­ca­cio­nes ofi­má­ti­cas de Microsoft, brinda la ventaja de que permite crear macros simples sin tener que dominar este lenguaje de pro­gra­ma­ción. Como ejemplo, vamos a crear una macro que cambia el nombre de una hoja au­to­má­ti­ca­me­n­te. Sigue estos pasos:

  1. Se­le­c­cio­na la opción Record Macro (Grabar macro) en la ficha Developer que ya conoces.

  2. En el cuadro de diálogo que aparece a co­n­ti­nua­ción titula la macro como “Re­na­me­Wo­r­k­sheets” (renombra hojas de trabajo) e inicia la grabación haciendo clic en OK.

  3. Cambia el nombre de la “Sheet 1” (Hoja 1) por el de “New Name” (Nuevo nombre) y da por fi­na­li­za­da la grabación de la macro haciendo clic en Stop Recording (Finalizar grabación).

Si ahora volvemos al editor Visual Basic (“Pro­gra­ma­dor”>”Macros”>”Editar” o “Developer>Macros>Edit”) debería mostrarse un código similar a este:

Las cuatro primeras líneas de código bajo la línea que comienza con Sub, que empiezan con un apóstrofe, co­n­s­ti­tu­yen co­me­n­ta­rios que no tienen ninguna in­flue­n­cia en la fu­n­cio­na­li­dad general de la macro y que solo sirven para una mejor co­m­pre­n­sión del código. Estos co­me­n­ta­rios también permiten des­ac­ti­var te­m­po­ra­l­me­n­te algunas líneas de código. En este ejemplo, co­n­cre­ta­me­n­te, estas cuatro líneas generadas au­to­má­ti­ca­me­n­te no son ne­ce­sa­rias, por lo que podrías borrarlas sin ningún tipo de problema, aunque, si no eres experto, te re­co­me­n­da­mos no hacer mo­di­fi­ca­cio­nes in­ne­ce­sa­rias en el código.

La siguiente línea contiene el método Select para se­le­c­cio­nar la “Sheet 1” (Hoja 1), paso necesario durante la ejecución manual del cambio de nombre antes del cambio en sí. Sin embargo, los scripts de Visual Basic no necesitan se­le­c­cio­nar objetos para poder editarlos, por lo que esta línea de código también es pre­s­ci­n­di­ble. Así que, una vez fi­na­li­za­da su edición, el código de­fi­ni­ti­vo tendría este aspecto:

Sub RenameWorksheets ()
    Sheets("Sheet1").Name = "New Name"
End Sub

Ahora, vuelve a Excel y, de nuevo, cambia el nombre de la hoja de trabajo por el de “Sheet 1” (u Hoja1) para poder ejecutar a modo de prueba la macro “Re­na­me­Wo­r­k­sheets” recién creada. El nombre debería, así, cambiar au­to­má­ti­ca­me­n­te. Ten en cuenta que para poder ejecutar otra vez la macro hay que ajustar la macro al nombre nuevo.

Cómo crear diagramas y cuadros de diálogo con macros de Excel

Hemos visto como Visual Basic facilita la me­ca­ni­za­ción de las más diversas tareas en Excel. Con la ayuda de la grabación de comandos, el usuario no solo dispone de una he­rra­mie­n­ta muy sencilla con la que si­m­pli­fi­car los procesos, sino que también adquiere, de paso, co­no­ci­mie­n­tos sobre este lenguaje de pro­gra­ma­ción. Así que no dudes en usar el editor de código si te parece que creando una macro en Excel podrías agilizar un de­te­r­mi­na­do proceso.

Una vez pre­se­n­ta­da la creación de macros en general, los si­guie­n­tes ejemplos ilustran de forma concreta la di­ve­r­si­dad de usos posibles de las macros de Excel.

Creación de un diagrama en un área de celdas

Una función muy utilizada de las tablas de Excel es la vi­sua­li­za­ción de los datos como esquemas o gráficos, una tarea algo laboriosa para la cual las macros pueden servir de gran ayuda. Para comenzar, crea una macro con el nombre “As­so­r­te­d­Ta­s­ks“ y declara la variable para tu objeto:

Dim mygraphic As Chartobject

En la siguiente línea crea un objeto, al cual asignas la variable mygraphic:

Set mygraphic = ActiveSheet.ChartObjects.Add(100, 50, 200, 200)

Los valores entre pa­ré­n­te­sis co­rre­s­po­n­den a la posición y al tamaño del diagrama: 100 y 50 son las coor­di­na­das de la esquina superior izquierda, mientras que 200 y 200 co­rre­s­po­n­den a la anchura y a la altura. Si eje­cu­ta­mos la macro, Excel genera el objeto au­to­má­ti­ca­me­n­te en función de esta posición y este tamaño, aunque, al no haber in­tro­du­ci­do aún ningún dato, se muestra aún vacío, así:

En un siguiente paso, la tarea consiste pre­ci­sa­me­n­te en nutrir el gráfico con los datos que han de mostrarse vi­sua­l­me­n­te en él, para lo cual es necesario, por un lado, in­tro­du­cir los datos y, por el otro, ajustar nue­va­me­n­te la macro, al carecer aún de la in­fo­r­ma­ción sobre el lugar de donde ha de tomar los datos. Siguiendo el esquema With … End With se añade el método SetSou­r­ce­Da­ta y lo es­pe­ci­fi­ca­mos con la variable Selection, que sirve para que la macro tenga en co­n­si­de­ra­ción, a la hora de eje­cu­tar­se, todas las casillas que han sido marcadas. El código completo resulta así:

Sub AssortedTasks()
Dim mygraphic As ChartObject
Set mygraphic = ActiveSheet.ChartObjects.Add(100, 50, 200, 200)
With mygraphic
.Chart.SetSourceData Source := Selection
End With
End Sub

Si, a co­n­ti­nua­ción, a modo de prueba, in­tro­du­ces los valores del 1 al 5 en las celdas A1-A5 y ejecutas la macro, Excel presenta los datos in­tro­du­ci­dos como un gráfico de barras por defecto, al no haber pro­po­r­cio­na­do ninguna in­fo­r­ma­ción al respecto, que se haría mediante la variable ChartType.

Excel in­ter­ac­ti­vo: crear cuadros de diálogo

Otra po­si­bi­li­dad que se deriva del uso de macros en Excel consiste en la creación de cuadros de diálogo con los cuales los usuarios pueden in­ter­ac­tuar con el programa. Si, por ejemplo, se trata de crear una ventana en la cual el valor que se in­tro­du­z­ca se escriba au­to­má­ti­ca­me­n­te en una celda definida, comienza creando y nombrando la macro como hasta ahora. En nuestro ejemplo, damos a esta macro el nombre de “DialogBox”. En la subrutina indica a co­n­ti­nua­ción el lugar a donde se destina el valor que in­tro­du­ci­rán luego los usuarios:

Sub DialogBox()
    ActiveSheet.Range("A1").Value = 
End Sub

Con este código, la macro se encarga de que la in­fo­r­ma­ción que ha in­tro­du­ci­do el usuario en el cuadro de diálogo se guarde en la celda A1 de la hoja activa (Hoja 1).

La asi­g­na­ción de la variable de este campo o Value co­rre­s­po­n­de a la segunda parte del comando. En el ejemplo nos hemos decantado por el comando InputBox, muy similar al comando MsgBox que se utilizó en aquella macro “Hello” del principio. Combinado con los tres ar­gu­me­n­tos si­guie­n­tes, escritos en Visual Basic entre comillas, resulta el cuadro de diálogo que mostramos a co­n­ti­nua­ción:

  • Prompt: con ayuda del primer argumento se define el texto que aparece en la ventana y que ha de servir de apoyo al usuario.
  • Title: con este argumento se determina la cabecera del cuadro de diálogo
  • Default: define un valor estándar

Este sería un código ejemplar de una macro completa para un cuadro de diálogo con caja y texto:

Sub DialogBox()
    Sheet1.Range("A1").Value = InputBox("Please, enter a value for the field A1", "Title of the dialog box", "Value for the field A1")
End Sub

Si ejecutas la macro, aparece la ventana co­rre­s­po­n­die­n­te:

Importar o exportar macros de Excel

Una vez se han grabado macros en un documento de Excel es muy fácil uti­li­zar­las en otro documento o co­m­pa­r­ti­r­las con otros usuarios. Esta es la finalidad de una función para importar y exportar contenida en el editor Visual Basic y que permite guardar la macro en el formato .bas e in­te­grar­la en un documento Excel. La única condición es que las macros también estén activadas en este documento, aunque, debido al riesgo para la seguridad que albergan estos scripts, por otro lado tan prácticos, Excel ejerce ciertas li­mi­ta­cio­nes estándar para proteger a sus usuarios, de tal forma que puede bloquear aquellas macros con o sin no­ti­fi­ca­ción o todas las que carezcan de firma digital. La solución más sencilla pasa por autorizar todas las macros au­to­má­ti­ca­me­n­te, aunque antes de la im­po­r­ta­ción hay que ase­gu­rar­se de que los códigos son fiables.

Estas opciones para activar o des­ac­ti­var macros se en­cue­n­tran en el Trust Center (Centro de seguridad). Para ello se abre la pestaña File, se se­le­c­cio­na Options, aquí Trust Center y, fi­na­l­me­n­te, Trust Center Settings (Ajustes del Trust Center). Aquí se encuentra el punto Macros Settings (Pe­r­so­na­li­zar macros), que incluye las po­si­bi­li­da­des de co­n­fi­gu­ra­ción me­n­cio­na­das arriba.

Para exportar una macro, se abre el editor Visual Basic, se hace clic en la ficha File (Archivo) y se­gui­da­me­n­te en Export File (Exportar archivo). Ponle un nombre a tu colección de macros, se­le­c­cio­na el di­re­c­to­rio y finaliza la ex­po­r­ta­ción con Guardar. Este archivo solo pesa unos pocos bytes, de forma que puede enviarse có­mo­da­me­n­te por correo ele­c­tró­ni­co o guardarse en un di­s­po­si­ti­vo de al­ma­ce­na­mie­n­to portátil. Para importar una macro, comienza de la misma forma para después se­le­c­cio­nar Import File (Importar archivo) e indicar fi­na­l­me­n­te el di­re­c­to­rio de destino.

Ir al menú principal