Anda di halaman 1dari 60

Excel VBA

con New Horizons Madrid

Javier Madrigal Rodrguez


MCP ID 3671858 MCT desde 2006
MCITP Sharepoint 2007 y 2010 Exchange 2010
MCTS Windows 7, Configuration
MCAD en Microsoft .NET
NCP ID 10033139 CNI desde 2007
NCLA 10
Certified Novell Engineer
Certified Linux Professional

Excel VBA

Con Javier Madrigal Rodrguez

Temario
1.- Introduccin
2.- Lenguaje VBScript
3.- Modelo de Objetos de Excel

1.- Introduccin
1.1 Definicin de VBA
1.2 Pestaa Programador
1.3 Grabadora de Macros
1.4 Entorno de Programacin
1.5 Guardado de Libros Excel con Macros

1.1. Definicin de VBA


VBA (Visual Basic for Applications) es el sistema de programacin basado
en lenguaje Visual Basic Script, que junto a un modelo de objetos (en este
curso Excel) nos permite ampliar la capacidad y automatizacin de dicho
programa.
VBA = Visual Basic Script (vbscript) + Modelo de Objetos
VBA para Excel = vbscript + Modelo de Objetos de Excel

1.2 Pestaa Programador


La pestaa Programador agrupa todos los
elementos necesarios para programar Macros
y dems elementos VBA.
Por defecto no aparece, hay que configurar
que se vea para poder utilizarla.
En el men Archivo tenemos la configuracin
de Cinta de Opciones.

1.2 Pestaa Programador

1.2 Pestaa Programador

1.2 Pestaa Programador

1. Permite grabar nuevas macros de forma


automtica.
2. Permite ver, ejecutar y configurar macros ya
creadas.
3. Abre el entorno de programacin
4. (Opcional) Activa las referencias relativas a la
hora de grabar macros ANTES de utilizar la
grabadora.

1.3 Grabadora de Macros


Se utiliza para ejecutar acciones mientras el
propio Excel, crea la Macro de forma
automtica.
Se enciende con el botn
de la pestaa
Programador.
Se apaga con el icono
que aparece en
puesto del anterior cuando ya est grabando.

1.3 Grabadora de Macros

1.3 Grabadora de Macros


Demostracin:
Grabar una macro que cambia el formato a ciertas celdas, incluido el
contenido de las mismas.
Ejecucin de la macro en distintas hojas

1.4 Entorno de Programacin


Explorador de
proyectos

Ttulo de la Ventana
De cdigo
Ventana de Cdigo

Ventana Propiedades

1.4 Entorno de Programacin

Examinador de
Objetos

Ejecutar, pausar y
parar la macro activa

Cambiar a Excel
Macro Activa (tiene el cursor)

1.4 Entorno de Programacin


Demostracin:
Utilizar el entorno de programacin para manejar mdulos y objetos de
Excel.
Manejar macros y ejecutarlas y pararlas.
Grabar un libro Excel con soporte para Macros.

1.5 Guardado de Libros Excel con


Macros
Los Libros Excel que tienen macros, adems tienen que guardarse de una
forma especial: como LIBRO HABILITADO PARA MACROS, con la
extensin .xlsm.
Esto hace que estos libros nos avisen cuando se abren, que tienen macros y
por seguridad nos pregunta si habilitarlas o no.
Tambin hay opciones de seguridad para definir Ubicaciones de Confianza
para que no pregunte con los libros que estn ah guardados.
Adems el libro Excel que contiene macros tiene un icono distinto al de los
libros Excel sin macros.

1.5 Guardado de Libros Excel con


Macros
Demostracin:
Guardar un libro Excel habilitado para macros y cambiar las opciones de
seguridad para que no pregunte si habilitarlas para los libros en ubicaciones
de confianza.

2.- Lenguaje VBScript


2.1 Consideraciones Generales
2.2 Funciones Interactivas (msgbox e inputbox)
2.3 Variables, Constantes y Operadores
2.4 Funciones de Conversin y otras
2.5 Condicionales (if y select case)
2.6 Bucles (for y while)
2.7 Control de Errores

2.1 Consideraciones Generales


El lenguaje VBScript es un lenguaje que tiene las siguientes caractersticas
generales:

No diferencia maysculas y minsculas salvo en comparacin de literales.


No tiene en cuenta las lneas en blanco.
Se pueden comentar lneas con el carcter (apstrofe)
Cuando utilizamos funciones sin recoger el resultado NO se deben utilizar
parntesis; cuando s recogemos el resultado SI se deben utilizar.

2.2 Funciones Interactivas


Una funcin interactiva es la que nos permite interactuar con el usuario del
libro Excel. Las dos funciones interactivas ms caractersticas son las
correspondientes a la entrada/salida de datos.
MSGBOX -> Nos permite mostrar informacin al usuario del libro.
INPUTBOX -> Nos permite preguntar un dato al usuario del libro y obtener una
respuesta.
Por Ejemplo:
Msgbox (hola usuario)
Inputbox(dime tu edad:)

2.2 Funciones Interactivas


MSGBOX
MsgBox mensaje, [botones+aspecto (vbmsgboxstyle)], [Titulo]
Msgbox Hola que tal -> Muestra un mensaje simple

Msgbox Hola que tal, vbOkOnly+vbInformation, Saludo

Msgbox Eres de Madrid?, vbYesNo+vbQuestion, Pregunta

2.2 Funciones Interactivas


MSGBOX
Msgbox Error grave, vbOkOnly+vbCritical, error

Cuando mostramos ms de un botn y queremos recoger la respuesta del


usuario, todos los datos deben ir entre parntesis y recoger el resultado en una
variable.
Ej.
Resultado=Msgbox (Eres de Madrid?,vbYesNo+vbQuestion,Pregunta)

2.2 Funciones Interactivas


INPUTBOX
Variable=Inputbox(mensaje, [Titulo], [Valor por defecto],[Coord. Izq.],[Coord. Sup])

Edad=inputbox(dime tu edad: ,Pregunta,18)

2.2 Funciones Interactivas


Demostracin:
Utilizacin de funcin MSGBOX e INPUTBOX en una macro de Excel

2.3 Variables, Constantes y Operadores


DEFINICIONES
Variables: Las variables son zonas de memoria con un nombre que nos
inventamos, que almacenan informacin. Como su nombre indica, a la misma
zona de memoria le podemos variar el dato que almacena.
Constantes: Las constantes son lo mismo que las variables pero una vez que
se les ha dado el primer dato a guardar, ya no se puede modificar; tienen un
valor constante.
Operadores: Los operadores nos permiten establecer distintos tipos de
comparaciones entre 2 ms expresiones o variables.

2.3 Variables, Constantes y Operadores


VARIABLES
Sintaxis: Dim <nombre> AS <tipo>
Los nombres de las variables tienen que empezar por una letra y pueden
contener letras, nmeros y guin bajo hasta un mximo de 255 caracteres.
Adems debe ser nica en el mbito que se declara.
Los tipos indican qu tipo de dato van a guardar y el alcance (cmo de grande
es) Ver tabla en siguiente diapositiva. Si no se define tipo, se asume tipo
Variant que implica que puede guardar cualquier cosa pero gasta ms
memoria.
Por ejemplo:
Dim nombre AS string
Dim edad AS Byte
Dim salario as Double

2.3 Variables, Constantes y Operadores


VARIABLES

2.3 Variables, Constantes y Operadores


CONSTANTES
Existen dos tipos de constantes: implcitas y explcitas. Las implcitas son las
que ya existen en el propio lenguaje y las explcitas las que nosotros podemos
definir.
Por ejemplo, constantes implcitas son las que utilizamos con msgbox
(vbOkOnly, vbCritical, etc).
Las constantes explcitas las definimos nosotros con la sintaxis:
Const <nombre> = <valor>
Por ejemplo:
Const PI=3.14

2.3 Variables, Constantes y Operadores


OPERADORES
Existen de distintos tipos. Ver tablas anexas.

2.3 Variables, Constantes y Operadores


Demostracin
Definicin de variables, constantes y su uso con distintos tipos de operadores.
- Operadores aritmticos
- Operadores de comparacin
- Operador para concatenar cadenas de texto

2.4 Funciones de Conversin y otras


Una funcin es un elemento implcito del lenguaje que a travs de un nombre,
es capaz de coger unos datos, operar con ellos y devolver un resultado.
Por ejemplo, si existiera, la funcin suma podra sumar nmeros:
suma(4,6) El resultado sera 10
Entre todas las que existen implcitas con el lenguaje VBScript, empezamos
por las de Conversin (aplicable a variables con operadores) y luego haremos
una clasificacin de otras.
Para poder ver un listado completo y obtener ayuda, podemos utilizar el
Examinador de Objetos

2.4 Funciones de Conversin y otras


Funciones de Conversin
Nos permiten convertir el tipo de dato de una variable para poder utilizar los
operadores que nos interesen.
Aunque existen conversiones implcitas (automticas) lo ms correcto es
utilizarlas nosotros segn necesitemos en la programacin.(ver tabla en la
siguiente diapositiva)
cInt Convierte a tipo Integer

Ej. Cint(34.28) devuelve 34


Ej. Cint(81) devuelve 81

cStr Convierte a tipo String

Ej. Cstr(54) devuelve 54

cDbl Convierte a tipo Double

Ej. Cdbl(62) devuelve 62.00


Ej. Cdbl(25) devuelve 25.00

2.4 Funciones de Conversin y otras


Funciones de Conversin (consultar el Examinador de Objetos)

2.4 Funciones de Conversin y otras


Funciones de Fecha / Hora

2.4 Funciones de Conversin y otras


Funciones Matemticas

2.4 Funciones de Conversin y otras


Funciones de Cadena (de texto)

2.4 Funciones de Conversin y otras


Funciones de Identificacin

2.4 Funciones de Conversin y otras


Demostracin
Utilizacin de funciones de conversin y otras en macros VBA de Excel.

2.5 Condicionales (if y select case)


Las estructuras condicionales sirven para tomar decisiones en tiempo de
ejecucin.
Utilizadas junto a los operadores de comparacin, nos permiten ejecutar un
cdigo u otro en funcin de una condicin.
Existen dos estructuras condicionales que podemos utilizar: IF y SELECT
CASE.
Aunque las dos serviran para cualquier situacin, se suele utilizar IF cuando
tenemos condiciones sencillas o evaluamos distintos aspectos como condicin
y SELECT CASE cuando queremos hacer varias comparaciones sobre el
mismo aspecto.

2.5 Condicionales (if y select case)


SINTAXIS DE IF
If <condicin> then
[cdigo a ejecutar si se cumple la condicin]
Else
[cdigo a ejecutar si no se cumple la condicin]
End if
Adems los condicionales se pueden anidar, es decir, utilizar unos dentro de
otros. Por ejemplo:
If color=rojo then
msgbox el color es rojo
Else
if color=azul then
msgbox el color es azul
else
msgbox no es ni rojo ni azul
end if
End if

2.5 Condicionales (if y select case)


SINTAXIS DE SELECT CASE
Select Case (<variable>)
case <valor>:
[cdigo a ejecutar]
case <valor>:
[cdigo a ejecutar]
case else:
[cdigo a ejecutar si no se cumple ningn caso anterior]
End Select

Por ejemplo:
Select Case (color)
case rojo:
msgbox es rojo
case azul:
msgbox es azul
case else:
msgbox no es ni rojo ni azul
End Select

2.5 Condicionales (if y select case)


Demostracin
Utilizacin de funciones de estructuras condicionales if simple, if en bloque
anidado y select case.

2.6 Bucles (for y while)


Los bucles nos permiten ejecutar tareas de forma repetitiva. Por ejemplo, si
quiero cambiar el borde de color a 300 celdas, en vez de ir una por una puedo
hacer un bucle para que lo haga l en todas las celdas, de forma repetitiva.
Los bucles pueden ser definidos (for) es decir, que se ejecutan un nmero de
veces concreto o indefinidos (while) es decir, que repiten tareas mientras se
cumpla una condicin pero no sabemos si se va a repetir 2, 6 o 23 veces.
Existen ms tipos de bucles pero estos dos son los bsicos y necesarios para
entender este aspecto de la programacin.

2.6 Bucles (for y while)


Sintaxis de FOR
For <variable>=<valor inicial> TO <valor final> [STEP <valor>]
.
Next <variable>

Por Ejemplo:
for x=1 to 10
msgbox hola
next x

este bucle dice hola 10 veces

for x=4 to 22 step +2


msgbox hola
next x

este bucle dice hola 10 veces

for x=10 to 1 step -1


msgbox hola
next x

este bucle dice hola 10 veces

2.6 Bucles (for y while)


Sintaxis de WHILE
While (<Condicin>)
.
Wend

Por Ejemplo:
dim color as string
color=inputbox(dime un color)
while (color<>Rojo)
msgbox el color no es rojo
color=inputbox(dime un color)
wend
NOTA: El dato que sirva de condicin, debe modificarse dentro del bucle, si no sera un bucle infinito.
Si eso pasara, la forma de cortar el bucle infinito es CTRL + Pause

2.6 Bucles (for y while)


Demostracin
Ejemplos con bucles for y while para repeticiones con un nmero definido de
veces o basado en condicin.

2.7 Control de Errores


Cuando la ejecucin de una macro produce algn error, muestra un mensaje
de error en pantalla que el usuario del libro Excel quiz no sepa manejar.
Para evitar esa situacin, podemos hacer control de errores con la estructura:
ON ERROR GOTO <ETIQUETA> que nos llevar a la etiqueta definida, donde
podremos tomar decisiones de si continuar con la macro a pesar del fallo o
terminar la ejecucin de la misma.
Para acotar el bloque de control de errores utilizaremos la expresin Exit Sub
al final de la macro, antes del bloque de errores.
Para indicar que vuelva a intentar ejecutar la lnea que ha dado error porque
hayamos arreglado el error utilizaremos resume y si queremos saltarnos la
lnea de error pero continuar resume next.
Podemos acceder al error con err.number y err.description

2.7 Control de Errores


Ejemplo:
Sub macro1()
on error goto mis_errores
dim numero as integer
numero=inputbox(dime un numero:)
msgbox numero+45
exit sub
mis_errores:
if err.number=<numero_error> then
resume next
else
exit sub
end if
End sub

2.7 Control de Errores


Demostracin
Macro con control de errores

3.- Modelo de Objetos de Excel


3.1 Introduccin
3.2 Manejo de Celdas
3.3 Manejo de Hojas
3.4 Manejo de Libros

3.1 Introduccin
El modelo de objetos de Excel es muy amplio con ms de 200 objetos distintos
para controlar todos los aspectos de la aplicacin.
El manejo de objetos cotidiamos atiendo a este esquema:
Application
Workbooks
workbook
worksheets
worksheet
cells
range
Cada objeto adems define un tipo de variable por si queremos guardar un
objeto en una variable. Utilizaremos la palabra clave SET.
Dim mihoja as worksheet
Set mihoja=worksheets(1)

3.1 Introduccin
Los objetos que acaban en s (estn en plural) son COLECCIONES. Una
coleccin es un array de objetos del mismo tipo, es decir, que en la misma
variable puedo almacenar ms de un objeto.
worksheets
1

Podemos acceder a los objetos por ndice o por


nombre del objeto.

Las colecciones propias de Excel se generan


automaticamente, nosotros slo las utilizamos

Worksheets(3)

3.1 Introduccin
Para utilizar los objetos utilizamos sus propiedades y mtos.
Una propiedad nos permite acceder o cambiar un dato del objeto. Por ejemplo,
de una celda, tenemos las propiedades de borde, tipo de letra, tamao, color,
grosor de borde, etc
Un Mtodo nos permite cambiar un aspecto del objeto. Por ejemplo sobre una
hoja de Excel, nos permite copiar la hoja, moverla, borrarla, etc
Para ver todas las propiedades y mtodos de un objeto, podemos utilizar el
Examinador de Objetos.

3.2 Manejo de Celdas


Para acceder a las celdas, utilizamos indistintamente el objeto Cells o el objeto
Range. La nica diferencia es la forma de referenciar la celda.
Range(B4) Celda B4
Cells(4,2) Celda B4 (fila 4, columna 2)
A travs de sus propiedades y mtodos, accedemos a sus elementos.
Por ejemplo:
Range(C2).FormulaR1C1=hola Escribe dentro de la celda
Range(D4).Clear Limpia el contenido de la celda

3.2 Manejo de Celdas


Demostracin
- Ejemplos de manejo de propiedades y mtodos de las celdas.
- Integracin del modelo de objetos (celdas) con el lenguaje VBScript.

3.3 Manejo de Hojas


Para acceder a las hojas utilizamos la coleccin Worksheets. Podemos
acceder directamente a la hoja por posicin o nombre, o tambin podemos
extraer una hoja en una variable independiente de tipo Worksheet.
Worksheets(2).Name=mi hoja
Worksheets(Hoja3).Name=mihoja3
Msgbox Worksheets(1).Name
Dim lahoja as worksheet
Set lahoja=worksheets(2)
Msgbox lahoja.name

3.3 Manejo de Hojas


Demostracin
- Ejemplos de manejo de propiedades y mtodos de las hojas.
- Integracin del modelo de objetos (hojas) con el lenguaje VBScript.

3.4 Manejo de Libros


Para acceder a los libros utilizamos la coleccin Workbooks. Podemos acceder
directamente al libro por posicin o nombre, o tambin podemos extraer un
libro en una variable independiente de tipo Workbook.
Workbooks(2).Name=mi libro.xlsx
Workbooks(Libro1).Name=milibro2
Msgbox workbooks(1).Name
Dim ellibro as workbook
Set ellibro=workbooks(2)
Msgbox ellibro.name

3.4 Manejo de Libros


Demostracin
- Ejemplos de manejo de propiedades y mtodos de los libros.
- Integracin del modelo de objetos (libros) con el lenguaje VBScript.

Anda mungkin juga menyukai