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

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 diseo Cdigo

Insertar Controles

Se utiliza la barra de controles para insertarlos y manipularlos.


ICC2100 Taller de Herramientas Computacionales para Ingeniera

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 cambiar en la ventana propiedades (F4). Por ejemplo, el objeto Ventana 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

Panel de Cdigo

Panel de Propiedades

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 End Sub

Panel de Cdigo

El alcance (scope) es Public o Private: le indica a VBA si el programa se puede llamar desde cualquier parte o slo desde esta planilla.
ICC2100 Taller de Herramientas Computacionales para Ingeniera

Panel de Propiedades

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 End Sub

Panel de Cdigo

La palabra-clave Sub le indica a VBA que se est definiendo una subrutina llamada MiSub. A diferencia de una funcin, una subrutina no entrega un resultado directo.
ICC2100 Taller de Herramientas Computacionales para Ingeniera

Panel de Propiedades

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

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

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

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 (time = 32000) Then MsgBox time vale 32000 End If If (MiCondicion = True) Then MsgBox Mi Condicin es Verdad Else 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:
For i = 1 To n Cdigo Next i For i = 1 To n Step 2 Cdigo Next i

Los Do tienen la siguiente sintaxis:


Do While (tiempo < 10) Cdigo Loop Do Cdigo Loop While (tiempo < 10) Do Until (tiempo > 10) Cdigo Loop Do Ms Cdigo Loop Until (tiempo > 10)

For i = 1 To n Cdigo If tiempo >10 Then Exit For End If Ms Cdigo Next i
ICC2100 Taller de Herramientas Computacionales para Ingeniera

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 punto rojo). Para poder ir paso a paso se puede usar F8 sobre 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

Resetear

Ir Paso a paso (F8)

Ventanas Locales

Ventanas Inspeccin Ventanas Inmediato

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

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. Offset: se especifica primero la fila. Range (A1) . Offset (4, 3) Range (B3) . Range (C3) Range (Mi-Rango) ActiveCell Asumiendo que D5 tiene como nombre Mi-Rango. 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