Capitulo Gratis Proyectos Con Macros en Excel

14
1 Las primeras macros Éste es un libro de proyectos con macros. De modo que comencemos por ver qué es una macro y cómo se crea. En este capítulo se tratan los elementos básicos del tema con unos cuantos ejemplos simples. Entre otras cosas, aprenderemos las primeras instrucciones de Visual Basic para Aplicaciones, el lenguaje de las macros. Las primeras macros 14 Cómo se crea una macro: el grabador 15 La macro por dentro: el código 17 Entendiendo el código 19 Modificando el código 20 Creando una macro en el Editor 21 Una macro, dos operaciones 23 Un caso más complejo 24 Capítulo uno SERVICIO DE ATENCIÓN AL LECTOR: [email protected]

Transcript of Capitulo Gratis Proyectos Con Macros en Excel

Page 1: Capitulo Gratis Proyectos Con Macros en Excel

1Las

primeras macros

Éste es un libro de proyectos con macros.

De modo que comencemos por ver qué es

una macro y cómo se crea. En este

capítulo se tratan los elementos básicos

del tema con unos cuantos ejemplos

simples. Entre otras cosas,

aprenderemos las primeras instrucciones

de Visual Basic para Aplicaciones, el

lenguaje de las macros.

Las primeras macros 14Cómo se crea una macro: el grabador 15La macro por dentro: el código 17

Entendiendo el código 19Modificando el código 20

Creando una macro en el Editor 21Una macro, dos operaciones 23Un caso más complejo 24

C a p í t u l o u n o

SERVICIO DE ATENCIÓN AL LECTOR: l e c t o r e s @ t e c t i m e s . c o m

Page 2: Capitulo Gratis Proyectos Con Macros en Excel

Las primeras macros

Una macro es un supercomando: un comando que, en un único paso, realizalo que, normalmente, requeriría de muchas operaciones. Permite agilizar yautomatizar aún más el trabajo con Excel. Vamos directamente a un ejemplo.La planilla de la Figura 1 muestra un informe de sueldos y ventas en una em-presa. Se desean imprimir copias impresas de esta planilla para todos los em-pleados de la lista. Pero, por razones confidenciales, en algunos casos se quie-re que no aparezcan los sueldos.

Figura 1. Necesitamos una forma rápida y sencilla de ocultar

o mostrar a voluntad la columna C de esta planilla.

En otras ocasiones especiales, la lista deberá mostrar todos los datos. De mo-do que, a la hora de imprimir, habrá que ocultar o mostrar, según el caso, lacolumna C. Por ejemplo, para ocultarla:

Ocultar una columna PASO A PASO

Seleccionamos cualquier celda de la columna a ocultar. Por ejemplo, C1.

PROYECTOS CON MACROS EN EXCEL

14

Page 3: Capitulo Gratis Proyectos Con Macros en Excel

Tomamos las opciones Formato/Columna/Ocultar.

Entonces la planilla aparecerá como en la Figura 2.

Figura 2. La planilla de la Figura 1, luego de ocultar la columna C.

Cuando queramos recuperar la columna, usaremos las opciones Formato/Columna/Mostrar.Ocultar y mostrar la columna puede resultar un poco fastidioso. Es la clasede operación ideal para agilizar con una macro.

Cómo se crea una macro:el grabador

Es muy grande la tentación de ponernos a hablar acá de sentencias, de len-guaje Visual Basic y de otros temas de programación. Pero lo dejamos paramás adelante. Ahora vamos directamente a los hechos:

Cómo se crea una macro: el grabador

15

Las

prim

eras

mac

ros

1

Page 4: Capitulo Gratis Proyectos Con Macros en Excel

Crear una macro PASO A PASO

Tomamos las opciones Herramientas/Macro/Grabar nueva macro. Apareceel cuadro de la Figura 3.

Donde dice Nombre de la macro escribimos OcultarSueldos (o cualquierotro nombre adecuado).

Donde dice Método abreviado apretamos la combinación SHIFT+A. Estasdos teclas, junto con CTRL, servirán luego para ejecutar la macro.

Hacemos un clic en Aceptar.

Figura 3. En este cuadro se indican las opciones previas a la creación de la macro.

Con esto acabamos de encender el grabador de macros. Es como un duendeque tomará nota de todo lo que hagamos a continuación y escribirá la ma-cro equivalente a esas acciones. También aparece la barra de herramientasde la Figura 4. El primer botón de esta barra servirá para apagar el grabadorcuando hayamos terminado.

Figura 4. La barra de herramientas Detener grabación.

El primer botón sirve para apagar el grabador.

PROYECTOS CON MACROS EN EXCEL

16

Page 5: Capitulo Gratis Proyectos Con Macros en Excel

Con el grabador encendido, procedemos a ocultar la columna, tal como con-tamos antes:

• Seleccionamos cualquier celda de la columna C.• Tomamos las opciones Formato/Columna/Ocultar.

Realizando simplemente estas operaciones, el procedimiento estaráfinalizado. Por lo tanto, ya podemos apagar el grabador haciendo clic en elbotón que aparece en la Figura 4 (al apoyar el mouse sobre él, se visualizala leyenda Detener grabación).Hecho esto entonces, ya está creada la macro y podemos hacerla funcionar:apretamos la combinación CTRL+SHIFT+A, que es la que indicamos cuandoiniciamos la grabación. Si todo salió bien, la columna de sueldos habrá que-dado oculta.Ahora tendríamos que crear una segunda macro para volver a mostrarla.Pero antes, vamos a ver qué es exactamente lo que acabamos de hacer.

La macro por dentro: el código

Parece que la macro funciona. Vamos a verla por dentro:

Mostrar el código de una macro PASO A PASO

Tomamos las opciones Herramientas/Macro/Macros. Aparece el cuadro dela Figura 5, con la “lista” de macros disponibles (lista que por ahoraconsta solamente de la macro OcultarSueldos).

Hacemos un clic sobre la macro OcultarSueldos.

Hacemos un clic en Modificar.

La macro por dentro: el código

17

Las

prim

eras

mac

ros

1

Page 6: Capitulo Gratis Proyectos Con Macros en Excel

Figura 5. El cuadro con la lista de macros creadas hasta el momento.

Se abrirá una ventana con un nuevo programa: el Editor de Visual Basic(Figura 6). Hasta ahora no lo habíamos dicho, pero las macros son progra-mas y los programas se escriben en algún lenguaje. En el caso de las ma-cros ese lenguaje se llama Visual Basic.

Figura 6. El Editor de Visual Basic. El panel de la derecha

muestra el código de la macro OcultarSueldos.

PROYECTOS CON MACROS EN EXCEL

18

Page 7: Capitulo Gratis Proyectos Con Macros en Excel

Cada línea de la macro es una instrucción que, traducida a Visual Basic, equi-vale a un comando u operación de Excel. A ver si podemos entenderlo.

Entendiendo el código

El código de una macro GUÍA VISUAL 1

La macro comienza con la instrucción especial Sub, seguida del nombreelegido.Las líneas precedidas por un apóstrofo son comentarios para el progra-mador y no forman parte de la macro.Esta instrucción corresponde a la operación de seleccionar la celda C1 (quefue, justamente, lo primero que hicimos luego de encender el grabador).Esta instrucción oculta las columnas correspondientes al rango seleccionado.La macro termina con la instrucción End Sub.

Dos de las instrucciones de la macro merecen una explicación detallada. Laprimera es:

Range(“C1”).Select

La macro por dentro: el código

19

Las

prim

eras

mac

ros

1

Page 8: Capitulo Gratis Proyectos Con Macros en Excel

Esta instrucción tiene dos partes: el objeto y la acción, separadas por unpunto. Concretamente, el objeto es el rango C1 y la acción es seleccionarese rango. Esta instrucción, entonces, corresponde a la operación de selec-cionar el rango C1. La siguiente instrucción también tiene partes separadas por puntos, pero esun poco más compleja:

Significa que, de la dirección actualmente seleccionada, se toma toda la co-lumna y se le da la propiedad oculta (en inglés, hidden). Esta instrucción po-dríamos considerarla de la forma objeto.propiedad. El objeto es la columna ala cual pertenece la selección actual. La propiedad es su carácter de oculto. Lasestructuras objeto.acción y objeto.propiedad aparecen mucho en Visual Basic.Aunque éste no es un manual de Visual Basic, con un poco de ingenio y ló-gica podemos comenzar a programar. Vamos a hacerlo.

Modificando el código

Nuestra macro tiene dos instrucciones:

• Seleccionar un rango.• Ocultar las columnas correspondientes al rango seleccionado.

Pero según lo que acabamos de decir acerca de objetos, propiedades y ac-ciones, estas dos instrucciones se podrían reducir a una: ocultar las columnascorrespondientes al rango C1. Traducido a Visual Basic sería:

Y, efectivamente, es así. Podemos meternos en el editor, trabajando como sifuera un procesador de textos, y modificar el código reemplazando las dos ins-trucciones en la forma que acabamos de mostrar para que quede como en laFigura 7. Volviendo a Excel, la macro deberá funcionar tan bien como antes.

Range(“C1”).EntireColumn.Hidden = True

Selection.EntireColumn.Hidden = True

PROYECTOS CON MACROS EN EXCEL

20

Page 9: Capitulo Gratis Proyectos Con Macros en Excel

Figura 7. La versión modificada de la macro OcultarSueldos.

Si todo esto es cierto, al oprimir la combinación CTRL+SHIFT+A se ocultará lacolumna C.

Creando una macro en el Editor

Vamos a crear la segunda macro: una que vuelva a mostrar la columna delos sueldos. Pero no vamos a usar el grabador. En la ventana del Editor es-cribimos el código que aparece en la Figura 8.

Figura 8. Esta macro debe hacer visible la

columna C en la planilla de la Figura 2.

Creando una macro en el Editor

21

Las

prim

eras

mac

ros

1

Page 10: Capitulo Gratis Proyectos Con Macros en Excel

¿Se entiende el código? Esta nueva macro es como OcultarSueldos, pero le pu-simos otro nombre y cambiamos el True (en inglés, verdadero) por False (falso).Esta instrucción le da el carácter “falso” a la propiedad “oculta” del objeto“columnas correspondientes al rango C1”. Se tarda más en decirlo que enentenderlo. Para hacer funcionar esta segunda macro tenemos que asignar-le una combinación de teclas:

Asignar un teclazo a una macro PASO A PASO

Tomamos las opciones Herramientas/Macro/Macros. Vuelve a aparecer elcuadro de la Figura 9, con la lista de macros disponibles. Primer Eureka:en la lista aparece la macro MostrarSueldos.

Hacemos un clic sobre la macro MostrarSueldos.

Hacemos un clic en Opciones. Aparece el cuadro de la Figura 10.

Donde dice Tecla de método abreviado indicamos SHIFT+S (o cualquierotra combinación que nos parezca adecuada).

Hacemos un clic en Aceptar.

Hacemos un clic en Cancelar (ya no tenemos nada que hacer acá).

Figura 9. La lista de macros disponibles incluye ahora a MostrarSueldos.

PROYECTOS CON MACROS EN EXCEL

22

Page 11: Capitulo Gratis Proyectos Con Macros en Excel

Figura 10. Acá asignamos una combinación de teclas para la ejecución de la macro.

Veamos si esto funciona: apretamos la combinación CTRL+SHIFT+S. SegundoEureka: reaparece la columna C. Y si ejecutamos sucesivamente las dos ma-cros (con CTRL+SHIFT+S y CTRL+SHIFT+A) veremos cómo la columna de lossueldos aparece y desaparece. Y aún no han visto nada.

Una macro, dos operaciones

Todavía podemos ir un paso más allá. Sería mucho más cómodo trabajar conuna única macro. Ocultaría la columna C si estuviera visible, y la haría visiblesi estuviera oculta. Esta macro debería ser como la de la Figura 11.

Figura 11. Esta macro reemplaza a las dos que creamos antes. Sirve

tanto para ocultar la columna C como para hacerla visible.

Una macro, dos operaciones

23

Las

prim

eras

mac

ros

1

Page 12: Capitulo Gratis Proyectos Con Macros en Excel

Esta nueva macro usa una instrucción nueva: la condicional If, que en inglésquiere decir si. Las instrucciones que aparecen en el código de la Figura 11 po-drían traducirse así:

• Si la columna correspondiente al rango C1 está a la vista, entonces (en in-glés, then)...

• ...ocultar esa columna.• Si no (en inglés, else), es decir, si está oculta...• ...mostrarla.• Fin (end) de la condicional.

Las instrucciones de la forma If... Then... Else... se llaman condicionales por-que ejecutan una u otra operación según el cumplimiento o no de una con-dición. Este tipo de estructura aparece en muchos lenguajes y Visual Basicno es la excepción.

Un caso más complejo

Del ejemplo anterior aprendimos que las instrucciones que forman parte deuna macro pueden ser de dos tipos:

• Las que equivalen a los comandos de Excel. Por ejemplo, seleccionar unrango u ocultar una columna.

• Instrucciones especiales, para controlar la operación de la macro. Porejemplo, la instrucción condicional If... Then... Else...

Las instrucciones del segundo tipo son más complejas, porque no podemosobtenerlas automáticamente del grabador, pero nos permiten crear macrosmás poderosas.Veremos ahora un ejemplo que nos permitirá comprender este conceptocon mayor claridad. Sea el recibo de la Figura 12. Queremos imprimir ciencopias de este recibo, numeradas correlativamente de uno en uno. El núme-ro de recibo debe aparecer en la celda F4.

PROYECTOS CON MACROS EN EXCEL

24

Page 13: Capitulo Gratis Proyectos Con Macros en Excel

Figura 12. Tenemos que imprimir cien copias de este

recibo, numeradas correlativamente.

Esto puede hacerse con la macro cuyo código aparece en la Figura 13.

Figura 13. Esta macro imprime las cien copias del recibo anterior.

En esta macro aparecen varias instrucciones nuevas. Pero no es difícil dedu-cir qué es lo que hace cada una. Por ejemplo, la instrucción ActiveWindow.Se-lectedSheets.PrintOut imprime la planilla, es decir, el recibo. En la misma ins-trucción se dice que se debe imprimir una copia por vez.La impresión debe repetirse cien veces, cambiando el número de recibo. Pa-ra eso necesitamos un ciclo: una forma de indicar que una instrucción se eje-cuta varias veces, cíclicamente. En la macro usamos uno de los ciclos mássimples: For... Next.

Un caso más complejo

25

Las

prim

eras

mac

ros

1

Page 14: Capitulo Gratis Proyectos Con Macros en Excel

Las instrucciones contenidas en el ciclo se ejecutan mientras una variable auxi-liar cambia su valor desde un valor inicial hasta alcanzar un máximo. En la ma-cro de la Figura 13, la variable auxiliar la llamamos i y su valor comienza en 1 ytermina en 100. Podemos imaginar que i es como un contador que controlacuántas veces se ejecuta una tarea.Por otra parte, la instrucción Range(“F4”).Value = i escribe el valor de la va-riable i en la celda F4 de la planilla. Aquí aparece otra vez la estructura ob-jeto.propiedad: del rango F4 tomamos su propiedad valor (en inglés, value).Es decir que la variable i sirve tanto para controlar que la impresión se rea-lice cien veces como para numerar cada copia.Esta macro la vamos a escribir sin ayuda del grabador. Necesitamos crearprimero una ventana de texto en el Editor de Visual Basic. Comenzandodesde el principio:

Crear una macro en el Editor PASO A PASO

Tomamos las opciones Herramientas/Macro/Editor de Visual Basic. Estoabre el Editor, que es un programa aparte.

Una vez dentro del Editor, tomamos las opciones Insertar/Módulo. Se abreuna ventana de texto donde debemos escribir el código de la Figura 13.

Cerramos el Editor y volvemos a Excel.

A esta macro le podemos asignar un teclazo tal como hicimos en los ejem-plos anteriores. Como al ejecutarla se imprimirán cien copias de la planillade la Figura 12, conviene reemplazar el número 100 del código por otromás razonable (por ejemplo, 5) para comprobar que la macro funciona co-rrectamente.En los próximos capítulos veremos más instrucciones especiales con las cualescrear macros más útiles, versátiles, interesantes y poderosas.

PROYECTOS CON MACROS EN EXCEL

26