Manual Macros
Manual Macros
Manual Macros
Un lenguaje de programacin
Las macros se escriben en un lenguaje de computadora especial que
es conocido como Visual Basic for Applications (VBA). Este lenguaje
permite acceder a prcticamente todas las funcionalidades de Excel y
con ello tambin ampliar la funcionalidad del programa.
1
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
Automatizacin de tareas
2
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
Las macros se crean con el Editor de Visual Basic el cual nos permitir
introducir el cdigo con las instrucciones que sern ejecutadas por la
macro.
Ahora que ya sabes para qu sire una macro en Excel puedes dar
los primeros pasos en este camino utilizando el tutorial Introduccin a
las macros.
3
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
4
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
5
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
La grabadora de macros
6
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
7
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
8
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
9
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
10
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
11
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
Establecer seguridad de
macros
La seguridad es un tema importante al hablar de macros en Excel. Si
abres algn archivo que contenga una macro maliciosa puedes causar
algn tipo de dao al equipo. De manera predeterminada Excel no
permite ejecutar macros automticamente.
12
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
13
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
Programando en VBA
Principios fundamentales
Propiedades y Mtodos
Por otro lado tenemos los mtodos de un objeto que en resumen son
las acciones que podemos realizar con dicho objeto. Por ejemplo, con
nuestro auto podemos hacer lo siguiente: encenderlo, avanzar, vuelta
a la izquierda, vuelta a la derecha, reversa, detener, apagar, etc.
Todas las acciones que se pueden llevar a cabo con un objeto son
conocidas como mtodos.
14
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
15
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
16
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
17
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
Creacin de un mdulo
Una vez dentro del Editor debes hacer clic derecho sobre el ttulo del
proyecto y dentro del men seleccionar la opcin Insertar y
posteriormente Mdulo.
18
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
Subrutinas en VBA
Ejecutar macro
Para probar nuestro cdigo bastar con pulsar el botn Ejecutar que
se encuentra dentro de la barra de herramientas.
19
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
20
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
21
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
Los objetos en Excel (VBA) son cosas. Una celda es un objeto, una
hoja es un objeto, un libro es un objeto y de esta manera existen
22
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
Propiedades de un objeto
Mtodos de un objeto
Range("A1").Value = "Hola"
23
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
Range("A1").Clear
INICIO
FUNCIONES
ACERCA
Navegando el modelo de
objetos
Excel tiene un modelo de objetos el cual es una jerarqua de todos los
objetos que podemos utilizar desde el lenguaje VBA. En la parte
superior de la jerarqua se encuentra el objeto Application y todos los
dems objetos estarn por debajo de l.
24
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
Objetos predeterminados
Existe una funcionalidad intrnseca de VBA conocida como objetos
predeterminados la cual nos permite omitir la escritura de algunos
objetos y aun as tener un cdigo funcional. Por ejemplo, en la
sentencia mostrada previamente podemos omitir el objeto Application
y tener nuestro cdigo funcionando correctamente:
25
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
26
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
Application.Workbooks.Open Filename:="C:Libro1.xlsx"
Una vez que hemos abierto los archivos que necesitamos podremos
hacer referencia a cada uno de ellos a travs de la coleccin de
objetos Workbooks de la siguiente manera:
Application.Workbooks(1).Activate
Application.Workbooks("Libro1.xlsx").Activate
Application.Workbooks(1).Worksheets(1).Range("A1").Value = "Hola"
27
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
Application.Workbooks(1).Worksheets("Hoja1").Range("A1").Value = "Hola"
Worksheets.Add
Application.Workbooks("Libro1.xlsx").Worksheets.Add
Ahora ya sabemos que VBA tiene un objeto para representar los libros
de Excel (Workbook) y otro objeto para representar las hojas de un
libro (Worksheet). Ambos tipos de objetos son almacenados dentro de
colecciones de objetos que son conocidas como Workbooks, que se
refiere a la coleccin de libros que se han abierto y Worksheets que es
la coleccin de hojas que pertenecen a un determinado libro.
28
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
29
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
Existen muchas otras razones por las que podemos tener un error en
tiempo de ejecucin. La mejor manera de prevenir estos errores ser
haciendo una depuracin de nuestro cdigo pero eso ser tema de
otro artculo.
30
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
31
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
Variables en VBA
32
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
Dim x As Integer
x=6
Dim x As Double
x = 3.1416
33
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
34
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
La funcin Left
35
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
La funcin Right
La funcin Len
36
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
La funcin InStr
37
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
La funcin Mid
38
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
39
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
La declaracin Else
Parece que todo funciona muy bien en el cdigo anterior pero an lo
podemos mejorar agregando la declaracin Else de manera que
tengamos una declaracin de la forma If-Then-Else. Esta variante nos
permite hacer la siguiente evaluacin: Si se cumple la condicin
Entonces haz esto De lo contrario haz otra cosa.
40
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
41
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
Range("B5").Select
Cells(5, 2).Select
Seleccionar un rango
Range("A1:D5").Select
Range("B5").Value = 500
Cells(5, 2).Value = 600
For i = 1 To 10
For j = 1 To 5
Cells(i, j).Value = i * j
Next j
Next i
42
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
La instruccin For-Next
El bucle For-Next es una de las instrucciones ms tiles al
programar en VBA. La sintaxis de esta instruccin es la siguiente:
43
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
Los operadores lgicos ms comunes en VBA son: And y Or. Cada uno
de estos operadores es de mucha utilidad para evaluar condiciones y
tomar decisiones adecuadas sobre el cdigo que ser ejecutado.
44
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
45
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
El operador lgico Or
46
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
Eventos en VBA
Los eventos en VBA nos ayudan a monitorear las acciones que
realizan los usuarios en Excel de manera que podamos controlar la
accin a tomar cuando el usuario hace algo especfico como el activar
una hoja o hacer clic en alguna celda.
Para descubrir los eventos que tiene un objeto es suficiente con abrir
el Editor de Visual Basic y posteriormente el Examinador de objetos
(F2). En el panel izquierdo se mostrarn los objetos y en el panel
derecho las propiedades, mtodos y eventos de dicho objeto. Podrs
distinguir los eventos porque tienen un icono en forma de rayo (color
amarillo):
47
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
48
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
49
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
50
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
El resultado es el siguiente:
51
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
52
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
m para meses
d para das
ww para semanas
Las fechas y horas son un tipo de dato muy comn con el que
seguramente tendrs que trabajar al crear tus macros. Es importante
que aprendas a utilizar las funciones VBA que nos permitirn
manipular adecuadamente la informacin.
53
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
Valor de retorno
54
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
Retornando el valor
Crear un Userform
Para crear un Userform debemos hacer lo siguiente:
55
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
56
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
57
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
58
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
Ventana de Proyectos
59
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
60
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
Nota
61
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
62
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
C RE A N D O FO R M U LA R I O S
63
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
sobre la propiedad
Caption y escriba
su nombre con
letras maysculas.
d. El formulario que vamos a programar tiene el siguiente
aspecto, y as debe disearlo:
64
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
Private Sub
CommandBu
tton1_Click()
Selection.E
ntireRow.
Insert
TextBox1
= Empty
TextBox2 = Empty
65
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
TextBox3 = Empty
TextBox1.Set Foc us
End Sub
66
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
TextBox
2 =
Empty
TextBox
3 =
Empty
TextBox
1.Set
Foc us
End Sub
67
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
Selection.EntireRow.Insert
TextBox1 = Empty
ComboBox1 = Empty
TextBox3 = Empty
TextBox1.SetFocus
End Sub
18. De doble clic sobre el formulario, en la parte gris con puntos y busque el
evento Initialize al lado derecho para que escriba el siguiente cdigo:
Este comando: A
ddItem lo que
hace es inicializar
el combobox con
una lista de Barrios
que van a ser
usados en el
momento de meter
los datos.
Pulse la tecla F5
para que vea el
funcionamiento del
formulario. Inserte
68
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
al menos tres
registros con:
Nombre, barrio y
telfono.
Observe que no
necesita escribir los
barrios, sino
seleccionarlos de la
lista.
Guarde su archivo
con su nombre en
la carpeta Mis
Documentos con
la opcin: Libro
de Excel
habilitado para
macros.
SEGUNDO
EJEMPLO:
Ahora pulse A lt + F11 para ir al editor de Visual Basic, luego dele Insertar
UserForm. En la propiedad Caption escriba su nombre completo.
Ahora vamos a crear un formulario con el siguiente
aspecto:
El
formu
lario
tiene:
a. Tres
etiquetas
b. Tres
Textbox
c. Un Botn de Comando
Los datos que se piden son: Nombre y Edad, los Das Vividos se generaran
automticamente cuando inserte la edad. A continuacin se muestra como se
deben de programar estos Controles:
69
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
Selection.EntireRow.Insert
TextBox1 = Empty
TextBox2 = Empty
TextBox3 = Empty
TextBox1.SetFocus
End Sub
EJERCICIO PRCTICO:
70
Profesor Csar Navarro Trejo
CETPRO DIVINO MAESTRO - HUANTA
Private
Sub
TextBox5_
Change()
TextBox6.Value = (Val(TextBox3.Value) * 0.3 + Val(TextBox4.Value) * 0.3
+ Val(TextBox5.Value) * 0.4)
End Sub
71
Profesor Csar Navarro Trejo