Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Macros

1,865 views

Published on

  • Be the first to comment

Macros

  1. 1. MACROS
  2. 2. MACROSCuando trabajamos con un libro personalizado, es decir, que nos hemos definidocon una serie de características específicas como puedan ser el tipo de letra, elcolor de ciertas celdas, los formatos de los cálculos y características similares,perdemos mucho tiempo en formatear todo el libro si disponemos de muchashojas. Con las macros lo que se pretende es automatizar varias tareas yfusionarlas en una sola, añadiendo por ejemplo un botón en nuestro libro que alpulsar sobre él realice todas esas tareas.
  3. 3. GRABAR UNA MACROLa forma más fácil e intuitiva de crear macros es crearlas mediante el grabadorde macros del que dispone Excel. Este grabador de macros te permite grabar lasacciones deseadas que posteriormente las traduce a instrucciones en VBA, lascuales podemos modificar posteriormente si tenemos conocimientos deprogramación.Cuando grabe una macro, la grabadora de macros graba todos los pasosnecesarios para completar las acciones que desea grabar.Para grabar una macro debemos seguir los siguientes pasos:Acceder a la pestaña Vista y despliega el submenú MacrosSeleccionar la opción Grabar macro...Además de esta opción en el menú podemos encontrar las siguientesopciones: Ver Macros... Donde accedemos a un listado de las macros creadasen ese libro.Usar referencias relativas - Con esta opción utilizaremos referencias relativaspara que las macros se graben con acciones relativas a la celda inicialseleccionada.
  4. 4. Antes de realizar una Macro es muy importante hablar sobre sus seguridades. Se puedegrabar las macros desde la ficha Programador, si no está disponible, haga lo siguientepara mostrarla: Haga clic en el Botón Microsoft Office y, a continuación, haga clic enOpciones de Excel. Opción Más frecuentes Active con un visto la opción Como sevisualiza:De clic en el Botón Aceptar. Se visualiza la pestaña Programador que contiene:
  5. 5. El grupo CódigoVisual Basic y Macros El grupo Controles El grupo XML El grupo Modificar
  6. 6. SEGURIDAD EN MACROS Para establecer el nivel de seguridad de manera que estén habilitadas temporalmente todas las macros, haga lo siguiente: En la ficha Programador, en el grupo Código, haga clic en Seguridad de macros. Se visualiza:En Configuración de macros, haga clic enHabilitar todas las macros (norecomendado; puede ejecutarse códigoposiblemente peligroso) y, a continuación,haga clic en Aceptar. Nota Para ayudar aevitar que se ejecute código potencialmentepeligroso, recomendamos que vuelva acualquiera de las configuraciones quedeshabilitan todas las macros cuandotermine de trabajar con las macros.
  7. 7. En la ficha Programador, en el grupo Código, haga clic en Grabar macro. En el cuadro Nombre de la macro,escriba un nombre para la macro.Nota El primer carácter del nombre de la macro debe ser una letra. Los caracteres siguientes pueden serletras, números o caracteres de subrayado. No se permiten espacios en un nombre de macro, caracteresespeciales ni palabras reservadas; puede utilizarse un carácter de subrayado como separador de palabras. Siutiliza un nombre de macro que también es una referencia de celda, puede aparecer un mensaje indicandoque el nombre de la macro no es válido.En la lista Guardar macro en, seleccione el libro en el que desea almacenar la macro.Sugerencia Si desea que la macro esté disponible siempre que utilice Excel, seleccione Libro de macrospersonal. Cuando se selecciona Libro de macros personal, Excel crea un libro oculto de macros personal(Personal.xlsb),. En Microsoft Windows XP, este libro se guarda en la carpeta C:Documents andSettingsnombre de usuarioDatos de programaMicrosoftExcelXLStart para que se pueda cargarautomáticamente cada vez que se inicia Excel. En Microsoft Windows Vista, este libro se guarda en la carpetaC:Usuariosnombre de usuarioDatos de programaMicrosoftExcelXLStart. Si desea que se ejecuteautomáticamente una macro del libro de macros personal en otro libro, también debe guardar ese libro en lacarpeta XLStart, de forma que ambos libros se abran cuando se inicie Excel.1. Para incluir una descripción de la macro, escriba el texto que desee en el cuadro Descripción.2. Haga clic en Aceptar para iniciar la grabación.3. Realice las acciones que desee grabar.4. En la ficha Programador, en el grupo Código, haga clic en Detener grabación.Sugerencia También puede hacer clic en Detener grabación en el lado izquierdo de la barra de estado.
  8. 8. EJERCICIOS DE APLICACIÓN Supongamos que todos los días tengo que generar una lista con el movimiento de un comercio de computadoras, para organizar los datos que iremos ingresando, es conveniente escribir los encabezados de cada columna, supongamos que estos encabezados son y quiero que estén como se ve en la figura de arriba, también quiero que estos encabezados aparezcan automáticamente todas las mañanas(al apretar un botón por ejemplo). Como no se nada de programación VBA voy a utilizar la grabadora de macros. Hay tres formas de poner en funcionamiento la grabadora de macros: de cualquiera de estas dos formas aparece el cuadro de1 Vamos a la pestaña Vista y en la sección Macros dialogo Grabar Macrodesplegamos el submenú Macros y dentro de estesubmenú seleccionamos la opción Grabar macro Pulsando el botón que se encuentra en la parte inferior izquierda de la pantalla de Excel( barra de estado) donde podemos dar un nombre a la macro, sin dejar espacios en blanco.
  9. 9. EJERCICIOS DE APLICACIÓN En Método abreviado: elegimos una combinación de la tecla CTRL + "una tecla del teclado", para ejecutar la macro, cuidando de no poner una combinación utilizada por Excel en alguno de sus atajos. En Guardar macro en: podemos elegir guardar la macro en el libro activo, en el libro de macros personal o en otro libro. En Descripción: podemos describir que hace de la macro o cualquier otro comentario. Finalmente pulsamos en aceptar y el botón que estaba en la barra de estado se transforma en el que está marcado por la flecha en la figura, comenzando la grabación.En estas circunstancias, empezando por una celda cualquiera vamos luego a la celda A1, escribimos losencabezados con mayúsculas los centramos, hacemos los recuadros correspondientes y detenemos la grabación (no olvidarse), esto va a generar un código VBA en forma automáticaPara que la macro haga su tarea, se puede:utilizar el método abreviado, que en nuestro caso es CTRL+r.Ir a las pestaña Programador, sección Código y luego pulsaren Macros
  10. 10. EJERCICIOS DE APLICACIÓNluego aparece el cuadro de diálogo Macro, donde aparece lamacro creada, para luego apretar el botón ejecutarTambién con este cuadro de diálogo podemos eliminarmacros.3. La tercera manera de que una macro grabada semanifieste, es creando un botón.Para crear un botón vamos a la pestaña Programador,sección controles y luego pulsamos en el icono InsertarEn los Controles de formulario pulsando donde señala laflecha aparece un puntero en forma de cruz que nospermite colocar el botón en un lugar cualquiera yautomáticamente aparece la ventana Asignar macro dondese puede seleccionar la macro a la que le queremos asignarel botón
  11. 11. EJERCICIOS DE APLICACIÓNaceptamos y le damos un nombre; en nuestro casopodría ser Encabezados.Veremos que cuando el mouse pasa por el botón,este se transforma en una mano, luego hacemos clicy se dispara la macro con el resultado esperado
  12. 12. Practica IGenera las siguientes Macros:Grabe una Macro que se active con Control + b y que esta macro permita abrirun archivo.Grabe una Macro que inserte una tabla con datos.Grabe una Macro que cree un nuevo archivo.Grabe una Macro que ordene alfabéticamente una lista de nombres.Grabe una Macro que imprima un documento.
  13. 13. CODIGOS DE UNA MACRO DE EXCELPara observar los códigos de una macro debemos seguir los pasos:1. En primer lugar seleccione la celda B5 antes de empezar la grabación de la Macro, sevisualiza:
  14. 14. 2. Presione el Botón Grabar Macro del grupo Código MS Excel muestra el cuadro de Dialogo Grabar Macro:3. Ingrese un nombre de la macro por ejemplo saludo4. En la opción Método Abreviado escriba la letra s, por lo tanto lamacro se llamara con Control + s5. En Guardar macro en: Seleccione en el lugar en donde deseaguardar la macro, por ejemplo Este libro.6. En Descripción puede agregar una descripción de lo que hace lamacro, este punto es opcional. Solo le sirve para que ustedrecuerde acerca de lo que hace la macro, pues este código no esinterpretado por el compilador.7. Presione el botón Aceptar. Excel inicia la grabación del la Macro8. Trasládese a la celda A1 y escriba Hola amiguitos, despuéspresione Enter para aceptar el valor en la celda.9. Pare la grabación de la macro presionando el botón DetenerGrabación del grupo Código. Excel ha grabado los pasos y hagenerado un código.
  15. 15. 10. Para visualizar el código generado, presione la tecla Alt + la tecla de función F11(Alt + F11), o de un clic derecho en la hoja de cálculo:11. Seleccione la opción Ver código. También puede acceder al grupo Código, al darclic en la opción Visual Basic
  16. 16. 12. Excel nos traslada al Editor de Visual Basic. Se visualiza:13. Active los siguientes cuadros o ventanas:• De clic en el Menú Ver y elija la opción Explorador de Proyectos• De clic en el Menú Ver y elija la opción Ventana Propiedades14. Del cuadro Proyecto de doble clic en Módulos o simplemente presione el signo de + que aparece en la opción Módulos. Se activara debajo de Módulos la Opción Modulo1.15. De doble clic en Modulo1. Se mostrara en el Editor de Visual Basic el código de la macro que grabamos de la siguiente forma:
  17. 17. 15. De doble clic en Modulo1. Se mostrara en el Editor de Visual Basic el código de lamacro que grabamos de la siguiente forma:Sub saludo() saludo Macro Mi primera macro Autor: Acceso directo: CTRL+s‘ Range("A1").SelectActiveCell.FormulaR1C1 = "Hola amiguitos"End Sub
  18. 18. 16. A continuación se da una explicación de lo que ha hecho Excel:• Sub y End Sub indican el inicio y el final del procedimiento de la macro saludo • Todo lo queaparece con un apóstrofe ´ indica que no se tomara en cuenta que es solo texto o comentariosy ese texto aparece en color verde. • Range("A1").Select Indica que lo primero que hicimos algrabar la macro fue trasladarnos a la celda A1. La orden Range nos permite trasladarnos a unacelda.• ActiveCell.FormulaR1C1 = "Hola amiguitos" Esto indica que se escribirá en la celda en que seencuentra el valor de texto Hola amiguitos. Todo lo que aparece entre comillas siempre será unvalor de texto. La orden ActiveCell.FormulaR1C1 nos permite escribir un valor en la celdaactiva. Para comprender alteraremos el código dentro del editor de Visual Basic.Sub saludo() saludo Macro Mi primera macro Autor: Patricia Acosta Acceso directo: CTRL+s Range("A1").Select ActiveCell.FormulaR1C1 = "Hola amiguitos" Range("B1").Select ActiveCell.FormulaR1C1 = "Bienvenidos al curso de Excel"End Sub
  19. 19. 17. Al alterar el código y cuando regrese a Excel y ejecute la macro con Control + s harálo siguiente:Al alterar el código y cuando regrese a Excel y ejecute la macro con Control + s haráEn A1 escribirá Hola amiguitosEn B1 escribirá Bienvenidos al seminario de Excel.Se visualiza:Sub saludos() saludo Macro Mi primera macro Autor: Patricia Acosta Acceso directo: CTRL+sRange("A1").SelectActiveCell.FormulaR1C1 = "Hola amiguitos" Range("B1").Select ActiveCell.FormulaR1C1 = "Bienvenidos al seminario de Excel"EndEnd SubAl alterar el código y cuando regrese a Excel y ejecute la macro con Control + s hará: EnA1 escribirá Hola amiguitos.En B1 escribirá Bienvenidos al seminario de Excel.
  20. 20. PROGRAMACION VBA PARA EXCELSi bien la grabadora de macros es muy útil y genera un código siempre correcto, tienedos desventajas:1. Genera mas código que el necesario.2. Sólo puede hacer macros con instrucciones secuenciales y sin nada de lógica, o sea que no pueden tomar decisiones ante un evento.Ambas desventajas se pueden solucionar con la programación VBA que quiere decirprogramación visual basic para aplicaciones, lo lamento pero aquí no tenemos masremedio que aprender a programar y eso es lo que van a ir aprendiendo en esteapartado.VBA es una programación que está íntimamente relacionada con los libros y las hojas decálculo y para esto Excel cuenta con un editor de programación donde se pone el código,a este se puede acceder, en Excel 2007, yendo a la pestaña programador y luego a lasección código donde hacemos clic en Visual Basic
  21. 21. Escribamos el valor 2007 en la elda D8las macros que se escriban aquí,estarán relacionadas con la Hoja1.Comencemos por lo mas simple yescribamos una macro que seleccione lacelda B5 de la Hoja1 del libro VBAProject(Libro2) y si lo queremos borrar
  22. 22. En la programación VBA se trabaja con OBJETOS ( Hojas, celdas, Rangos, etc) que como todo objeto,tiene propiedades, por ejemplo el objeto celda pude tener la propiedad de alto, ancho, estarseleccionada, tener un valor, o no tener ninguno, etcEn los códigos que hemos escrito tenemos los objetos Range("B5") ( celda B5) con la propiedad deestar seleccionada y el objeto Range("D8") ( celda D8) con la propiedad de tener un número (2007) ydespués estar vacía.CODIGOS MAS SIMPLES PARA EMPEZAR1-Seleccionar una CeldaRange("A1").Select2-Escribir en la celda que está seleccionada en el momento actualActivecell.FormulaR1C1="Pedro"la combinación los códigos 1 y 2 es equivalente a esta sola línea:Range("A1").Value=" pedro"El uso de FormulaR1C1 sera explicado mas adelante3-Letra NegritaSelection.Font.Bold = True4-Letra CursivaSelection.Font.Italic = True5-Letra SubrayadaSelection.Font.Underline = xlUnderlineStyleSingle
  23. 23. 6-Centrar TextoWith Selection 11-Copiar.HorizontalAlignment = xlCenter Selection.Copy.VerticalAlignment = xlBottom 12-PegarEnd With ActiveSheet.Paste7-Alinear a la izquierda 13-CortarWith Selection Selection.Cut .HorizontalAlignment = xlLeft 14-Ordenar AscendenteEnd With Selection.Sort Key1:=Range("A1"),8-Alinear a la Derecha Order1:=xlAscending, Header:=xlGuess, _With Selection OrderCustom:=1, MatchCase:=False, .HorizontalAlignment = xlRight Orientation:=xlTopToBottomEnd With 15-Orden Descendente9-Tipo de Letra(Fuente) Selection.Sort Key1:=Range("A1"),With Selection Order1:=xlDescending, Header:=xlGuess, _.Font .Name = "Arial" OrderCustom:=1, MatchCase:=False,End With Orientation:=xlTopToBottom10-Tamaño de Letra(Tamaño de Fuente)With Selection.Font .Size = 12End With
  24. 24. 16-BuscarCells.Find(What:="César", After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart,SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False).Activate17-Insertar FilaSelection.EntireRow.Insert18-Eliminar FilaSelection.EntireRow.Delete19-Insertar ColumnaSelection.EntireColumn.Insert20-Eliminar ColumnaSelection.EntireColumn.Delete21-Abrir un LibroWorkbooks.Open Filename:="C:Mis documentosTablas dinamicas.xls"22-Grabar un LibroActiveWorkbook.SaveAs Filename:="C:Mis documentostablas.xls", FileFormat _ :=xlNormal,Password:="", WriteResPassword:="", ReadOnlyRecommended:= _ False, CreateBackup:=False
  25. 25. SIGNIFICADO DE LA FORMULA R1C1La FORMULA R1C1 se emplea para colocar el resultado de una línea de código en la celda queactualmente está activa.Veamos el siguiente caso supongamos que queremos sumar los números de la columna D y que el resultado aparezca en la celda F6 que es la que está seleccionada, el código que se debería escribir es el siguiente El paréntesis destacado en rojo tiene por objetivo cubrir el tango donde están los números a sumar, o sea, desplazarme 2 columnas a la izquierda [-2] con 5 y 2 filas hacia arriba es decir
  26. 26. Estructura de iteración Wile - Wend En este caso sumaremos una cantidad indefinida de números naturales los que introducimos en la columna "D" empezando por la "D1" y finalizando con la introducción del Nº 283226 como se ve en la figura1- Siempre se empieza con Sub seguida del nombre de la macro y 2 paréntesis (Sum()).2- Seleccionamos la celda superior. "D1".3- Asignamos a la variable “sum” (que es en la que quedará contenido el resultado) el valor de la celda superior.4- Esta línea es la condición para entrar o salir del While y quiere decir "mientras la celda activa no este vacía",5- Aquí ya entramos en el While donde hay 2 líneas que se repiten hasta que la condición no se cumpla.6- La primera línea dentro del While hace bajar una posición la celda seleccionada, de esta forma podemos acceder a sucontenido y la segunda agrega este contenido a la variable "sum".7-Con Wend salimos o volvemos a entrar al ciclo según se cumpla o no la condición8- Una vez que salimos del ciclo colocamos el resultado queda en una celda activa.9-Tanbien mostramos el resultado mediante un MsgBox (caja de mensajes)10- Con esta línea se cierra el programa
  27. 27. Estructura de decisión If - Then - ElseLa estructura de decisión se llama así pues puede, luego de evaluar una condición, ejecutar un bloquede código u otro.1- Comparar 2 números ubicados en 2 celdas, y responder, en una tercera celda, si son iguales o noCompararemos los Nº 59 y 63 ubicados en las celdas D1 y E1 respectivamente 1-Título. 2-Si el valor del Nº que está en la celda "D1" es igual al que está en la celda "E1" , entonces se ejercita el código de la línea 3. 3-Se coloca en la celda "D4" el texto "Los valores de D1 y E1 son iguales".. 4-Sino se da la condición de la línea 2 se ejecuta el código de la línea 5. 5 -Se coloca en la celda "D4" el texto "D1 es distinto que E1". 6-Se cierra el If. 7-Se cierra el Sub
  28. 28. Estructura de desición Select-CaseLa estructura de decisión If-Then-Else puede anidarse y como este anidamiento se puede repetir tantas veces comoel problema lo exija, a veces el código suele hacerse confuso y frecuentemente da lugar a errores, en estos casos sepuede recurrir a la estructura de decisión Select-Case.La utilidad esencial de esta estructura se manifiesta cuando los casos que se evalúan son masnumerosos como veremos en el siguiente ejemplo.Introducir en una celda la nota de un alumno y en otra una leyenda que diga si esta aplazado,aprobado y en caso de estar aprobado si su nota fue buena, muy buena, distinguida o sobresaliente,teniendo en cuenta que:
  29. 29. Estructura de decisión Select-CaseAplazado= 1,2,3Aprobado= 4,5Bueno= 6,7Muy bueno= 8Distinguido= 9Sobresaliente= 10se puede responder a estas preguntas aplicando este código
  30. 30. CREANDO FORMULARIOS Y PROGRAMÁNDOLOSAhora aprenderemos a dominar lo máximo de Excel que es crear formularios y programarlos, bueno unformulario es una ventana que se programa por medio de controles y estos controles responden asucesos que nosotros programamos. Todo esto se encuentra dentro de Visual Basic. También cuando de clic en el Formulario USERFORM1 se debe de activar el Cuadro de Herramientas, si no se activa de clic en el Menú Ver y elija la opción Cuadro de Herramientas. Elija del Cuadro de Herramientas el Control Etiqueta el que tiene la A y Arrastre dibujando en el Formulario USERFORM1 la etiqueta. Quedara el nombre Label1, después de un clic en la etiqueta dibujada y podrá modificar el nombre de adentro y pondremos ahí Nombre. Si por error da doble clic en la etiqueta y lo manda a la pantalla de programación de la etiqueta, solo de doble clic en UserForm1 que se encuentra en el Explorador de Proyecto.
  31. 31. CREANDO FORMULARIOS Y PROGRAMÁNDOLOS Ahora de doble clic sobre el control Textbox1 para programarlo y después inserte el siguiente código:Private Sub TextBox1_Change()Range("A9").Select ActiveCell.FormulaR1C1 = Esto indica que se valla a A9 y escriba loTextBox1 End Sub que hay en el Textbox1
  32. 32. CREANDO FORMULARIOS Y PROGRAMÁNDOLOSPrivate Sub TextBox2_Change()Range("B9").SelectActiveCell.FormulaR1C1 = TextBox2End SubPrivate Sub TextBox3_Change() Range("C9").Select ActiveCell.FormulaR1C1 = TextBox2End Sub Private Sub CommandButton1_Click() ‘inserta un renglón Selection.EntireRow.Insert ‘Empty Limpia Los Textbox TextBox1 = Empty TextBox2 = Empty TextBox3 = Empty ‘Textbox1.SetFocus Envía el cursor al Textbox1 para volver a capturar los datos TextBox1.SetFocus End Sub
  33. 33. TRABAJANDO CON FORMULAS Private Sub CommandButton1_Click() Selection.EntireRow.Insert TextBox1 = Empty TextBox2 = Empty TextBox3 = Empty TextBox1.SetFocus End SubPrivate Sub TextBox1_Change() Range("A9").SelectActiveCell.FormulaR1C1 = TextBox1End SubPrivate Sub TextBox2_Change() Private Sub TextBox3_Change()Range("B9").Select Range("C9").SelectActiveCell.FormulaR1C1 = TextBox2 ActiveCell.FormulaR1C1 = TextBox3‘ aquí se crea la Fórmula End SubTextBox3 = Val(TextBox2) * 365 ‘El Textbox3 guardara el total de la multiplicación del Textbox2 por365‘El Comando Val permite convertir un valor de Texto a un ValorNumérico‘Esto se debe a que los Textbox no son Numéricos y debemos deConvertirlosEnd Sub

×