Informática - Macros en Excel - VBAComenzando con macros de Excel M as informaci on en:...

14
Inform´ atica Macros en Excel - VBA Miguel ´ A. Mart´ ınez del Amor Carmen Graciani D´ ıaz Luis Valencia Cabrera Dpto. Ciencias de la Computaci´ on e Inteligencia Artificial Universidad de Sevilla Luis Valencia Cabrera Inform´ atica

Transcript of Informática - Macros en Excel - VBAComenzando con macros de Excel M as informaci on en:...

Page 1: Informática - Macros en Excel - VBAComenzando con macros de Excel M as informaci on en: [exceltotal.com] [excel-avanzado.com] Al margen de la grabaci on autom atica de macros, podemos

InformaticaMacros en Excel - VBA

Miguel A. Martınez del AmorCarmen Graciani DıazLuis Valencia Cabrera

Dpto. Ciencias de la Computacion e Inteligencia ArtificialUniversidad de Sevilla

Luis Valencia Cabrera Informatica

Page 2: Informática - Macros en Excel - VBAComenzando con macros de Excel M as informaci on en: [exceltotal.com] [excel-avanzado.com] Al margen de la grabaci on autom atica de macros, podemos

¿VBA?

Nos adentramos en el mundo de las macros en Excel, en elcontexto de VBA. ¿Que es VBA?

Significa Visual Basic para Aplicaciones

Se trata de un lenguaje de programacion para el desarrolloVisual Basic integrado en aplicaciones como Excel u otras deOffice que proporcionen una biblioteca de objetos.

Nos permite automatizar todo tipo de tareas a traves demacros.

Luis Valencia Cabrera Informatica

Page 3: Informática - Macros en Excel - VBAComenzando con macros de Excel M as informaci on en: [exceltotal.com] [excel-avanzado.com] Al margen de la grabaci on autom atica de macros, podemos

¿Solamente para Excel?

Con las macros en VBA no solamente podemos trabajar con Excel,sino tambien con cualquier otra aplicacion que proporcione unabiblioteca de objetos accesible:

Luis Valencia Cabrera Informatica

Page 4: Informática - Macros en Excel - VBAComenzando con macros de Excel M as informaci on en: [exceltotal.com] [excel-avanzado.com] Al margen de la grabaci on autom atica de macros, podemos

¿Biblioteca de objetos?

La biblioteca de objetos, o modelo de objetos, permite accederdesde codigo a las distintas funcionalidades y caracterısticascon las que solemos trabajar a mano en Excel.

Estos elementos estan accesibles desde VBA, a traves denumerosos objetos que podemos consultar y manipular, ynumerosas funciones que podemos invocar.

Solamente en Excel, ya existen mas de 100 tipos de objetos quemanipular. A continuacion analizamos 4 de las colecciones deobjetos mas importantes.

Luis Valencia Cabrera Informatica

Page 5: Informática - Macros en Excel - VBAComenzando con macros de Excel M as informaci on en: [exceltotal.com] [excel-avanzado.com] Al margen de la grabaci on autom atica de macros, podemos

Biblioteca de objetos de Excel

Esta es la jerarquıa principal de objetos de Excel:

Estos elementos estan accesibles desde VBA

Luis Valencia Cabrera Informatica

Page 6: Informática - Macros en Excel - VBAComenzando con macros de Excel M as informaci on en: [exceltotal.com] [excel-avanzado.com] Al margen de la grabaci on autom atica de macros, podemos

¿Macros Excel?

Vale, nos situamos en un contexto del lenguaje VBA empleadodentro de Excel, pero... ¿que es eso de una macro?

Es la unidad basica que nos permite automatizar tareas, uncomando al que dotamos de un codigo, y que podemos lanzarcuando lo solicitemos, de modo que ejecute la secuencia deinstrucciones de su codigo.

Una explicacion detallada se encuentra en este interesantetutorial de introduccion a las macros.

Un primer paso para generar nuestras macros puede ser laopcion de grabar macro. Probemos para recordar y despuesconsultemos el codigo generado. Recuerde que debe tenerhabilitada la pestana del desarrollador.

Luis Valencia Cabrera Informatica

Page 7: Informática - Macros en Excel - VBAComenzando con macros de Excel M as informaci on en: [exceltotal.com] [excel-avanzado.com] Al margen de la grabaci on autom atica de macros, podemos

Visualizar el codigo de VBA en Excel

Ok, he seguido paso a paso las instrucciones y grabado una macro.¿Como veo lo que he generado?

Mediante la combinacion de teclas Alt+F11 podra accedersiempre al editor de VBA de Excel.

Luis Valencia Cabrera Informatica

Page 8: Informática - Macros en Excel - VBAComenzando con macros de Excel M as informaci on en: [exceltotal.com] [excel-avanzado.com] Al margen de la grabaci on autom atica de macros, podemos

Un ejemplo basico de macro...

Sub: definicion de macro

Macro1: nombre macro

Select: seleccionarango/celda

ActiveCell: celdaseleccionada

FormulaR1C1: formula

Sub Macro1 ()

’ Macro1 Macro

Range("C2").Select

ActiveCell.FormulaR1C1 = "Ah"

Range("C3").Select

ActiveCell.FormulaR1C1 = "vale"

Range("C4").Select

End Sub

Luis Valencia Cabrera Informatica

Page 9: Informática - Macros en Excel - VBAComenzando con macros de Excel M as informaci on en: [exceltotal.com] [excel-avanzado.com] Al margen de la grabaci on autom atica de macros, podemos

Comenzando con macros de Excel

Mas informacion en: [exceltotal.com] [excel-avanzado.com]

Al margen de la grabacion automatica de macros, podemoscrearlas desde el Editor de Visual Basic, accesible desde lapestana del desarrollador.

Una vez ahı, podemos proceder a crear un modulo quecontenga nuestras macros, y crear una primera macro:

Luis Valencia Cabrera Informatica

Page 10: Informática - Macros en Excel - VBAComenzando con macros de Excel M as informaci on en: [exceltotal.com] [excel-avanzado.com] Al margen de la grabaci on autom atica de macros, podemos

Detalles y buenas practicas

Conviene comentar el codigo que vamos escribiendo.

Debemos distinguir entre propiedades y metodos, es decir,entre elementos que identifican el estado y las acciones sobrelos mismos.

Este enlace ilustra muy bien una breve introduccion al uso deelementos basicos de ambos tipos en una hoja Excel.

Podemos acceder y manipular los elementos basicos de labiblioteca de objetos

Mas informacion sobre: [hojas y libros] [el objeto Application]

Conforme comience a escribir codigo, ira cometiendo errores.Puede tratar de corregirlos a traves de la depuracion, para loque dispone de algunas opciones interesantes

Luis Valencia Cabrera Informatica

Page 11: Informática - Macros en Excel - VBAComenzando con macros de Excel M as informaci on en: [exceltotal.com] [excel-avanzado.com] Al margen de la grabaci on autom atica de macros, podemos

El lenguaje VBA (I)Elementos basicos

Variables y tipos. (Ver referencia de los tipos)

Cadenas (texto) y funciones sobre ellas

Fechas y horas

Arrays (listas unidimensionales de elementos)

Funciones basicas

Mas sobre funciones definidas por el usuario

Devolucion de errores

Uso del With

Luis Valencia Cabrera Informatica

Page 13: Informática - Macros en Excel - VBAComenzando con macros de Excel M as informaci on en: [exceltotal.com] [excel-avanzado.com] Al margen de la grabaci on autom atica de macros, podemos

El lenguaje VBA (II)Instrucciones repetitivas

Instrucciones repetitivas

For-To-Next [Mucho mas]

For-Each

Acceso a celdas en bucle

Do-While

Luis Valencia Cabrera Informatica

Page 14: Informática - Macros en Excel - VBAComenzando con macros de Excel M as informaci on en: [exceltotal.com] [excel-avanzado.com] Al margen de la grabaci on autom atica de macros, podemos

Asignacion de formulas

No solamente se pueden cambiar valores y formatos de lasceldas, tambien asignar formulas a las mismas medianteFormula o FormulaR1C1.

En las formulas podemos emplear funciones, mediante sunombre en ingles.

Correspondencia entre funciones en espanol y en ingles.

Otra alternativa es asignar una funcion nombrada como en lainstalacion local de nuestro Excel, mediante FormulaLocal oFormulaR1C1Local, como se detalla aquı.

Range ( ”A5” ) . Formula = ”=AVG(A4 , A10 ) ”Range ( ”A5” ) . FormulaR1C1 = ”=AVG( R4C1 , R10C1 ) ”S e p a r a d o r = A p p l i c a t i o n . I n t e r n a t i o n a l ( x l L i s t S e p a r a t o r )Range ( ”A5” ) . F o rm u la L oc a l = ”=PROMEDIO(A4” & S e p a r a d o r & ”A10 ) ”Range ( ”A5” ) . FormulaR1C1Local = ”=PROMEDIO( F4C1” & S e p a r a d o r & ”F10C1 ) ”

Luis Valencia Cabrera Informatica