Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Mayo 2005
SINCOR
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
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
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
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
SINCOR
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
Propiedades
Ventana Inmediata
Observacin
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 -
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
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
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.
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
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.
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
13
SINCOR
14
SINCOR
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