4 MACROS
Microsoft Excel se cuenta entre las soluciones
más demandadas 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, planificar un
presupuesto o crear un calendario personal. En el entorno laboral Excel es
también una herramienta muy utilizada, pues no solo permite elaborar planes de
proyectos, registros de horas de trabajo o planes presupuestarios, sino también
e igual de fácilmente, representaciones gráficas de cifras de ventas, de
beneficios 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 desarrollar
una cierta aversión hacia tareas rutinarias y repetitivas o ante acciones que
no se puedan ejecutar fácilmente con ayuda de la interfaz estándar.
No es extraño, por esto, que la posibilidad de
crear macros se cuente entre las características cruciales del programa de
cálculo. La herramienta integrada en Excel para grabar macros utiliza el
lenguaje de scripts Visual Basic for Applications (VBA), que también se
implementa en Word, Powerpoint, Access y Outlook. Gracias a este lenguaje es
posible crear macros en Excel capaces de ejecutar de forma automática comandos
rutinarios o incluso añadir nuevas funciones (algoritmos 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 organizados
jerárquicamente, cada uno de los cuales posee propiedades y métodos
específicos. En este sistema jerárquico, todos los objetos disponibles se
encuentran conectados entre sí y se ven reflejados de forma aproximada en la
interfaz de usuario, que proporciona los mandos necesarios para poder
interactuar con la aplicación. Estos objetos pueden editarse determinando
sus propiedades y asignándoles métodos. Por ejemplo, para el objeto “Workbook”
existen los métodos “Close”, con cuya ayuda se cierra el libro seleccionado,
así como la propiedad “ActiveSheet”, 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 “Worksheets” en una
macro tiene como resultado que las instrucciones se aplican a todas las hojas
de trabajo. Para ejecutar una macro se tienen estas tres opciones:
·
Seleccionar
la opción correspondiente en el menú de macros
·
Seleccionar
una tecla creada por el usuario
·
Un
atajo de teclado personal
Crear macros en Excel: manual paso a paso
Para crear macros propias hay
que activar el editor Visual Basic, que forma parte de las herramientas para
desarrolladores y no está, por defecto, disponible en la cinta de opciones (la
antigua barra de herramientas). En un primer paso, entonces, se debe añadir la
pestaña o ficha denominada Developer (Programador).
Nota: por motivos
editoriales se ha seguido la versión en inglés de Microsoft Excel. Entre
paréntesis se mostrará siempre la función en castellano.
Primer paso: añadir la
ficha Developer a la cinta de opciones
Para poder grabar macros hay que añadir la pestaña
Developer (Programador) a la cinta de opciones
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 continuación se crea un
libro que sirva de base a las macros registradas. 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 referencia a
una macro, que en sí es una especie de programa secundario 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 seleccionamos la macro llamada “Hello” de la
lista.
Para ejecutarla accionamos el botón Run
(Ejecutar) y aparece un pequeño cuadro de información con el texto que
acabamos de definir:
La primera macro Hello con el mensaje “Hello
world!” ha sido creada con éxito
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
accesibles 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.
Selecciona
en Choose comands from (Seleccionar 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 marcándola y confirmando con Add
(Añadir).
5.
Antes
de confirmar definitivamente con OK aún puedes determinar el símbolo con el que
se mostrará. Para ello selecciona la macro y a continuación haz clic en Modify
(Cambiar). Para este ejemplo se ha elegido un smile.
Una vez finalizado, la lista
de símbolos, que incluye “Guardar”, “Deshacer” y “Rehacer”, se ha completado
con la macro “Hello”:
Se ha creado un símbolo de acceso rápido para la
macro Hello en la lista de símbolos de Excel
Nota:
también es posible definir un atajo de teclado para la ejecución de macros.
Sigue para ello la ruta “Programador>Macros>Opciones” o
“Developer>Macros>Options”.
Cuarto paso: grabar una
macro
El editor Visual Basic,
incluido entre las aplicaciones ofimáticas de Microsoft, brinda la ventaja de
que permite crear macros simples sin tener que dominar este lenguaje de
programación. Como ejemplo, vamos a crear una macro que cambia el nombre de
una hoja automáticamente. Sigue estos pasos:
1.
Selecciona
la opción Record Macro (Grabar macro) en la ficha Developer que ya conoces.
2.
En
el cuadro de diálogo que aparece a continuación titula la macro como
“RenameWorksheets” (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
finalizada la grabación de la macro haciendo clic en Stop Recording (Finalizar
grabación).
Si ahora volvemos al editor Visual Basic
(“Programador”>”Macros”>”Editar” o “Developer>Macros>Edit”) debería
mostrarse un código similar a este:
En el Editor Visual Basic se muestra el código
de las macros para editarlo
Las cuatro primeras líneas de
código bajo la línea que comienza con Sub, que empiezan con un
apóstrofe, constituyen comentarios que no tienen ninguna influencia en
la funcionalidad general de la macro y que solo sirven para una mejor
comprensión del código. Estos comentarios también permiten desactivar
temporalmente algunas líneas de código. En este ejemplo, concretamente, estas
cuatro líneas generadas automáticamente no son necesarias, por lo que podrías
borrarlas sin ningún tipo de problema, aunque, si no eres experto, te
recomendamos no hacer modificaciones innecesarias en el código.
La siguiente línea contiene el método Select
para seleccionar 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 seleccionar objetos para poder editarlos,
por lo que esta línea de código también es prescindible. Así que, una vez
finalizada su edición, el código definitivo tendría este aspecto:
Sub
RenameWorksheets ()
Sheets("Sheet1").Name = "New Name"
End
Sub
Con una macro también se puede crear un comando
para cambiar el nombre de una hoja automáticamente
Cómo crear diagramas y cuadros de diálogo con macros de Excel
Hemos visto como Visual Basic
facilita la mecanizació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 herramienta muy
sencilla con la que simplificar los procesos, sino que también adquiere,
de paso, conocimientos sobre este lenguaje de programació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 determinado proceso.
Una vez presentada la creación de macros en
general, los siguientes ejemplos ilustran de forma concreta la diversidad 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 visualizació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 “AssortedTasks“ 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)
La función para crear macros también facilita la
creación de gráficos. En esta imagen vemos un primer objeto vacío
En un siguiente paso, la tarea consiste
precisamente en nutrir el gráfico con los datos que han de mostrarse
visualmente en él, para lo cual es necesario, por un lado, introducir los datos
y, por el otro, ajustar nuevamente la macro, al carecer aún de la información
sobre el lugar de donde ha de tomar los datos. Siguiendo el esquema With
… End With se añade el método SetSourceData y lo especificamos con
la variable Selection, que sirve para que la macro tenga en
consideración, a la hora de ejecutarse, 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 continuación, a modo de
prueba, introduces los valores del 1 al 5 en las celdas A1-A5 y ejecutas la
macro, Excel presenta los datos introducidos como un gráfico de barras
por defecto, al no haber proporcionado ninguna información al respecto, que se
haría mediante la variable ChartType.
Excel interactivo: crear
cuadros de diálogo
Otra posibilidad 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 interactuar con el programa. Si, por ejemplo, se trata de crear
una ventana en la cual el valor que se introduzca se escriba automáticamente
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 continuación el lugar a donde se destina el valor que
introducirán luego los usuarios:
Sub DialogBox()
ActiveSheet.Range("A1").Value =
End
Sub
Con este código, la macro se
encarga de que la información que ha introducido el usuario en el cuadro de
diálogo se guarde en la celda A1 de la hoja activa (Hoja 1).
La asignación de la variable
de este campo o Value corresponde 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 argumentos siguientes, escritos en Visual Basic entre comillas,
resulta el cuadro de diálogo que mostramos a continuació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 correspondiente:
Ejemplo de cuadro de diálogo creado con una
macro de Excel.
Importar o exportar macros de Excel
Una vez se han grabado macros
en un documento de Excel es muy fácil utilizarlas en otro documento o
compartirlas 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 integrarla 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 limitaciones estándar para
proteger a sus usuarios, de tal forma que puede bloquear aquellas macros con o
sin notificación o todas las que carezcan de firma digital. La solución más
sencilla pasa por autorizar todas las macros automáticamente, aunque antes de
la importación hay que asegurarse de que los códigos son fiables.
En el Trust Center se pueden ajustar las
preferencias para las macros
Para exportar una macro, se abre el editor
Visual Basic, se hace clic en la ficha File (Archivo) y seguidamente en Export
File (Exportar archivo). Ponle un nombre a tu colección de macros, selecciona
el directorio y finaliza la exportación con Guardar. Este archivo solo pesa
unos pocos bytes, de forma que puede enviarse cómodamente por correo
electrónico o guardarse en un dispositivo de almacenamiento portátil. Para
importar una macro, comienza de la misma forma para después seleccionar Import
File (Importar archivo) e indicar finalmente el directorio de destino.