Está en la página 1de 16

05-11-2012

Macros y VBA en MS Excel


(Visual Basic for Applications)

Aplicaciones para Ingeniera

Profesores: Hugo Mora, Ignacio Casas

ICC2100 Taller de Herramientas Computacionales para Ingeniera

Introduccin
Excel
Visual Basic de Aplicaciones
Access
Proyecto

Tutorial de Excel: Programador

Activacin de las Macros y VBA


Para poder acceder a las Macros y VBA en MS Exel,
primero debemos activar la Ficha de Programador
(Developer Tab):
Hacer click el Botn de Office (esquina superior
izquierda) para abrir el men de archivo.
Hacer click en Opciones de Excel.
Seleccionar Customizar (men izquierdo).
Seleccionar Ficha de Programador (men der.)
Hacer click en OK.
La planilla Excel se debe guardar en una carpeta segura y
en formato con macros.

ICC2100 Taller de Herramientas Computacionales para Ingeniera

1
05-11-2012

Introduccin
Excel
Visual Basic de Aplicaciones
Access
Proyecto

Tutorial de Excel: Programador

Macros
Excel permite automatizar tareas repetitivas utilizando un grabador de macros (programas):
Herramientas Macro Grabar nueva macro
Mientras se graba la macro, todas las acciones
que realicemos en Excel quedarn guardadas
en un procedimiento/programa en lenguaje VBA.
Se puede crear la macro con referencia absoluta
o referencia relativa. (OJO con esto.)
Las macros se pueden correr desde el men
o con combinacin de teclas. Para ver la macro presione Alt + f11.

Ejercicio: Crear una macro que pegue valores con pegado especial
y asgnele control + q.

ICC2100 Taller de Herramientas Computacionales para Ingeniera

Introduccin
Excel
Visual Basic de Aplicaciones
Access
Proyecto

Tutorial de Excel: Progamador

Controles-Botones
Excel permite agregar controles-botones a las hojas de clculo: permiten interactuar con los datos y
con otros controles en la misma hoja.
Son tiles para llamar a las macros.
Cada control-botn tiene su nombre.
En la planilla de ejemplo, el Botn que se muestra
se llama Mi_Macro y est asociado a test.
Propiedades

Pasar a modo Ver


Insertar Controles
diseo Cdigo

Se utiliza la barra de controles para insertarlos y


manipularlos.

ICC2100 Taller de Herramientas Computacionales para Ingeniera

2
05-11-2012

Introduccin
Excel
Visual Basic de Aplicaciones
Access
Proyecto

Tutorial de Excel: Visual Basic para Aplicaciones

Introduccin

VBA es un lenguaje de programacin orientado a objetos: es una versin del


lenguaje Visual Basic que se integra a los productos/aplicaciones MS Office.

Por ejemplo en Excel, el VBA adems de permitirnos construir programas (macros),


integra como objetos-mtodos-propiedades (que podemos manipular) elementos
tales como: planillas, comandos , funciones y los datos que hemos ingresado.

Permite programar tareas (programas-macros) otorgndole un lenguaje orientado


a objetos a las aplicaciones Word, Excel, Outlook y Access de Microsoft.

Permite comunicacin entre las distintas aplicaciones.

ICC2100 Taller de Herramientas Computacionales para Ingeniera

Introduccin
Excel
Visual Basic de Aplicaciones
Access
Proyecto

Tutorial Visual Basic de Aplicaciones

Editor de Visual Basic


Para entrar al editor de Visual Basic
desde el Excel usar:

Herramientas Macros Editor de Visual Basic

O simplemente presione: Alt + F11 Panel de Proyectos

Cada objeto en VBA tiene propiedades


y mtodos. Las propiedades se pueden Panel de Cdigo

cambiar en la ventana propiedades (F4).

Por ejemplo, el objeto Ventana Panel de Propiedades


puede tener una propiedad Estado que
dice si est abierta o cerrada, y los
mtodos Abrir y Cerrar.

ICC2100 Taller de Herramientas Computacionales para Ingeniera

3
05-11-2012

Introduccin
Excel
Visual Basic de Aplicaciones
Access
Proyecto

Tutorial Visual Basic de Aplicaciones

Subrutinas
Para escribir Programas (Funciones o
Subrutinas) en VBA se debe primero
crear un Mdulo que los contenga:
Insertar Mdulo

Subrutina: Panel de Proyectos

Public Sub MiSub (A as Integer, B as Double)


Cdigo de la subrutina Panel de Cdigo
End Sub

El alcance (scope) es Public o Private:


le indica a VBA si el programa Panel de Propiedades

se puede llamar desde cualquier parte o


slo desde esta planilla.

ICC2100 Taller de Herramientas Computacionales para Ingeniera

Introduccin
Excel
Visual Basic de Aplicaciones
Access
Proyecto

Tutorial Visual Basic de Aplicaciones

Subrutinas
Para escribir Funciones o Subrutinas
en VBA se debe crear un Mdulo
que las contenga:
Insertar Mdulo

Subrutina Panel de Proyectos

Public Sub MiSub(A as Integer, B as Double)


Cdigo de la subrutina Panel de Cdigo
End Sub

La palabra-clave Sub le indica a VBA


que se est definiendo una subrutina Panel de Propiedades

llamada MiSub.
A diferencia de una funcin, una
subrutina no entrega un resultado directo.
ICC2100 Taller de Herramientas Computacionales para Ingeniera

4
05-11-2012

Introduccin
Excel
Visual Basic de Aplicaciones
Access
Proyecto

Tutorial Visual Basic de Aplicaciones

Subrutinas
Los parmetros se definen como:
(ByValue) NombreParam as Tipo

Donde Tipo puede ser:


Integer: un nmero entero (%)
Double: un nmero real (#)
Boolean: un nmero binario (V o F)
Byte: guarda un valor entre 0 y 255
String: Caracteres ASCII ($)

Para ver los otros tipos de datos presione


ayuda (F1) y escriba tipos de datos
Para pasar slo los valores (cuando se invoca
La subrutina) usar ByValue (opcional).
ICC2100 Taller de Herramientas Computacionales para Ingeniera

Introduccin
Excel
Visual Basic de Aplicaciones
Access
Proyecto

Tutorial Visual Basic de Aplicaciones

Subrutinas
Las subrutinas se pueden llamar (invocar) desde otras
partes de un programa en VBA, usando su nombre y
agregando los parmetros que necesita.

Por ejemplo, para llamar a nuestra subrutina llamada


MiSub, se pueden usar dos formatos:
MiSub 4, 2.87
o
Call MiSub (4, 2.87)

Tambin se puede agregar el nombre de la subrutina a


botones u otros controles de VBA.

ICC2100 Taller de Herramientas Computacionales para Ingeniera

5
05-11-2012

Introduccin
Excel
Visual Basic de Aplicaciones
Access
Proyecto

Tutorial Visual Basic de Aplicaciones

Funciones
Las funciones son similares a las subrutinas: usamos
Function en vez de Sub. La funcin retorna un valor.:
Public Function Calcq(y1 As Double, y3 As Double) As Double
Calcq = 1 / ((Abs(y3 - y1)) ^ 0.74)
End Function

Nota: tenemos que definir un Tipo para la funcin.


Las funciones internas de Excel estn as construidas.
Funcin que calcula el Factorial:
Public Function MiFactorial(N As Integer) As Integer
MiFactorial = 1
For i% = 1 To N
MiFactorial = i * MiFactorial
Next
End Function

ICC2100 Taller de Herramientas Computacionales para Ingeniera

Introduccin
Excel
Visual Basic de Aplicaciones
Access
Proyecto

Tutorial Visual Basic de Aplicaciones

Definir Variables y Constantes


Con Dim o Public se declaran las variables:
Dim b As Double, a As Double
Dim n, m As Integer

En este caso n no es integer sino Variant (tipo


genrico).
En general debe ser:
Dim NombreVariable As DataType

Con Const se declaran las constantes:


Const MiConstante As Integer = 14
Const MiConstante2 As Double = 1.025

ICC2100 Taller de Herramientas Computacionales para Ingeniera

6
05-11-2012

Introduccin
Excel
Visual Basic de Aplicaciones
Access
Proyecto

Tutorial Visual Basic de Aplicaciones

Usar Matrices
Matrices (Arrays) se definen similar a las
variables, pero con un tamao:
Dim y(1 To 4) As Double
Dim x(4) As Double
Dim M(1 To 8, 1 To 8) As Double
Dim N(8, 8) As Double
Para acceder a los elementos de la Matriz:
y(3) = 2.983
M(1, 2) = 4.321
Si no se sabe el tamao, se puede usar ReDim:
Dim Matriz() As Double
ReDim Matriz(10)
ReDim Preserve Matriz(12) Mantiene lo que estaba

Por omisin (default) la base es 0. Option Base 1.


ICC2100 Taller de Herramientas Computacionales para Ingeniera

Introduccin
Excel
Visual Basic de Aplicaciones
Access
Proyecto

Tutorial Visual Basic de Aplicaciones

Conceptos Bsicos del Lenguaje


Para comentar el cdigo se usa un a comilla o Rem
Declaracin de variables
Dim y As Double
Dim x As Double

Rem Declaracin de Matrices


Dim M(1 To 8, 1 To 8) As Double
Dim N(8, 8) As Double

Para separar una lnea en mltiples lneas, se usa un underscore (_):


K2(1) = dt * dy1dt(y(1) + k1(1) / 2#, y(2) + _
k1(2) / 2#, y(3) + k1(3) / 2#, y(4) + _
k1(4) /2#)

Nota: Tiene que haber un espacio antes del underscore.

ICC2100 Taller de Herramientas Computacionales para Ingeniera

7
05-11-2012

Introduccin
Excel
Visual Basic de Aplicaciones
Access
Proyecto

Tutorial Visual Basic de Aplicaciones

Condicionales
Los tests lgicos en VBA tienen la siguiente sintaxis:
If (MiCondicion = True) Then
If (time = 32000) Then MsgBox Mi Condicin es Verdad
MsgBox time vale 32000 Else
End If MsgBox Mi Condicin No es Verdad
End If

If (contador < 10) Then


MsgBox El Contador es menor a 10
ElseIf (contador < 20) Then
MsgBox El Contador es mayor que 10 y menor que 20
ElseIf (contador < 30) Then
MsgBox El Contador es mayor que 20 y menor que 30
End If

ICC2100 Taller de Herramientas Computacionales para Ingeniera

Introduccin
Excel
Visual Basic de Aplicaciones
Access
Proyecto

Tutorial Visual Basic de Aplicaciones

Iteraciones - Loops
Los For tienen la siguiente sintaxis: Los Do tienen la siguiente sintaxis:
For i = 1 To n Do While (tiempo < 10)
Cdigo Cdigo
Next i Loop

For i = 1 To n Step 2 Do
Cdigo Cdigo
Next i Loop While (tiempo < 10)

Do Until (tiempo > 10)


For i = 1 To n Cdigo
Cdigo Loop
If tiempo >10 Then
Exit For Do
End If Ms Cdigo
Ms Cdigo Loop Until (tiempo > 10)
Next i

ICC2100 Taller de Herramientas Computacionales para Ingeniera

8
05-11-2012

Introduccin
Excel
Visual Basic de Aplicaciones
Access
Proyecto

Tutorial Visual Basic de Aplicaciones

Depuracin
Para desplegar men de depuracin:
Ver Barras de Herramientas Depuracin

Para crear un breakpoint haga click en la zona que


se encuentra al lado del cdigo (donde est el Continuar Resetear Ir Paso a paso Ventanas Ventanas
punto rojo). (F8) Locales Inspeccin

Para poder ir paso a paso se puede usar F8 sobre Ventanas


Inmediato
un procedimiento.
Se pueden ver las variables con las ventanas
Locales, Inmediato e Inspeccin.
Para imprimir en Inmediato: Debug.Print x
Ejercicio: Ver las variables en el Sub llamado
MiFactorial2.

ICC2100 Taller de Herramientas Computacionales para Ingeniera

Introduccin
Excel
Visual Basic de Aplicaciones
Access
Proyecto

Tutorial Visual Basic de Aplicaciones

Funciones de VBA
En la ayuda aparecen todas las funciones de VBA.
Ac se muestran algunas:

Abs(x): Valor absoluto.


Cos(x): Coseno de un ngulo en radianes.
Exp(x): La constante e elevada a la potencia de x.
Int(x): La parte entera de x, trunca el nmero.
Log(x): Logaritmo natural base e. Log(e)/Log(10).
Round(x, n): Redondea x con n decimales.
Sgn(x): Devuelve el signo de un nmero (-1, 1 o 0).
Sin(x): Seno de un ngulo en radianes.
Sqr(x): Calcula la raz cuadrada de x.
Tan(x): Tangente de un ngulo en radianes.

Para usar en VBA una funcin de Excel: WorksheetFunction.Pi()


ICC2100 Taller de Herramientas Computacionales para Ingeniera M

9
05-11-2012

Introduccin
Excel
Visual Basic de Aplicaciones
Access
Proyecto

Tutorial Visual Basic de Aplicaciones

Objetos de VBA
Excel incluye cerca de 200 objetos, que representan
rangos de celdas, grficos, hojas de clculo, libros y la
propia aplicacin de Excel.

Cada objeto tiene propiedades (que permiten acceder


y controlar sus atributos) y mtodos (funcionalidades).

El examinador de objetos es una herramienta que


permite navegar por los objetos para explorar sus
propiedades y mtodos.

Para abrir el examinador de objetos en VBA presione F2


o vaya a:
Ver Examinador de Objetos

ICC2100 Taller de Herramientas Computacionales para Ingeniera

Introduccin
Excel
Visual Basic de Aplicaciones
Access
Proyecto

Tutorial Visual Basic de Aplicaciones

Aplicacin Excel

Excel es una aplicacin con un modelo de tres niveles:

El primer nivel es el de servicios de cliente, que es la interfaz que permite a los usuarios
manejar la aplicacin.

El segundo nivel es el modelo de objetos de Excel, que es el que se utiliza para realizar las
operaciones en el libro de clculo (Workbook) o en las hojas de clculo (Worksheets). Cada
comando de Excel se puede manejar mediante el modelo de objetos.

El tercer nivel es el de servicios de datos, que es el que mantiene los datos en las hojas
de clculo que son modificados por los comandos del modelo de objetos de Excel.

ICC2100 Taller de Herramientas Computacionales para Ingeniera

10
05-11-2012

Introduccin
Excel
Visual Basic de Aplicaciones
Access
Proyecto

Tutorial Visual Basic de Aplicaciones

Modelo de Objetos de Excel


El modelo de objetos de Excel contiene una gran cantidad de elementos ordenados en forma
jerrquica. Algunos de los objetos de Excel son:

Application: Es el objeto que se encuentra en la base de la jerarqua del modelo de


objetos de Excel y representa a la aplicacin en s misma.
Workbooks: Objetos que representan los libros de clculo o archivos de Excel. El
objeto workbook se encuentra debajo del objeto Application en la jerarqua del
modelo de objetos de Excel.
Worksheets: Objetos que representan las hojas de clculo de Excel. Este objeto
pertenece al objeto Workbook.
Ranges: Objeto que representa un rango de celdas. Este objeto pertenece al objeto
Worksheet.
Charts: Objetos que representan grficos.
Pivot Tables: Objetos que representan tablas dinmicas.

ICC2100 Taller de Herramientas Computacionales para Ingeniera

Introduccin
Excel
Visual Basic de Aplicaciones
Access
Proyecto

Tutorial Visual Basic de Aplicaciones

Objeto Application

El objeto Application representa el programa Excel. Entrega acceso a las opciones y


otras funcionalidades de Excel.

La propiedad ActiveSheet se refiere a la hoja de clculo activa. Ejemplo:


Application.ActiveSheet.Cells(1, 2) = time
Le dice a Excel que coloque el valor de time en la celda que est en la fila 1 y columna 2.

La propiedad ScreenUpdating le indica a Excel si debe refrescar la pantalla cuando se


ejecuta cdigo.
Application.ScreenUpdating = False

ICC2100 Taller de Herramientas Computacionales para Ingeniera

11
05-11-2012

Introduccin
Excel
Visual Basic de Aplicaciones
Access
Proyecto

Tutorial Visual Basic de Aplicaciones

Objeto Workbook
El objeto Workbook representa un archivo Excel.
El objeto ActiveWorkbook pertenece al objeto Application, y entrega el objeto Workbook
activo. Ejemplo:
Application.ActiveWorkbook.Save

El objeto ActiveSheet pertenece al objeto Workbook y se refiere a la hoja de clculo activa.


Application.ActiveSheet.Delete

La propiedad Names entrega la lista de nombres que se han definido en ese Workbook (ver
Sub ContarNombres).
La propiedad Path se refiere al directorio donde se encuentra el Workbook. Ejemplo:
directorio = Application.ActiveWorkbook.path

ICC2100 Taller de Herramientas Computacionales para Ingeniera

Introduccin
Excel
Visual Basic de Aplicaciones
Access
Proyecto

Tutorial Visual Basic de Aplicaciones

Coleccin Workbooks

La coleccin Workbooks agrupa a todos los archivos de Excel que se encuentran abiertos.

El mtodo Open, Save y SaveAs le indican a Excel si debe abrir, guardar o guardar como el
workbook correspondiente. Ejemplos:
Application.Workbooks(ClaseIndustrial).Save
Workbooks.Open(C:\Archivo.xls)
Workbooks(Libro1).SaveAs(Archivo.xls,,clavesecreta)

Se pueden entregar los parmetros por nombre a los mtodos. Ejemplos:


Workbooks.Open FileName :=C:\Archivo.xls, ReadOnly:=True, Password:=clavesecreta
Application.Workbooks(ClaseIndustrial).Save

ICC2100 Taller de Herramientas Computacionales para Ingeniera

12
05-11-2012

Introduccin
Excel
Visual Basic de Aplicaciones
Access
Proyecto

Tutorial Visual Basic de Aplicaciones

Objeto Worksheet
El objeto Worksheet representa una hoja de clculo
Excel. El objeto ActiveSheet es un subobjeto del objeto
Workbook que entrega el Worksheet activo.

Se puede copiar, pegar, imprimir, guardar, activar y


borrar la hoja de clculo. Ejemplo:
With Application.Workbooks(ClaseIndustrial)
ActiveSheet.Copy
ActiveSheet.Paste
ActiveSheet.PrintOut
ActiveSheet.SaveAs
ActiveSheet.Activate
ActiveSheet.Delete
End With

ICC2100 Taller de Herramientas Computacionales para Ingeniera

Introduccin
Excel
Visual Basic de Aplicaciones
Access
Proyecto

Tutorial Visual Basic de Aplicaciones

Coleccin Worksheets
La coleccin Worksheets contiene a todas las hojas
de clculo que pertenecen a algn workbook.
Se le puede dar un nombre a un worksheet en
particular para referirse a l. Ejemplo:
Dim w As Workbook, s As Worksheet
Set w = Workbooks(Libro1)
Set s = w.Worksheets(Hoja1)
MsgBox s.Range(a1).Value
Se pueden nombrar todas las hojas de un archivo
usando el comando For Each Next Loop.
Sub MuestraNombres()
Dim w As Worksheet
For Each w In Worksheets
MsgBox w.Name
Next
End Sub
ICC2100 Taller de Herramientas Computacionales para Ingeniera

13
05-11-2012

Introduccin
Excel
Visual Basic de Aplicaciones
Access
Proyecto

Tutorial Visual Basic de Aplicaciones

Objeto WorksheetFunction
El objeto WorksheetFunction permite usar las funciones
de Excel desde VBA.
Para ver las funciones que existen (todas en ingls) se
puede ocupar el Explorador de Objetos.
Ejemplo:
area = WorksheetFunction.Pi * r ^ 2
a = WorksheetFunction.Acos(b)
Set TestRange = Worksheets(Hoja1).Range(A1:A5)
TestSum = WorksheetFunction.Sum(TestRange)

Ejercicio: Promediar las celdas Funciones!F2:F13 con la


funcin Average de Excel usando un Sub llamado Promediar.

ICC2100 Taller de Herramientas Computacionales para Ingeniera

Introduccin
Excel
Visual Basic de Aplicaciones
Access
Proyecto

Tutorial Visual Basic de Aplicaciones

Objeto Range
El objeto Range representa rangos de celdas. Tambin es
posible acceder a las celdas usando la propiedad Cells de
ActiveSheet.
Ejemplos:
Set notas = Worksheets(Funciones).Range(F2:F13)
prom = WorksheetFunction.Average(notas)
Worksheets(Funciones).Range(F14).Value = prom
Worksheets(Funciones).Range(F15).Formula = =average(F2:F13)
Worksheets(Funciones).Cells(2, 1).Select
Workbooks(Libro1).Worksheets(Hoja1).Range(A1).Value = 10
Workbooks(Libro1).Worksheets(Hoja1).Range(A2.A10).Value = 5
Workbooks(Libro1).Worksheets(Hoja1).Range(A2:A10).Value = 5
Workbooks(Libro1).Worksheets(Hoja1).Range(A2, A10).Value = 5

Ejercicio: Hacer correr el sub Rango1() y el sub Rango2() de la


hoja Rango y tratar de predecir el resultado de antemano.
ICC2100 Taller de Herramientas Computacionales para Ingeniera

14
05-11-2012

Introduccin
Excel
Visual Basic de Aplicaciones
Access
Proyecto

Tutorial Visual Basic de Aplicaciones

Objeto Range
Los ejemplos siguientes son equivalentes; todos se refieren a la celda D5:
Range (D5)
[D5]
Cells (5 , 4) Se especifica primero la fila.
Range (A1) . Offset (4, 3) Offset: se especifica primero la fila.
Range (B3) . Range (C3)
Range (Mi-Rango) Asumiendo que D5 tiene como nombre Mi-Rango.
ActiveCell Asumiendo que D5 es la celda activa actual.
Si queremos referirnos al contenido en la celda D5:
Range(D5").Value

ICC2100 Taller de Herramientas Computacionales para Ingeniera

Introduccin
Excel
Visual Basic de Aplicaciones
Access
Proyecto

Tutorial Visual Basic de Aplicaciones

Formularios
Podemos agregar Formularios a las hojas de
clculo para realizar algunas tareas especficas y
como interfaz de usuario (GUI).
Para insertar un formulario ir a Insertar
UserForm.
Se pueden agregar controles a los formularios para
darles distintas funcionalidades.
Para mostrar un Formulario primero se disea con
el nombre UserForm1 por ejemplo y despus se usa
el mtodo Show. Para esconderlo se usa el mtodo
Hide. Ejemplo:
Sub MostrarForm()
UserForm1.Show
End Sub
ICC2100 Taller de Herramientas Computacionales para Ingeniera

15
05-11-2012

Introduccin
Excel
Visual Basic de Aplicaciones
Access
Proyecto

Tutorial Visual Basic de Aplicaciones

Formularios
Se puede insertar cdigo a cada uno de los
objetos que componen el formulario.

Presionando F7 se muestra el cdigo detrs del


formulario.

En el ComboBox de la izquierda (el que dice


CommandButton1) se muestran los objetos que
componen el formulario.

En el ComboBox de la derecha (el que dice Click)


se muestran los eventos que pueden ocurrir para
cada objeto donde se puede insertar cdigo.

Ejemplo: Escriba un cdigo que cierre el


formulario si se hace Click sobre el botn.
ICC2100 Taller de Herramientas Computacionales para Ingeniera

Links

Pueden ver videos tutoriales en www.datapigtechnologies.com.

Pueden ver ejemplos de cdigo VBA en http://www.vba-programmer.com/.

Pueden ver la pgina del curso para encontrar ms materiales.

ICC2100 Taller de Herramientas Computacionales para Ingeniera

16

También podría gustarte