Está en la página 1de 15

Excel 2003 Curso Avanzado: Macros

Mayo 2005

SINCOR

Curso Avanzado Excel 2003

Introduccin
Qu son los macros? Un macro es un conjunto de instrucciones, comandos y/o funciones que se almacenan en un mdulo de Microsoft Visual Basic y que sirven para automatizar procesos. En Excel, muchas de las tareas pueden automatizarse, de manera de ahorrar tiempo y trabajo. Esto es obvio cuando se trata de tareas repetitivas. Tmese como ejemplo una tarea en la que se deba seleccionar un rango de una hoja de clculo, cambiar las caractersticas de la fuente, del ancho de columnas e incluso del contenido de una tabla. Si esta tarea debe hacerse a diario, un macro es lo que se necesita. Una manera de dar una sola orden y que el macro o programa ejecute todas esas acciones de manera automtica. Por definicin un macro debe ir orientado a tres objetivos: Debe resolver un problema Debe tener un nmero finito de pasos o instrucciones Debe aportar una respuesta

En muchos casos, la respuesta no ser necesariamente un nmero o una palabra, puede ser un cambio en la apariencia de un objeto o incluso operaciones que no son necesariamente visibles, como abrir y cerrar archivos. En Visual Basic para Aplicaciones (VBA), los macros son guardados en procedimientos o Subrutinas (SUB) que permiten el manejo de la informacin segn nuestras necesidades. Existe tambin un tipo especfico de subrutinas que efectivamente arrojan un resultado, son llamadas Funciones (FUNCTION). Excel utiliza VBA como estndar para la programacin de macros, ya que es la herramienta integrada en su paquete de oficina Microsoft Office. Permite la interaccin entre el usuario y sus datos, el manejo de varios programas del mismo paquete, incluso la interaccin entre Excel y otros programas que comparten esta plataforma de programacin, cada da mas usada. Visual Basic para Aplicaciones, de aqu en adelante VBA, esta basado en el lenguaje BASIC desarrollado hace mas de 30 aos y de amplia popularidad. Ha evolucionado a la programacin orientada a objetos, pero evitando el engorroso cdigo que esto conlleva. La mayor parte de los

SINCOR

Curso Avanzado Excel 2003

elementos ya tienen un manejo bsico ya programado. As, al presionar un botn, por ejemplo, el usuario no tendr que dibujar el botn presionado, simplemente agrega el botn y le indica a VBA qu debe hacer cuando alguien lo presione. En este curso se ver la aplicacin prctica de los macros, su creacin y modificacin, objetos y como se manejan, el uso de VBA y su entorno y tpicos de programacin que son necesarios para el correcto manejo de esta herramienta. Queda entendido que el mientras mas sea usada esta herramienta de programacin mejor ser el aprendizaje que de ella se tenga. Este curso pretende ser la base para que los participantes se interesen en el rea y profundicen, segn sus necesidades, en las infinitas posibilidades de la programacin.

SINCOR

Curso Avanzado Excel 2003

Grabar Macros
Generalmente las personas conocen las macros por la grabadora de macros, es decir, ejecutan una tarea repetitiva y alguien les sugiere que utilicen la grabadora de macros para automatizar esta tarea. Excel lleva incluida una utilidad que sirve para registrar acciones que se llevan a cabo en un libro de trabajo y registrarlas en forma de macro. Esta herramienta es til para generar cdigo engorroso, por su sintaxis un tanto complicada de recordar, adems de ahorrar tiempo. Al grabar una macro, Excel almacena informacin sobre cada paso dado cuando se ejecuta una serie de comandos. A continuacin, se ejecuta la macro para que repita los comandos. Si se comete algn error mientras se graba la macro, tambin se graban las correcciones que se realicen. Es por esto que casi siempre despus deberemos modificar las macros para adaptarlas a nuestras necesidades, sin embargo eso resultar sumamente sencillo.

Cmo se generan las macros? Para mostrar como son grabadas las macros ejecutaremos unas sencillas acciones que facilitarn su comprensin.

Ejemplo La grabadora de macros se activa desde el men Herramientas (Tools/Macro/Record New Macro)

SINCOR

Curso Avanzado Excel 2003

Se despliega la ventana Record Macro, en ella se puede indicar el nombre de la macro que se va a grabar, el mtodo abreviado para ejecutarla, dnde ser almacenada y una breve descripcin de la misma.

Despus de realizar varias acciones sobre la hoja de clculo, hacemos clic en el botn Stop Recording , para detener el grabado de la macro.

Modificacin de Macros Como se coment anteriormente, es casi inevitable despus de grabar una macro dejarla intacta, pues siempre necesitar algn ajuste que obvie algn error o bsicamente optimice (simplifique) el cdigo. Demos un vistazo a lo que gener la grabadora de macros en el editor de Visual Basic, hacemos clic en Tools Macro Visual Basic Editor o en Tools Macro Macros, se desplegar la ventana Macro seleccionaremos la macro recin guardada y hacemos clic en el botn Edit.

SINCOR

Curso Avanzado Excel 2003

En el editor de Visual Basic veremos un cdigo igual o similar a este:


Sub Macro1() ' ' Macro1 Macro ' Macro recorded 05/10/2004 by Leonardo Cardona ' ' ActiveCell.FormulaR1C1 = "Esta es una prueba de escritura: ""Hola Mundo!""" Range("A5").Select ActiveCell.FormulaR1C1 = "Este desplazamiento se realiz con el teclado" Range("F5").Select ActiveCell.FormulaR1C1 = "Y este con el mouse" Range("A1").Select Selection.Font.Bold = True Range("A5").Select Selection.Font.Bold = True With Selection.Font .Name = "Arial" .Size = 12 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With Range("F5").Select Selection.Cut Destination:=Range("H5") Range("H5").Select Selection.Font.Bold = True With Selection.Font .Name = "Arial" .Size = 12 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With

SINCOR

Curso Avanzado Excel 2003

Columns("H:H").EntireColumn.AutoFit Selection.Copy Range("H7").Select ActiveSheet.Paste Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "Esto fue una copia de una celda" Range("H8").Select End Sub

Como se puede ver en este cdigo de Visual Basic, es posible, hasta cierto punto, intuir lo que ejecuta la macro (ms an si fuimos nosotros mismos quienes la generamos), la coloracin en el cdigo tiene un significado especial: el color verde significa que es un comentario, el color azul significa que son palabras reservadas para Visual Basic y el color negro es simplemente cdigo; un color rojo indicar que hay un error en el cdigo escrito. En este punto podemos realizar los cambios que consideremos necesarios al cdigo, se pueden, por ejemplo, eliminar todas esas instrucciones que al final tienen un = False los cuales casi siempre (no siempre) representan acciones que no hemos ejecutado pero que estn vinculadas a la propiedad de un objeto; o simplemente cambiarlas a = True para experimentar que pasa con ellas, al culminar los cambios realizados es recomendable (mas no necesario) guardar los cambios, lo que puede hacerse presionando el botn macro y veamos si los cambios surtieron efecto. En este punto es necesario revisar el ambiente de desarrollo de VBA a fin de familiarizarnos con l. en la barra de herramientas del editor de

Visual Basic (esto guardar la hoja de clculo!), cerremos el editor y ejecutemos nuevamente la

SINCOR

Curso Avanzado Excel 2003

Editor de Visual Basic para Aplicaciones


El editor de VBA es el rea que nos permite manejar los proyectos de programacin que llevamos a cabo. Los macros, procedimientos y funciones generados, son guardados dentro de la hoja de clculo indicada en cada caso. La pantalla principal de VBA se muestra a continuacin:

Proyecto rea de Trabajo (Mdulos y Formas)

Propiedades

Ventana Inmediata

Observacin

Las partes de esta ventana son:

rea de Trabajo: Es aqu donde se insertarn los mdulos que contengan a los macros o procedimientos. Tambin se pueden incluir formularios con los que el usuario pueda interactuar con los datos o con el programa

Proyecto: Muestra cada libro de trabajo abierto actualmente en Excel, junto con sus elementos: Hojas, grficos, mdulos y formularios Propiedades: Cada objeto utilizado en los programas posee propiedades o caractersticas. En esta zona es posible, no solo ver esas caractersticas, sino fijar valores a disposicin del usuario

SINCOR -

Curso Avanzado Excel 2003


Ventana Inmediata: Resulta indispensable, durante la creacin de programas, modificar algunos valores mientras se ejecuta un programa, ver valores de alguna variable en un momento dado o incluso modificar, durante la ejecucin el sentido del programa. Esto puede ser realizado en esta ventana inmediata.

Observacin: Permite hacer seguimiento de los valores de las variables durante toda la ejecucin del programa, aportando un conocimiento claro de su comportamiento, con lo que podemos controlar que el programa est realizando lo que queremos que haga

Veremos un pequeo ejemplo de programa o subrutina que nos indicar la manera de manejar, al menos bsicamente, el editor de VBA. Inicialmente, es necesario insertar o incluir un mdulo en el cual podamos escribir nuestra subrutina o programa. Para ello, desde el Editor de VBA, en el men Insert (Insertar), seleccionaremos la opcin Module (Mdulo). En el rea de trabajo veremos una pequea pantalla blanca similar a la de otros programas editores como Notepad o Wordpad:

En ella podemos proceder a escribir directamente lo que queramos. escribiremos una rutina que sume dos valores. La siguiente es dicha rutina:

En nuestro ejemplo,

SINCOR
Sub Suma2Mas2() a = 2 b = 2 c = a + b ActiveCell.Value = c End Sub

Curso Avanzado Excel 2003

Ahora podemos correr este sencillo programa desde el editor o desde Excel. La explicacin ms simple del programa es que toma dos variables (a y b), les asigna un valor y el resultado de su suma lo almacena en otra variable (c). Finalmente, la instruccin ActiveCell.Value = c, muestra en Excel el resultado de la operacin. La sintaxis correcta de esta rutina se ver mas adelante en este curso. Para ejecutar el programa desde el editor, basta con estar situado dentro del procedimiento y presionar la tecla F5. Tambin se puede ejecutar esta opcin desde el men Run:

Al ejecutar un macro tan sencillo como este es difcil notar algn cambio, pero en Excel, aparece el resultado en la celda que actualmente contenga al cursor:

Es el primer macro creado directamente en el editor!. Puede hacer variaciones en los valores de las variables o en la operacin en si.. Puede agregar ms variables si lo desea y ver el resultado de esos cambios. A continuacin se mostrar una ligera explicacin de una herramienta importante como es el Debug o depuracin del programa. VBA permite ejecutar el programa de varios modos: completo de una sola vez, un paso a la vez, ejecutarlo hasta cierto punto. Todas estas son herramientas que permiten manejar mejor los programas, ya que es posible ir viendo paso a paso como se comporta el cdigo. Usaremos las

10

SINCOR

Curso Avanzado Excel 2003

herramientas ms usuales para la depuracin y seguimiento de programas que podemos encontrar en el editor, pueden ser encontradas en el men Debug (Depuracin):

Step Into (Paso a paso): Permite ir ejecutando el programa lnea por lnea, cada vez que ejecutamos esta opcin, tambin accesible presionando la tecla F8, el programa ejecuta la siguiente lnea.

Run to cursor (Ejecutar hasta el cursor). El programa correr desde el inicio hasta donde se encuentre ubicado el cursor en ese instante, detenindose al alcanzar esa instruccin. De aqu en adelante es posible continuar con la ejecucin o ir paso a paso

Add Watch (Agregar observacin): Permite poner una variable en modo seguimiento, de manera que su valor est siempre disponible en la ventana de Observacin en la parte inferior del editor

Toggle Breakpoint (Encender Punto de Parada): Esta opcin enciende o apaga un punto de parada. Al ejecutar el programa, este correr hasta que consiga un punto de parada, aqu se detendr y devolver el manejo al usuario, quien podr revisar algn valor o el comportamiento del programa. La opcin es activada tambin al presionar la tecla F9 desde cualquier parte del programa.

Al escribir el cdigo del programa, VBA tiene la opcin de ir completndolo automticamente:

Esto ayuda a recordar la sintaxis de los comandos, tambin permite saber, los parmetros que necesite alguna funcin de VBA o algn procedimiento. Procederemos a escribir una funcin y veremos como se comporta dentro de Excel. En el mismo mdulo, debajo del procedimiento recin escrito, debemos transcribir el siguiente cdigo:

11

SINCOR

Curso Avanzado Excel 2003

Function SumaDosNumeros(a As Single, b As Single) As Single SumaDosNumeros = a + b End Function Una funcin difiere de un procedimiento en que siempre debe dar un resultado, el tipo de resultado depender del tipo de funcin. Las partes de una funcin son:

Identificador de Funcin (Function): Esta palabra le informa a VBA que a continuacin viene un cdigo que dar un resultado Nombre (SumaDosNumeros): Identifica a la funcin. Debe ser nico para poder hacer el llamado de la funcin desde Excel o desde otro procedimiento Parmetros (a As Single, b As Single): Los parmetros o argumentos son opcionales y sirven como valores base para los clculos realizados por la funcin Tipo de funcin (As Single): Hay que informar a VBA qu tipo de resultado ser. En este caso, el tipo Single corresponde a valor numrico real Instrucciones: En este caso la funcin slo tiene una instruccin, pero puede poseer todas las que sea necesaria para alcanzar el resultado Asignacin de Resultado (SumaDosNumeros = ) Al finalizar una funcin siempre hay que asignarle el resultado de sus clculos al nombre que la identifica. De esta manera VBA entender cul es el valor final de la funcin.

Finalizacin (End Function): Punto final de la funcin.

Como se aprecia en este ejemplo, esta funcin toma dos parmetros de tipo numrico y los suma, mostrando finalmente el resultado tambin numrico. Una funcin puede ser usada desde VBA o desde Excel. Para usarla en este ltimo caso, simplemente basta con aplicarla como si fuese otra funcin normal de Excel: =SUMADOSNUMEROS(4, A1) Los parmetros pueden ser literales o referencias a celdas, siempre y cuando esas celdas tengan contenido numrico. Desde Excel, el resultado sera:

12

SINCOR

Curso Avanzado Excel 2003

13

SINCOR

Curso Avanzado Excel 2003

Cdigo de Macros, VBA


Visual Basic para Aplicaciones tiene su fundamento en el lenguaje BASIC (Beginners All-Purpose Symbolic Instruction Code Cdigo de instrucciones simblicas de todo propsito para principiantes), desarrollado hace ya 40 aos en Estados Unidos por John Kemeny y Thomas Kurtz. Es un lenguaje de programacin basado en el idioma ingls simple, con instrucciones sencillas de aprender y por ello, de amplia difusin. Es, quizs, el lenguaje ms fcil de aprender de todos los que existen, no por ello el ms completo, pero para propsitos generales de programacin, cumple con todas las expectativas.
Ha visto grandes cambios en su evolucin, hasta el punto que ahora es un lenguaje visual fcil de usar. Los lenguajes visuales son herramientas llamadas de cuarta generacin que permiten ir dibujando las aplicaciones que se realizan. Gran parte del trabajo con estos lenguajes ya est pre-programado por los creadores del lenguaje, as que ya no es necesario incluir la parte difcil del cdigo de manejo de Windows, tal como manejo de eventos o mtodos. VBA es una herramienta que se incluye con Microsoft Office a fin de que sus usuarios extiendan las capacidades de estos paquetes, permitiendo no slo la interaccin sencilla entre ellos, sino con otros programas que permiten la conexin a travs de mdulos de instrucciones o libreras dinmicas. La principal limitacin que debe afrontar Basic o VBA, es su manera de manejar las instrucciones. En programacin se habla de dos metodologas diferentes: Compilacin e Interpretacin. La primera convierte un cdigo creado usando algn lenguaje de programacin, en cdigo que slo entiende la computadora, es decir transforma todas las instrucciones de un programa en operaciones binarias internas de una computadora. Esto lleva a que los programas sean ms eficientes y ms rpidos, ya que varias lneas de cdigo pueden ser compiladas o unidas en unas pocas instrucciones de la mquina. Por su parte, los lenguajes interpretados, de los cuales forma parte VBA, tienen la desventaja de que las instrucciones son ledas una por una, luego interpretadas, analizadas y por ltimo ejecutadas, cada vez una por una. La tecnologa actual de VBA permite que el proceso sea una

14

SINCOR

Curso Avanzado Excel 2003

mezcla de Interpretacin y Compilacin, pero por su naturaleza interpretativa, los programas requieren libreras instaladas en cada computadora donde debe correr el programa que permitan agilizar los procesos escritos en el cdigo.

15

También podría gustarte