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 macrobá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, 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:
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
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
fichaProgramador
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.
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
'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:
Las rutinas para este caso son como el siguiente ejemplo:
Sub nombre_rutina()
'nuestras instrucciones
End Sub
'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)
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.
Workbook : Libro
de trabajo.
ActiveWorkbook
: Libro
activo
Workbooks(2) : El segundo libro abierto
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.
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 .
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
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
No hay comentarios:
Publicar un comentario