Escolar Documentos
Profissional Documentos
Cultura Documentos
Captulo
PROGRAMACIN DE MACROS
Qu es una macro?
Las macros de los programas de aplicacin son secuencias de acciones que se ejecutan automticamente al cliquear un botn o una combinacin de teclas, permitiendo automatizar tareas que se realizan con frecuencia. Por ejemplo, quien habitualmente escribe monografas y acostumbra encabezarlas con un ttulo en negrita, centrado y subrayado, querr tener la posibilidad de programar algn mecanismo para que esas tres opciones de formateo se ejecuten rpidamente al presionar por ejemplo las teclas Alt-E (de Encabezado). O quien escribe cartas formales muy seguido, querr encontrar una forma de que las palabras De mi consideracin aparezcan automticamente cuando cliquea un botn especial para crear una nueva carta. En los antiguos procesadores o editores de texto, crear macros implicaba lidiar con crpticos lenguajes de programacin, por lo cual el usuario comn rpidamente abandonaba la tarea. Luego, a medida que los programas se fueron haciendo ms sofisticados, se populariz la opcin de grabar macros. Con esta facilidad, basta con pedirle al programa en cuestin que aprenda una secuencia de acciones llevadas a cabo por el usuario, para despus repetirlas automticamente a pedido del mismo. En Microsoft Office, esta tarea se lleva a cabo mediante la opcin Grabar nueva macro..., que se encuentra en el men Herramientas / Macro de Word, Excel y PowerPoint. Para poner a prueba esta utilidad, vamos a crear una macro que reemplaza todos los espacios en un bloque de texto por tabuladores, para poder insertar ese texto en Excel. PASO A PASO Grabacin de una macro PASO A PASO
Abra Word y cargue un documento cualquiera (que contenga algn texto). Marque un bloque de texto (no importa su longitud) y luego seleccione Herramientas / Macro / Grabar nueva macro. Aparecer el cuadro de dilogo Grabar macro. En l, deber asignar a la macro un nombre y una descripcin. Asgnele por ejemplo el nombre FormatearConTabs (tenga en cuenta que el nombre no debe tener
14
Qu es una macro?
espacios) y la descripcin que desee. Deber indicar si la macro quedar almacenada en el documento en uso o en la plantilla activa o la plantilla por defecto (por ejemplo, Normal.dot). Seleccione la plantilla por defecto, de modo tal que la macro quede disponible para todos los documentos que vamos a utilizar. Luego de pulsar Aceptar en el cuadro de dilogo anterior, habr comenzado la grabacin de la macro. Cualquier accin que usted realice a partir de este momento quedar registrada en ella. Solo deber realizar cada uno de los pasos en la secuencia correcta. Abra el men Edicin y seleccione la opcin Reemplazar. Como texto a buscar, coloque simplemente un espacio en el campo Buscar opciones:. Luego site el cursor sobre el campo Reemplazar con:. Cliquee en el botn Especial, al pie de la ventana (si no aparece, cliquee antes el botn Ms), y seleccione la opcin Marca de tabulacin.
15
PROGRAMACIN DE MACROS
Cliquee en Reemplazar todos. Inmediatamente, el programa le avisar que realiz un determinado nmero de reemplazos y le preguntar si quiere continuar con el resto del documento. Responda que no. Finalice la grabacin de la macro presionando el botn de la barra flotante que apareci al comenzar la grabacin. Obviamente, esta accin no se registra en la macro.
Para ver si la macro funciona como debera, seleccione un texto y luego ejectela, accediendo a la opcin de men Herramientas Macro Macros..., eligiendo el tem FormatearConTabs (o el nombre que le haya puesto) en la lista de macros y cliqueando el botn Ejecutar.
Para comprender un poco ms acerca de este tema, tenemos que saber que las aplicaciones de hoy en da no se construyen, como ocurra en el pasado, escribiendo pginas y pginas de cdigo de programacin. En cambio, gran parte del trabajo de un programador consiste actualmente en tomar piezas de software prefabricadas y ensamblarlas a modo de rompecabezas para construir una aplicacin. A estas piezas de software se las denomina componentes, y tienen la cualidad de cumplir un conjunto de funciones bien definidas, que evitan al programador la tarea de averiguar en detalle cmo hacen para cumplir esas funciones.
Objetos ActiveX
Una clase especial de componentes son los objetos ActiveX. Estos tienen la particularidad de poder utilizarse fcilmente dentro de cualquier entorno que los acepte, como por ejemplo: documentos de Word, planillas Excel, pginas Web, mensajes de mail, etc. Los objetos ActiveX agregan funcionalidad al contenedor en el que estn insertos. Dentro de los objetos ActiveX se distingue una categora especial, denominada controles ActiveX, que incluye objetos utilizados para armar interfaces de usuario en programas de aplicacin. En Visual Basic se hace un uso intensivo de los controles ActiveX para confeccionar las ventanas de las aplicaciones. Pero un control ActiveX tambin puede insertarse dentro de documentos, como por ejemplo, una planilla Excel, para que dicho documento tenga una interfaz de usuario ms amigable. Para comprender mejor esta idea, lo conveniente es hacer un ejemplo. En la siguiente gua paso a paso, insertaremos un calendario dentro de una planilla Excel para simplificar la seleccin de fechas.
17
de software preparados para llevar a cabo toda clase de tareas con documentos, planillas, presentaciones, bases de datos, correos electrnicos y dems elementos manipulables por Office. VBA nos abre la tapa de esa caja de herramientas y nos permite tomar de ella los componentes de software que queramos para combinarlos y de ese modo, automatizar tareas o construir nuevas aplicaciones que, en definitiva, hagan ms fcil nuestro trabajo cotidiano.
PROGRAMACIN DE MACROS
PASO A PASO
Abra Excel con una planilla en blanco. Acceda al men Insertar / Objeto... Aparecer entonces una ventana que muestra todos los objetos insertables registrados en el sistema.
Busque el elemento Control Calendar y cliquee en Aceptar. En la planilla se dibujar un calendario que permite seleccionar fechas grficamente.
18
Uno de los botones de esta barra se denomina Modo Diseo. Seleccinelo para pasar a modo Diseo. Una vez activado el modo Diseo, cliquee sobre el control Calendario antes insertado en la planilla. Ver que ahora el control no permite seleccionar fechas; sin embargo, el mismo fue rodeado por puntos de seleccin que permiten cambiar su tamao y ubicacin en la planilla. A su vez, al estar en modo diseo, es posible cambiar las propiedades del objeto, con lo cual se modificar su comportamiento. Cliquee sobre el control con el botn derecho, seleccione la opcin Objeto Calendario y Propiedades. Aparecer una ventana de dilogo que permite modificar las propiedades del objeto Calendario, alterando su aspecto y tambin su funcionamiento. Obsrvese que en la seccin General, la propiedad Value contiene una fecha, correspondiente a la fecha seleccionada en el control. Esta propiedad es la que permite, mediante cdigo de programacin, averiguar la fecha seleccionada para realizar clculos o llevar a cabo alguna accin en funcin de ella.
19
Active la barra de herramientas Visual Basic, cliqueando con el botn derecho sobre cualquiera de las barras de herramientas de Excel y seleccionando la opcin Visual Basic en el men contextual.
PROGRAMACIN DE MACROS
Modifique la propiedad Ttulo de mes o ao destildando la opcin correspondiente y cliquee en Aceptar. Cliquee en el botn para salir finalmente del modo Diseo (empleando el mismo que us anteriormente para entrar en l) y observe cmo cambi el aspecto del control Calendario, segn se muestra en la siguiente imagen.
La experiencia realizada en el ejercicio anterior ofrece una vista previa de lo que significa programar en Visual Basic: insertar controles sobre formularios o documentos, modificar sus propiedades y (algo que haremos en prximos prrafos) escribir bloques de instrucciones en lenguaje Basic que permitan llevar a cabo determinadas acciones cuando ocurre algo (un evento, para ser ms preciso) sobre los controles. Obviamente, la programacin en Visual Basic no es solo eso. Las macros y aplicaciones hechas en Visual Basic, a medida que se van tornando complejas, van requiriendo ms trabajo de escribir cdigo y menos, de dibujar controles. Y a su vez, nos ofrecen una mayor cantidad de posibilidades. Pero ya habr tiempo para eso. En principio, continuemos conociendo los aspectos que hacen al entorno de programacin que nos ofrece Office.
20
El entorno de desarrollo
Hasta ahora hemos grabado macros y hemos utilizado controles ActiveX. Es hora de bucear un poco ms profundo en las aguas de la programacin en Office. Para ello, no hay ms remedio que meterse en el entorno de desarrollo que ofrece este paquete de aplicaciones. Todas las aplicaciones de Office brindan un entorno de desarrollo idntico, denominado Editor de Visual Basic, que ofrece todas las herramientas de programacin para disear formularios, ingresar cdigo, correr los programas, depurarlos, etctera (Figura 1).
Este entorno suele ser de aspecto muy similar tambin en las diferentes versiones de Office, aunque no siempre estuvo presente en todos los programas, como veremos a continuacin. Funciona como una ventana separada, pero asociada a cada uno de los programas de Office, de modo tal que cuando se cierra el programa asociado, tambin se cierra el Editor, y los programas creados con el editor se guardan en la planilla activa o en los documentos en uso en la aplicacin asociada. Por ejemplo, cada documento que se genera con Word incluye un proyecto de VBA, el cual permanece vaco hasta que se le
21
PROGRAMACIN DE MACROS
comienza a agregar cdigo a travs de grabacin de macros o edicin de mdulos. Para entrar al Editor de Visual Basic, se debe acceder a la opcin de men Herramientas / Macro / Editor de Visual Basic de cualquiera de las aplicaciones de Office, o bien presionar Alt-F11. Ah veremos en un primer momento unicamente los mdulos creados con la grabadora de macros. Es conveniente saber que recin a partir de la versin 2000, Access y Outlook incorporaron el Editor de Visual Basic al igual que Word, Excel y PowerPoint. En versiones anteriores de Outlook solo se podan manipular sus objetos desde otras aplicaciones de Office u otros entornos de programacin. Y en las versiones anteriores de Access, la edicin del cdigo VBA se llevaba a cabo directamente desde la ventana principal de la aplicacin, en lugar de hacerlo utilizando el Editor de Visual Basic. El editor de Visual Basic GUA VISUAL 1
22
Explorador de proyectos. Muestra una lista de los proyectos en uso y los elementos a los que hace referencia cada uno de ellos. Estos elementos pueden ser objetos propios de la aplicacin (documentos o plantillas de Word, por ejemplo), mdulos de cdigo o formularios (UserForms), o referencias. Podremos llamar a cualquiera de estos elementos para editarlos. Ventana de propiedades. Cuando se selecciona un objeto en el explorador de proyectos, se abre un formulario o un mdulo de cdigo, o bien cuando se selecciona un control dentro de un formulario, esta ventana muestra sus propiedades, en orden alfabtico. Esta ventana es muy til ya que tambin admite la modificacin de los valores de cada propiedad (excepto las de solo lectura). Ventana de edicin de cdigo. Cumple la funcin de un editor de texto avanzado, en donde se ingresa o modifica el cdigo de programacin de un mdulo de cdigo, de un mdulo de clase o de un formulario. Puede haber mltiples ventanas de edicin de cdigo, cada una mostrando los procedimientos asociados a un elemento de un proyecto. Una herramienta til de esta ventana es que el texto adopta automticamente distintos colores segn su funcin: las palabras reservadas aparecen en azul; los comentarios, en verde; el cdigo con errores de sintaxis, en rojo, y todo lo dems, en negro. Formularios. Constituyen las ventanas de los programas VBA, una vez que fueron desarrollados. Sobre los formularios se disponen controles para que el usuario, al accionar la macro en Office, pueda ingresar fcilmente los datos, elija diferentes opciones de una lista, acepte o cancele una determinada accin, etc. Ventana Inmediato. En esta ventana, se ejecutan instrucciones individuales que se procesan en el momento, a diferencia de las instrucciones en mdulos de cdigo o formularios. Un ejemplo elemental del uso de esta ventana, consiste en escribir Print 2 + 2 y presionar Enter. Inmediatamente aparecer el resultado de sumar 2 ms 2. Cuadro de herramientas. Contiene un conjunto de controles que se utilizan para el diseo de los formularios (botones, listas desplegables, barras de desplazamiento, cuadros de texto, etc.). Ms adelante, veremos en detalle la funcionalidad de cada una de estas herramientas.
23
PROGRAMACIN DE MACROS
Es conveniente saber que los parmetros de un procedimiento son datos que estos necesitan para cumplir su tarea. Por ejemplo, un procedimiento que dibuja una lnea entre dos puntos necesita, como mnimo, que se le indique desde dnde y hasta dnde dibujar la lnea. Las coordenadas de los extremos de la lnea a dibujar sern, entonces, sus parmetros. Por ltimo, sepa que siempre que necesite escribir instrucciones para hacer una determinada tarea en Office, y no conozca la forma correcta de hacerlo, haga que el mismo Office le ensee: grabe una macro que lleve a cabo esa tarea y luego vea el cdigo de la macro con el Editor de Visual Basic.
PROGRAMACIN DE MACROS
Cuando se da la orden para que ejecute esta macro mediante el botn Ejecutar en la ventana de macros, Word busca el procedimiento Sub correspondiente y ejecuta una tras otras sus instrucciones, hasta toparse con End Sub, que marca el final del procedimiento. Veamos en el leguaje de programacin, qu es lo que hacen en realidad las instrucciones de FormatearConTabs. Las primeras lneas (las que aparecen en verde y comienzan con un apstrofo) son comentarios que sirven nicamente para dar informacin adicional a quien lee el programa, y se ignoran al momento de ejecutar. Despus sigue una lista de instrucciones que hacen lo mismo que hara el usuario para realizar la tarea que hace la macro: limpiar los campos donde se ingresan los textos a buscar y a reemplazar, establecer todas las propiedades de la bsqueda y, finalmente, ejecutar la bsqueda. Cmo hace la macro todo esto? Manipulando un muy prctico objeto de Word. Seor lector, le presento al objeto Selection, y a su hijo, el objeto Find. A lo largo del libro (y especialmente en el captulo 5) van a tener que trabajar mucho juntos. Selection es uno de los innumerables objetos que ofrece Office para manipular los datos de sus aplicaciones (se acuerda cuando decamos que Microsoft
26
Selection.Find.ClearFormatting
es un mtodo del objeto Find, que hace que este limpie los formatos especificados como parte de una operacin de bsqueda. Al darle esta instruccin al objeto Find, ocurre lo mismo que si cliqueramos el botn Sin formato del cuadro de dilogo Buscar y reemplazar (men Edicin). Se utiliza este mtodo para asegurar que no se incluyan formatos no deseados en los criterios de bsqueda y sustitucin. Vale aclarar que los mtodos de un objeto son instrucciones que hacen que el objeto ejecute una determinada accin sobre los datos que contiene (ms sobre este tema en el Captulo 4 de este libro).
ClearFormatting
Esta primera instruccin nos da la pauta de cmo se utilizan los objetos en el lenguaje de programacin Basic: se coloca el nombre del objeto (en este caso, Selection), luego un punto, a continuacin el nombre del objeto hijo, si lo hubiere (en este caso, Find) y, finalmente, se escribe el nombre del mtodo a ejecutar (en este caso, ClearFormatting). La siguiente instruccin hace lo mismo que la anterior, pero en este caso, sobre un hijo del objeto Find (o un nieto del objeto Selection) denominado Replacement. Al ejecutar el mtodo ClearFormatting del objeto Replacement, se limpian los campos a utilizar como sustitucin del texto buscado. Lo que viene a continuacin es el comienzo de un bloque de instrucciones With:
With Selection.Find
Los bloques With se utilizan para abreviar la escritura de cdigo, deleitando a los amantes de la ley del menor esfuerzo. Cuando se inicia un bloque With, se establece que todas las instrucciones siguientes que comiencen con un
27
Office es una gigantesca caja de herramientas? Pues este es el primer ejemplo). En particular, Selection hace referencia al bloque de texto seleccionado en un documento en un momento determinado. Y Find es un objeto hijo de Selection que permite hacer una bsqueda sobre el texto contenido en Selection (ms sobre los objetos y sus relaciones se tratar en el captulo 4). Observe la primera de las instrucciones de FormatearConTabs:
PROGRAMACIN DE MACROS
punto harn referencia al objeto indicado a la derecha de la palabra With (en este caso, Selection.Find) hasta tanto no se encuentre la instruccin End With. De este modo, se evita la necesidad de tipear el nombre del objeto en cada una de las instrucciones. Las instrucciones que siguen hasta End With se utilizan todas para establecer diferentes propiedades de la bsqueda: .Text establece el texto que la macro va a buscar; .Replacement.Text establece el texto a utilizar como reemplazo; .Forward indica que la bsqueda se har hacia delante. Una buena idea resulta ser consultar la ayuda del programa ante cualquier duda o inconveniente. Por ejemplo, dentro del editor de Visual Basic, cuando se resalta una palabra por ejemplo, la propiedad Wrap de Selection.Find y se presiona F1, aparece ayuda especfica sobre la palabra resaltada. Esta es la forma ms cmoda de aprender para qu sirve cada instruccin, propiedad o mtodo de Visual Basic, y cmo es su sintaxis. Antes de continuar, vamos a aclarar un aspecto: Por qu las dos primeras instrucciones (y la ltima tambin) de la macro no estn incluidas dentro del bloque With? Algn capricho del grabador de macros, que prefiere usar los bloques With solo para manipular propiedades, y no para ejecutar mtodos. Tranquilamente se puede incluir estas tres instrucciones dentro de ese bloque, borrndoles el prefijo Selection.Find. La ltima instruccin de la macro es el mtodo Execute, el cual se encarga de efectuar el reemplazo del texto segn las propiedades establecidas anteriormente. Ahora, este mtodo no se ejecuta as noms, sino que se le indica un valor para el parmetro Replace:
.Execute Replace:=wdReplaceAll
El valor asignado a dicho parmetro (la constante wdReplaceAll) indica que se reemplacen todas las ocurrencias del texto buscado. No se preocupe, ya que en el captulo 2 se explica ms detalladamente el uso de parmetros y constantes. Esta macro tiene un pequeo defecto: cuando termina de ejecutar, siempre aparece un mensaje preguntando si queremos continuar la bsqueda desde el
28
Ahora reemplace lo que hay a la derecha del signo = por: wdFindStop. La instruccin corregida debe quedar as:
.Wrap = wdFindStop
Vuelva a ejecutar la macro y ver que el molesto mensaje ya no aparece ms. Para finalmente grabar esta modificacin, cliquee el botn Grabar en la barra de herramientas. Si desplaza el mouse por encima de dicho botn, ver que el texto del botn (el ToolTip) dice Guardar Normal. Esto significa que, al cliquear en este botn, las modificaciones hechas a la macro se guardarn en la plantilla Normal, para poder ser empleada en cualquier otro momento.
principio del documento, cosa que no tiene mucho sentido, dado que esta macro est hecha para ejecutarse nicamente sobre el texto seleccionado. Pero con una mnima edicin del cdigo Basic de la macro podemos corregir este problema muy rpidamente.
PROGRAMACIN DE MACROS
PLANILLA TERMINADA
PRUBELO YA! En el sitio onweb.tectimes.com encontrar disponibles los ejemplos tratados en este libro, listos para bajar a su PC.
30