15
CREAR UNA MACRO MANUALMENTE Se debe ingresar a la aplicación Microsoft Visual Basic, e se puede hacer: Combinando las teclas Alt+ F11 ó Haciendo clic sobre el botón Visual Basic ó haciendo clic sobre el botón Ver código

Tema 23 macros p2

  • Upload
    ceboga

  • View
    300

  • Download
    6

Embed Size (px)

Citation preview

Page 1: Tema 23 macros p2

CREAR UNA MACRO MANUALMENTESe debe ingresar a la aplicación Microsoft Visual Basic, esto se puede hacer:

Combinando las teclas Alt+ F11 ó Haciendo clic sobre el botón Visual Basic

ó haciendo clic sobre el botón Ver código

Page 2: Tema 23 macros p2

PASOS PARA CREAR UNA MACRO

1- Acceder al Editor de Macros. 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ódulosc) 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.

Page 3: Tema 23 macros p2

DÓNDE COLOCAR O ESCRIBIR LA MACRO

Depende de lo que debe ejecutar la 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.

Page 4: Tema 23 macros p2

ENTORNO DEL EDITOR DE VISUAL BASIC

Barra de menú: Permite acceder a las diversas opciones y comandos del propio editor.

Barra de botones: Permite acceder de una manera más rápida a las opciones más comúnmente utilizadas

Proyecto. Aquí se encuentran los módulos, las hojas utilizadas en los procedimientos/funciones, etc.

Page 5: Tema 23 macros p2

Propiedades: Muestra las propiedades del objeto seleccionado. En la imagen se puede ver las propiedades del objeto Hoja1 y que es una hoja de cálculo (Worksheet).

En la parte derecha se encuentra el área para redactar el código de los procedimientos ó funciones.

En la parte superior existen dos cuadros combinados donde podemos seleccionar los objetos y los métodos de ese objeto respectivamente.

Page 6: Tema 23 macros p2

CÓDIGOS MÁS COMUNES

Trasladarse a una Celda: Range("A1").SelectEscribir en una Celda: Activecell.FormulaR1C1=“Hola"Letra Negrita: Selection.Font.Bold = TrueLetra Cursiva: Selection.Font.Italic = TrueLetra Subrayada: Selection.Font.Underline = xlUnderlineStyleSingleCentrar Texto: With Selection

.HorizontalAlignment = xlCenterEnd With

Alinear Izq” o derecha: Igual al anterior , sólo se modifica .HorizontalAlignment =

xlLeft ó xlRightTipo de Letra(Fuente): With Selection.Font

.Name = "AGaramond"End With

Tamaño de Letra: With Selection.Font .Size = 15End With

Copiar: Selection.CopyPegar: ActiveSheet.PasteCortar: Selection.CutInsertar Fila: Selection.EntireRow.InsertEliminar Fila: Selection.EntireRow.DeleteInsertar Columna: Selection.EntireColumn.InsertEliminar Columna: Selection.EntireColumn.Delete

Page 7: Tema 23 macros p2

Aplicación:

A partir del Módulo1 generar las siguientes macros:

Generar una Macro que al combinar las teclas Ctrl + J, escriba en la celda C1 Ejemplo 2 y lo ponga negrita.

Generar una Macro que al combinar las teclas Ctrl + Ñ escriba en la celda B11 Ejemplo 3 y lo Centre

Generar una Macro que al combinar las teclas Ctrl + O escriba Ejemplo 4 y cambie el tamaño de la letra a 20 puntos.

Page 8: Tema 23 macros p2

CÓMO EJECUTAR UNA MACRO

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

Page 9: Tema 23 macros p2

2- Al presionar un botón de 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.

Se dibuja 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 instruccionesEnd Sub

Page 10: Tema 23 macros p2

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 instruccionesEnd 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)

Page 11: Tema 23 macros p2

REFERENCIAS

Veamos los diferentes modos de referirnos a libros, hojas y celdas: Workbook : Libro de trabajo.ActiveWorkbook: Libro activoWorkbooks(2): El segundo libro abiertoWorkbooks("Libro1.xls"): Llamada al libro de nombre Libro1

WorkSheet: Hoja de trabajoActiveSheet: Hoja activaSheets("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

Page 12: Tema 23 macros p2

Range o Cells: rango o celdaActivecell : la celda activaRange("A2") : la celda A2Cells(2,1): la celda de fila 2 y columna 1 = A2 .Cells(3,"D"): la celda de fila 3 y col D = D3

*-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 inclusiveRange("E:E") : columna ERange("2:2") : fila 2[A3] : la celda A3Range("A" & fila) : celda de la col A y fila según valor de variable

Page 13: Tema 23 macros p2

TRABAJANDO CON LIBROS En esta sección aparecerán algunas de las instrucciones 'básicas' para ser utilizadas 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.

1-Abrir un segundo libro:

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

2-Activar un segundo libro:

Workbooks("LibroOriginal.xlsm").Activate 'o también: Workbooks(1).Activate , en este caso es el 1er libro abierto.

IMPORTANTE: Al abrir un libro, éste pasa a ser el libro activo. Por lo tanto no es necesario activarlo nuevamente.

Page 14: Tema 23 macros p2

3-Cerrar un libro Sin guardar cambios:

Workbooks("Libro1.xls").Close False 'o también: ActiveWorkbook.Close False

Guardando los cambios:

ActiveWorkbook.SaveActiveWorkbook.Close

'o en 1 sola línea:

ActiveWorkBook.Close True