Paul Leger http://pleger.cl Macros en Excel Curso Excel Avanzado: Excel con Macros Sesión 1: 1) Activar modo "Programador" en Excel 2) Habilitar el uso de macros en Excel 3) Macros de pulsaciones (ie. macros creadas automáticamente) clase 2: 4) Breve introducción a la programación 5) Creando una simple macro 6) Modificando celdas con macros clase 3: 7) Agregando y programando botones en Excel 8) Tomando decisiones con macros (IF) clase 4: 9) Recorrer una tabla con macros (FOR) 10) Cambiando formatos y colores de las celdas con macros Paul Leger http://pleger.cl
¡¡Advertencia!! Para este curso, se supone que el estudiante tiene conocimiento básico de programación (en particular Python) Básico: input/output, condicional, ciclos, listas
Tablas dinámicas y sus limitaciones Tablas dinámicas son útiles para generar diferentes tipos de reportes. Nota: si usted no conoce tablas dinámicas, estúdiela Sin embargo, tablas dinámicas no pueden generar todos los informes requeridos
Macros Una macro es un pedazo de código escrito en un lenguaje de programación llamado Visual Basic (VB) Las macros permiten interactuar/modificar con documentos de Office (ej. Libro de Excel) O modificar la misma herramienta de Office (ej. Crear su propia versión de Excel) En todas las herramientas de Office se pueden ocupar macros
Habilitar el Modo “Programador de Macros” En office 2007: -> Símbolo de Excel -> Opciones -> Mas frecuentas -> Habilitar fichas del desarrollador En office 2010: -> Símbolo de Excel -> Opciones -> Personalizable «ribbon» -> Habilitar «desarrollador» NOTA: En otras herramientas office, también es posible habilitar el modo macros
Aquí nos concentraremos Modo Programador Aquí nos concentraremos
Macros & Visual Basic La tableta de programador permite la administración Macros Se puede crear, guardar, editar, borrar macros Las macros quedan incluidas dentro del archivo Excel usado (o dentro del mismo programa Excel). Recomendable: guardarla en el archivo en el archivo Excel
Permitir usar Macros en Excel Las macros pueden ejecutar programas maliciosos (algunos virus vienen por acá), Excel no las permite por omisión. Así que debemos habilitarlas ¡NO HABRÁ EXCEL CON MACROS DE LUGARES DESCONOCIDO!
Un Ejemplo de Macro Un botón que muestra el valor de la celda «A1» Mirar Pizarra Sub Button1_Click() MsgBox ("El Dato es " & Cells(1, 1).Value) End Sub
Antes de programar de verdad… Veamos algo más sencillo MACROS DE PULSACIONES (Códigos que representan lo que un usuario hizo durante un periodo de tiempo en Excel)
Macro de Pulsaciones Excel permite crear macros automáticamente, es decir, genera automáticamente código de Visual Basic Por lo general, el código generado es sumamente enredado. No Reemplazan al programador de macros
Ejemplo de Macro de Pulsación Una macro que centre y ponga con negrita estas Celdas Nombre Apellido Pat Apellido Mat Nota Preguntará por el atajo/shortcut de la macro Nombre Apellido Pat Apellido Mat Nota Detener la grabación de la macro
Como ver el código de una Macro Podemos ver los códigos de las macros Podemos ver la lista de macros que hemos desarrollado
Código Generado Por Una Macro de Pulsación Sub Macro1() ' ' Macro1 Macro ' Keyboard Shortcut: Ctrl+t With Selection .Font.Bold = true .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .ShrinkToFit = True .MergeCells = False End With End Sub Shortcut de la macro Selección de celdas Font negrita Horizontalmente centrado Verticalmente abajo Salto de linea Angulo del texto Reducir al texto Combinar celdas ¡NO SE ASUSTE! USTED NO ESCRIBIRÁ CÓDIGO TAN COMPLEJO
Ejercicio Cree una macro de pulsación que ponga en cursiva y de color rojo las letras de la siguiente fila NOTA: Para probar su macro, recuerde el shortcut/atajo asignado y deshaga los cambios antes de ejecutar la macro nuevamente Nombre Apellido Pat Apellido Mat Nota
¿Cómo guardar un archivo Excel que soporte macros? Un archivo debe ser guardado como: «Soporte para macros» o «Macros Habilitadas» La extensión de este archivo debe ser: «.XLSM»
Utilidad de Macros de Pulsación Para hacer procesos repetitivos y tediosos en un solo paso Mire la pizarra
Ejercicios de Macros pulsaciones: Una macro que asigna el formato de número (y color de fondo amarillo) a la celda 2,2 Una macro que formatee el texto con negrita a todas las celdas de la fila 2 Que elimine la última columna y mueva la tercera columna al final NIVEL NINJA. Una macro que formatee el texto con negrita a cualquier fila seleccionada NOTA: NO OLVIDE PARAR LA GRABACIÓN CUANDO TERMINE HACER LA OPERACIÓN
Un simple programa en Visual Basic Dim numero1 as Integer Dim numero2 as Integer Dim resultado as Integer numero1 = 2 numero2 = 5 resultado = numero1 + numero2 MsgBox (resultado) variables operaciones Muestra el resultado
Variables Las variables pueden contener valores numéricos enteros y/o decimales, o pueden contener incluso texto Ejemplos: variable1 = 3 variable2 = 4.1 variable3 = «texto»
Declaraciones de variables A diferencia de Python, toda variable debería ser declarada antes de ser usada. Esta debe ser declarada con su tipo correspondiente (Integer, Double, String) Ejemplos: Dim variable1 as Integer ‘Es un entero Dim variable2 as Double ‘Es un decimal Dim variable3 as String ‘Es un texto
Convierte de numero a texto Instrucciones Algunas instrucciones permiten interacciones con Excel: MsgBox(MENSAJE). Muestra un mensaje de Texto como «popup» en Excel. Ejemplos: MsgBox(«Hola») MsgBox(«Hola, el numero es » + Str(3)) MsgBox («4 + 7 =« + Str(4 + 7)) Convierte de numero a texto ¿Qué hace?
Creando una Macro personalizada
Ejercicio 1 Cree una macro y escriba el siguiente código: Dim numero1 as Integer Dim numero2 as Integer Dim resultado as Integer numero1 = 2 numero2 = 5 + numero1 resultado = numero1 + numero2 + 12 MsgBox (resultado) Luego ejecuten la macro desde
Celdas con una macro Cells(i,j).Value: contiene el valor de la celda de la fila i de la columna j. Por ejemplo: Dim var1,var2 as integer var1 = cells(1,1).value var2 = var1 + 5 MsgBox(«el valor es :» + str(var2))
Ejercicio 2 Crear una macro que muestre el siguiente texto. El área de una circunferencia y el volumen de una esfera de radio que se encuentra en celda (1,1).
Modificando celdas con una macro Es posible cambiar los valores de una celda de una tabla. Ejemplo: Dim v1 as Double v1 = cells(2,3).Value cells(1,4).Value = v1 + cells(5,8).Value
Modificando celdas con una macro (3/3) Es posible interactuar con los valores de las celdas de diferentes hojas escribiendo Sheets(«nombre de la hoja») antes de escribir Cells. Por ejemplo: Dim v1 as Integer v1 = Sheets(«Hoja 1»).Cells(1,1).Value Sheets(«Hoja 3»).Cells(1,1).Value = v1 + 4
Ejercicios: Escriba una macro que… (No olvide grabar su archivo con soporte de macros) tome los valores de las celdas 1,1 y 1,2 y muestre la suma de esos valores en la celda 1,3 multiplique los valores de las celdas 1,1 de las primeras tres hojas. El resultado debe ser mostrado con un «pop up» (NIVEL NINJA) resuelva una ecuación cuadrática (a*x2 + b*x + c = 0). Los valores a, b y c están en las celdas 1,1 y 1,2 y 1,3. Las soluciones deben ser mostrados en las celdas 2,1 y 2,2. NOTA: La función para obtener la raíz cuadrada de un valor es sqr(x). Por ejemplo Dim a,b as Double a = 9 b = sqr(a) MsgBox(b) Esto muestra 3
Botones: Agregando botones (1/2)
Botones: Agregando botones (2/2) Asigne y modifique la macro con el código que se ejecutará cuando se pulse el botón
Ejercicios Escriba la siguiente tabla: Nombre - Nota1 - Nota2 - Nota3 – Promedio Paul 6.7 4.5 4.5 Pedro 6.0 6.0 6.0 Jose 5.5 6.0 4.6 Cree un botón que escriba el promedio de cada alumno