ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Cómo crear una macro para automatizar la tarea con la ayuda de una macro

gersonjoel72Trabajo2 de Julio de 2013

3.500 Palabras (14 Páginas)467 Visitas

Página 1 de 14

MACRO: Una macro es un conjunto de instrucciones escritas en lenguaje Visual Basic (*), que nos permite automatizar ciertas tareas que la aplicación no contempla desde las herramientas de la hoja.

Por ejemplo, si necesitamos que se inserten automáticamente 2 hojas nuevas al abrir un libro, recurriremos a una macro.

Otros casos: completar alguna tarea cada vez que se ingresa un valor en una celda o rango de celdas; realizar un cierto control antes de imprimir, guardar o cerrar el libro, etc. Son todas tareas que pueden ser automatizadas mediante rutinas o macros.

(*) El lenguaje utilizado en Excel es VBA (Visual Basic for Applications)

Cómo se crea una macro: para automatizar una tarea mediante una macro básicamente se necesitan los siguientes elementos:

1- un espacio de trabajo donde escribir las instrucciones o rutinas que harán esas tareas: el Editor de Macros. A este espacio se accede desde menú Herramientas, Macros, Editor o con el atajo de teclado Alt+F11.

En versión 2007, activar la opción Programador de la Cinta de Opciones.

Una vez en ese 'espacio', escribiremos o copiaremos las rutinas en:

a- alguno de los objetos (hoja o libro) que seleccionemos con doble clic en el panel de Objetos que se encuentra a la izquierda del Editor.

b- insertando módulos

c- o insertando formularios personales o Userforms.

2- una acción que hará que la tarea programada se ejecute. A esto llamamos 'Eventos' que inician una macro y pueden ser: abrir o cerrar un libro, entrar o salir de una hoja, cambios o selección de celdas, antes de imprimir o guardar, el 'clic' en un botón de comando, al presionar un atajo de teclado, y otros más.

3- un lenguaje de programación. En Excel utilizamos VBA (Visual Basic para Aplicaciones)

4- Ocasionalmente un formulario donde trabajar para luego volcar los resultados en las hojas: llamados Userforms.

Dónde colocar o escribir la macro: esto dependerá de lo que deba ejecutar nuestra rutina.

Si las instrucciones se deben ejecutar, por ejemplo, al abrir o cerrar un libro, se colocan en el objeto ThisWorkbook (o EsteLibro según la versión).

Si las instrucciones se deben ejecutar al entrar o salir de una hoja o al seleccionar o modificar una celda, se colocan en el objeto Hoja. Estos objetos se encuentran en el margen izquierdo del Editor, en la ventana Proyecto-VBAProyect

Si nuestra rutina será llamada con un botón, atajo de teclado o desde otra rutina, se colocará en un módulo (estando en el Editor, menú Insertar, Módulo).

Las instrucciones para los controles de un formulario o Userforms se colocan en la sección Código del mismo formulario.

Cómo ejecutar una macro: En el punto anterior se menciona que se necesita una 'acción' que dispare o ejecute una macro grabada.

Veamos los distintos casos:

1- Una acción automática resultado de un evento, ya sea a nivel libro, hoja, rango o celda

En este grupo se encuentran las rutinas que se ejecutan en la apertura o cierre de libro, al entrar o salir de una hoja, al seleccionar o cambiar valores en celda …Son las que se colocan en el objeto HOJA o ThisWorkbook, como se menciona en tema anterior

2- Al presionar un botón dibujado en la hoja. Podemos utilizar botones de la barra 'Cuadro de controles o ActiveX' o de la barra 'Formularios'. En versión 2003 se encuentra en Menú Ver, Barras de Herramientas. En versión 2007 desde la ficha Programador

Dibujamos el control en la hoja, ajustamos algunas propiedades como texto, tamaño, ubicación. Al hacer clic derecho sobre el control optamos por 'Ver código' o 'Asignar macro' según qué barra de herramientas hemos utilizado.

a- Cuadro de controles: al optar por 'Ver código' nos llevará al Editor, al objeto HOJA donde se generará automáticamente una rutina con estas 2 instrucciones:

Private Sub CommandButton1_click()

'aquí escribiremos nuestras instrucciones

End Sub

b- Formularios: ya debemos tener lista la rutina en un módulo del Editor y la asignaremos cuando optemos por 'Asignar macro'.

Las rutinas para este caso son como el siguiente ejemplo:

Sub nombre_rutina()

'nuestras instrucciones

End Sub

3- Ejecutar un atajo de teclado: En estos casos tendremos una rutina como la del punto anterior (b) en un módulo del Editor.

Desde la hoja Excel, menú Herramientas, Macros, Macros seleccionarla de la lista. Presionar el botón 'Avanzadas' e ingresar una letra, por ejemplo 't' (sin las comillas)

Nota: Si Excel ya tiene asignada esta letra la reemplazará por Ctrl+Mayúsc +t Esto significa que en el momento que necesitemos que la macro se ejecute presionaremos juntas las teclas Ctrl + t (o Ctrl+Mayusc+t)

4- Desde el menú Herramientas: si no hemos asignado la rutina que se encuentra en un módulo a ningún botón ni a atajo de teclado, la ejecutaremos desde este menú de Excel.

En versión 2007, activar la opción Programador de la Cinta de Opciones.

Referencias: Veamos los diferentes modos de referirnos a libros, hojas y celdas:

Workbook : Libro de trabajo.

ActiveWorkbook : Libro activo

Workbooks(2) : El segundo libro abierto

Workbooks("Libro1.xls") : Llamada al libro de nombre Libro1

Workbooks(milibro)

*-Si el nombre del libro se encuenta en una variable, NO lleva comillas

Previamente asignamos nombre, por ej: milibro=ActiveWorkbook.name

WorkSheet : Hoja de trabajo

ActiveSheet : Hoja activa

Sheets("Enero") : Hoja de nombre 'Enero'

Sheets(3) : Número de hoja según el orden de las pestañas.

[Hoja2] : La 2da hoja según orden de las pestañas

Range o Cells : rango o celda

Activecell : la celda activa

Range("A2") : la celda A2

Cells(2,1) : la celda A2 .

*-Nótese que mientras en Range se introduce la celda en el orden Col,Fila, en Cells es a la inversa: Cells(fila,col)

Range("A5:B10") : rango de celdas desde A5 hasta B10 inclusive

Range("E:E") : columna E

Range("2:2") : fila 2

[A3] : la celda A3

Range("A" & fila) : celda de la col A y fila según valor de variable

Trabajando con Libros

En esta sección aparecerán algunas de las instrucciones 'básicas' para utilizar con LIBROS. Una vez copiada en el Editor, colocar el cursor sobre la palabra en negrita y presionar F1 para acceder a la Ayuda Excel. Allí se encontrarán más explicaciones y ejemplos para cada instrucción.

Nota: Al inicio de esta sección Macros hemos visto las distintas maneras de hacer referencia a Libros, Hojas y Rangos o celdas. A partir de aquí usaré solo el objeto activo considerando que puede usarse algunas de las otras expresiones

1-Abrir un segundo libro:

Workbooks.Open "C:\Mis docu\Libro1.xlsb"

' o también: Application.Workbooks.Open "C:\.....\Libro1.xlsb"

Si el nombre se encuentra en una varible NO lleva comillas (aquí se abre un libro que se encuentra en la misma carpeta que el libro activo. La variable 'libro2' contiene el nombre y la extensión)

Workbooks.Open ThisWorkBook.Path & "\" & libro2

2-Activar un segundo libro:

Workbooks("Libro2.xls").Activate

'o también: Workbooks(2).Activate , en este caso Libro2.xls es el 2do libro abierto

3-Cerrar un libro (sin guardar):

Workbooks("Libro1.xls").Close False 'o

ActiveWorkbook.Close False

4-Cerrar un libro (guardando los cambios):

ActiveWorkbook.Save

ActiveWorkbook.Close

'o en 1 sola línea: ActiveWorkBook.Close True

5-Guardar un libro con otro nombre:

ActiveWorkbook.SaveAs Filename:="C:\Mis doc\Libro1.xls", FileFormat:=xlNormal, Password:="clave", ReadOnlyRecommended:=False

Estas son algunas de las opciones. Si se omiten, escribir la coma, como en el siguiente ejemplo:

ActiveWorkbook.SaveAs Filename:="C:\Mis doc\Libro.xls",,, ReadOnlyRecommended:=False

*- La carpeta y el nombre del libro pueden guardarse en variables, como en este ej:

ruta = ThisWorkbook.Path & "\"

'o quizás: ruta = "C:\"

libro = "LibroCopia.xlsm"

ActiveWorkbook.SaveAs ruta & libro

6-Guardar un libro cuyo nombre será el valor de una celda:

ActiveWorkbook.SaveAs Filename:=Range("A2").Value

7-No mostrar aviso al salir, al eliminar hoja, o cualquier aviso que queremos omitir:

Application.DisplayAlerts= False 'volverla a True al finalizar la macro

8-Deshabilitar la opción de actualizar vínculos al abrir un libro:

Application.DisplayAlerts= False 'volverla a True al finalizar la macro

WorkBooks.Open Filename:= "C:\Mis docu\pruebas.xls", UpdateLinks:= 0

9-No

...

Descargar como (para miembros actualizados) txt (20 Kb)
Leer 13 páginas más »
Disponible sólo en Clubensayos.com