macros en excel desde cero. - iccpch · ¿qué es visual basic para aplicaciones o vba? vba fue...

71
MACROS EN EXCEL DESDE CERO.

Upload: others

Post on 11-Mar-2020

40 views

Category:

Documents


2 download

TRANSCRIPT

MACROS EN EXCEL DESDE CERO.

1. ¿Qué es Visual Basic para Aplicaciones?2.Grabadora de Macros.3. El Editor VBA (Visual Basic para Aplicaciones)4. Objetos, Propiedades, Métodos y Eventos en VBA.5. Procedimientos y Funciones.6. Tipos y Declaraciones de Variables.7. Estructuras Condicionales.8. Diversas Macros usando objetos en Excel.

¿Qué es Visual Basic para Aplicaciones o VBA?

Nace en 1964 y sus creadores son John Kemeny y Thomas Kurtz.

B.A.S.I.C. significa: Beginner’s All-purpose Symbolic Instruction Code,traduciendo esto sería: Código de instrucciones de uso universal paraprincipiantes.

Basic es un lenguage de programación que actua como un intermediarioentre el operador y el computador. Mediante el vocabulario y las reglasBasic, se le ordena al computador lo que se quiere que haga y el PCtransforma estas instrucciones para poder ejecutarlas.

¿Qué es Visual Basic para Aplicaciones o VBA?

VBA fue introducido a las aplicacionesde Windows en mayo de 1991, bajo elnombre de Visual Basic 1.0. En 1993 seintegro a Microsoft Excel.

Hoy en día, Excel opera con versionesVisual Basic 5.0, 6.0 y 7.0.

¿Qué es Visual Basic para Aplicaciones o VBA?

Es un lenguaje de programación dirigido por eventos, desarrollado por Alan Cooper para Microsoft. Este lenguaje de programación es un dialecto de BASIC, con importantes

agregados.

¿Qué es Visual Basic para Aplicaciones o VBA?

Los objetos son el elemento central de laprogramación en Visual Basic. Por lotanto, VBA es una ProgramaciónOrientada a Objetos (OOP en ingles).

Lo que significa que utilizaremos en estecurso los objetos definidos por laAplicación Excel (Hojas, Rangos, Celdas,etc.).

¿Qué es Visual Basic para Aplicaciones o VBA?

La gran ventaja que tendremos es queutilizaremos objetos ya definidos, notendremos que crear nuevos objetos.

Para ello deberemos conocer suspropiedades y métodos, y encontrar laforma correcta de utilizarlos.

Utilidad VBA en Microsoft Excel • Eliminación de Tiempos en Tareas Repetitivas.• Aceleración en Cálculos.• Dar Formatos a las hojas de datos e información.• Agrupamiento de Información (No Tablas Dinámicas)• Conexión con Bases de Datos.• Conexión con otras Aplicaciones (Word, Outlook, Internet, etc.)• Creación de nuestras propias Funciones (User Defined Functions UDF).• Creación de Formularios.• Construir nuestras propias aplicaciones.

Consideraciones Paciencia.

VBA esta escrito en idioma Ingles.

Seguir la secuencia de Programación (1 luego el 2).

Memoria Computadora.

Grabar las Macros antes de ejecutarlas.

En Fase de Prueba, NO UTILICE INFORMACIÓN ORIGINAL.

Lo que veamos en este curso es una posible solución, no hay límites.

Consideraciones

¿Qué necesito?

¿Cómo lo necesito?

¿Para quién?

¿Es Viable?Si

No

Creación Macro

Fase de Pruebas Utilización

Grabadora de Macros

La grabadora de macros almacena cada acción que se realiza en Excel.

Son un conjunto deinstrucciones que sirven paraautomatizar procesos.

Repaso

La grabadora de macros almacena cada acción que se realiza en Excel.

Las macros se guardan ya sea en el archivo Personal de Excel o dentro de cada una de las hojas del Libro de Excel o en Módulos Estandar.

Existen acciones que no se pueden realizar con la grabadora y necesariamente deberemos escribir Código VBA.

Editor Visual Basic

Editor VBAEs la Herramienta de VBA que

nos permite analizar, instrucción por instrucción, el

código de programación de las macros y realizar las modificaciones que

necesitemos.

Para acceder a el Tecleamos Alt+ F11

Principales Componentes

Menus

Ventanas

- Archivo- Edicion- Ver- Insertar- Formato

- Depuración- Ejecutar- Herramientas- Complementos- Ventana- Ayuda

- De Código F7- Inmediato Ctl+G- Inspección Alt+V+I- Locales

- Explorador de Proyectos Ctl+R

- Propiedades F4

Menu

Archivo

Opciones para Guardar eImprimir Código VBA,asi como Importar yExportar.

Menu

Edición

Opciones para Copiar, Cortar,Pegar, Buscar, Reemplazar,Sangrias, etc., similar acualquier app del entornoWindows.

Menu

Ver

Sirve para activar o desactivarlas distintas ventanas delEditor VBA, que sirven paraanálisis de las instruccionesde Código.

Menu

Insertar

Inserta los objetos en los cualesescribiremos Código ocrearemos objectos como losFormularios.

Menu

Formato

Manejo de Controles paraFormularios o Código.

Menu

Depuración

Sirve para ejecutar diversaspartes del Código para analizarsu correcto funcionamiento. Conello nos permite encontrarerrores o mejoras a nuestrasMacros.

Menu

Herramientas

Opciones Generales del Editor.La principal es la deReferencias.

Menu

Complementos

Administra los Complementos,los cuales le dan a VBAcapacidades al entorno deprogramación.

Menu

Ventana

Nos permite movernos entre lasdistintas ventanas activas delEditor.

Menu

Ayuda

Acceso de Ayuda para VisualBasic.

Ventanas

De Código: Es el lugar donde trabajaremos con el Lenguaje VBA.

Inmediato: Es el lugar donde podemos ejecutar Código u obtener unresultado de algún calculo o variable.Inspección: Sirve para seguir el funcionamiento de ciertasinstrucciones o variables de nuestros procedimientos.Local: Sirve para conocer los valores de las variables definidasdentro de nuestra macro.

Explorador de Proyectos: Funciona como un navegador, el cualcontiene los objetos como son la(s) hojas de cálculo abiertas,Formularios y Módulos de cada libro, así como el Libro Personal deMacros.

Ventanas

Ventana de CódigoVentana Inmediato

Ventana Local

Ventana Inspección

Exploradorde Proyectos

Objetos, Propiedades,

Métodos y Eventos en VBA

OBJETO

Es algo provisto de un conjunto de propiedades o atributos (datos),de un comportamiento o funcionalidad (métodos) y de sus posiblesrelaciones con otros objetos.

Ejemplo: Un carro seria un objeto. Tiene ciertas caracteristicas deapariencia( Propiedades) y Acciones (Métodos).

Pero a su vez, los asientos, puertas, ventanas del Carro se conviertenen objetos, por que tienen apariencia(Propiedades) yAcciones(Métodos).

Y así sucesivamente.

OBJETO

En Excel, la Aplicación es un objeto, las hojas son un objeto, lasceldas, los Botones, etc.

Todas ellas tienen propiedades (apariencia) y Métodos (acciones).

Propiedades

Son variables que describen algunos aspectos o características delobjeto en el que están incluidas.

Las propiedades de un objeto toman un valor que puede serpermanente o puede cambiar.

MiAuto.Color=Verde

MiAuto Es el ObjetoColor es la PropiedadVerde es la variable.

Método

Es una acción que el objeto "reconoce" y "sabe" cómo ejecutarlo. Esuna acción u operación que realiza acceso a los datos.

No hay necesidad de Programar.

Los Métodos de un objeto ejecutan una acción y puede serpermanente o puede cambiar.

MiAuto.Frenar=True

MiAuto es el ObjetoFrenar es el Método(Acción)True significa que Ejecute la Acción.

Clase

Es simplemente una representación de un tipo de objeto.

En el caso del Carro solo habría una, que se denominaria igual, ladiferencia es que todos los Modelos de Carro (Objetos) perteneceriana la Clase Carro.

Si quisieramos compararlo a dos carros, la clase Carro tiene comoPropiedad un Motor, el carro Audi tiene un motor, el carro Jetta tieneun motor.

Procedimientos y Funciones

Procedimientos

Es un bloque de instrucciones de código que sirven para llevar acabo alguna tarea especifica. Un procedimiento siempre empieza conuna instrucción.

Sub Nombre_Procedimiento

«Instrucciones»

End Sub

Procedimientos

Ejemplo 1

Sub Primero

Range(“A1”).value=“Hola”

End Sub

Nota: Para ejecutar un procedimiento en el Editor Visual Basic utilicela tecla F5.

Funciones

Es una serie de instrucciones delimitadas por las instruccionesFunction y End Function. El procedimiento Function realiza una tareay, a continuación, devuelve el control al código de llamada. Cuandodevuelve el control, también devuelve un valor al código de llamada.

Function Nombre_Funcion

«Instrucciones»

End Function

Tabla Funciones Excelhttp://excelyvba.com/formulas-de-excel-en-ingles-y-espanol/

Español Inglés Español Inglés Español Inglés

ABRIR.ARCHIVO OPEN.DIALOG ATAN2 ATAN2 CAMBIAR.NOMBRE. RENAME.COMMAND

ABRIRA FOPEN ATANH ATANH CANCELAR.TECLA CANCEL.KEY

ABS ABS AYUDA HELP CARACTER CHAR

ACOS ACOS BDCONTAR DCOUNT CELDA CELL

ACOSH ACOSH BDCONTARA DCOUNTA CELDA.ACTIVA ACTIVE.CELL

AGREGAR.BARRA ADD.BAR BDDESVEST DSTDEV CERRARA FCLOSE

AGREGAR.BARRA.HERRAADD.TOOLBAR BDDESVESTP DSTDEVP CODIGO CODE

AGREGAR.COMANDO ADD.COMMAND BDEXTRAER DGET COEF.DE.CORREL CORREL

AGREGAR.MENU ADD.MENU BDMAX DMAX COEFICIENTE.ASIME SKEW

AGRUPAR GROUP BDMIN DMIN COEFICIENTE.R2 RSQ

AHORA NOW BDPRODUCTO DPRODUCT COINCIDIR MATCH

ALEATORIO RAND BDPROMEDIO DAVERAGE COLUMNA COLUMN

AÑO YEAR BDSUMA DSUM COLUMNAS COLUMNS

APL.TITULO APP.TITLE BDVAR DVAR COMBINAT COMBIN

ARCHIVOS FILES BDVARP DVARP CONCATENAR CONCATENATE

AREAS AREAS BINOM.CRIT CRITBINOM CONTAR COUNT

ARGUMENTO ARGUMENT BUSCAR LOOKUP CONTAR.BLANCO COUNTBLANK

ASC ASC BUSCARH HLOOKUP CONTAR.SI COUNTIF

ASENO ASIN BUSCARV VLOOKUP CONTARA COUNTA

ASENOH ASINH CADENA.FECHA DATESTRING COS COS

ATAN ATAN CADENA.NUMERO NUMBERSTRING COSH COSH

Variables

Variables

Es un trozo de memoria que el procedimiento o función se reservapara guardar datos.

Sub Nombre_Procedimiento

Dim variable as Tipo

«Instrucciones»End Sub

Siendo variable el que se asigna a la misma y Tipo el tipo de datos uobjetos que se declararan (números, texto, fecha, booleanos, hojas,rango)

Tipos de Variables

Estas pueden ser asignadas con letras y números y el caracter guiónbajo.

El nombre debe empezar invariablemente por una Letra y puede tenerhasta 255 caracteres de longitud (No se recomienda que las variablestengan un nombre muy grande, recuerde el consumo de memoria a lahora de ejecutar sus procedimientos).

Se recomienda iniciar con el prefijo de las letras del tipo variable quese trata, por ejemplo, una variable long seria lngVariable, una variableString strVariable, etc.

Tipos de Variables

Fuente: https://books.google.com.mx/

Tabla de Variables

Tipos de Variables

Tipos de Variables

Locales de procedimiento:Son declaradas dentro del procedimiento ysólo son conocidas dentro de él.

Locales de Módulo:Son declaradas dentro del Módulo u Objeto y sóloson conocidas dentro de él.

Globales: Son declaradas dentro un Módulo como variable precedidopor la palabra Public y son conocidas en todos los módulos uobjetos.

Tipos de Variables

Option Explicit. Esta declaración sirve para forzar a que el usuariodeclare las variables en VBA.

Su ubicación es antes de todos los procedimientos, es decir, al iniciodel Módulo.

Solo aplica en el Módulo en el cual se encuentre declarado.

Guia de Procedimiento

Option Explicit ‘Siempre al Inicio del Modulo para Declarar Variables‘Declaramos el procedimientoSub Nombre_Procedimiento‘Declaramos VariablesDim i as integer, wks as object‘Establecemos apariencia de la AplicaciónApplication.EnabledEvents=False‘Establecemos valores u objetosi=30Set wks=sheets("Hoja1")‘Iniciamos Procedimientos Bucles, Condicionantes, Recorridos, Llamadas a otrosProcedimientos o Funciones, Arrays, Conexiones, Otros Objetos‘Al terminar limpiamos variables en su caso y Reestablecemos las AparienciasSet wks=Nothing Application.EnabledEvents=TrueEnd Sub ‘Finalizamos Procedimiento

Estructuras Condicionales

Son instrucciones de programación que nospermiten controlar la ejecución de un fragmentode código en función de si se cumple o no unacondición.

If Condición ThenSentencia 1Sentencia 2Sentencia ….

ElseSentencia 1

End If

Si Condición EntoncesSentencia 1Sentencia 2Sentencia ….

SinoSentencia 1

Fin

Estructura If anidadas

If Condición ThenSentencia 1Sentencia 2Sentencia ….

ElseIf Condición2 ThenSentencia 1Sentencia 2Sentencia ….

ElseSentencia 1

End If

Si Condición EntoncesSentencia 1Sentencia 2Sentencia ….

AdemasSi Condición2 EntoncesSentencia 1Sentencia 2Sentencia ….

SinoSentencia 1

Fin

Estructura If anidadasIf Condición Then

Sentencia 1Sentencia 2Sentencia ….

ElseIf Condición2 Then

Sentencia 1Sentencia 2Sentencia ….

ElseSentencia 1

End ifEnd If

Si Condición EntoncesSentencia 1Sentencia 2Sentencia ….

SinoSi Condición2 Entonces

Sentencia 1Sentencia 2Sentencia ….

SinoSentencia 1

FinFin

Estructura Select Case

Esta estructura nospermite asignar yclasificar en función deuna única variable convarios posiblesresultados.

Select Case ExpresiónCase valor1:

Instrucciones:Case valor2:

Instrucciones:Case valor3:

Instrucciones:Case Else

Instrucciones:End Select

Funciones de ComprobaciónIsNuméric(Expresión). Comprueba si expresión tiene un valor que se puede interpretarcomo numérico.

IsDate(Expresión). Comprueba si expresión tiene un valor que se puede interpretar comotipo fecha.

IsEmpty(Expresión). Comprueba que expresión tenga algún valor, que se haya inicializado.

IsError(Expresión). Comprueba si expresión devuelve algún valor de error.

IsArray(Expresión). Comprueba si expresión (una variable) es un array o no.

IsObject(Expresión). Comprueba si expresión (una variable) representa una variable tipoobjeto.

IsNull(Expresión). Comprueba si expresión contiene un valor nulo debido a datos noválidos.

Principales FuncionesFUNCIÓN DESCRIPCIÓNAbs Regresa el valor absoluto de un númeroAsc Obtiene el valor ASCII del primer caracter de una cadena de textoCBool Convierte una expresión a su valor booleanoCByte Convierte una expresión al tipo de dato ByteCCur Convierte una expresión al tipo de dato moneda (Currency)CDate Convierte una expresión al tipo de dato fecha (Date)CDbl Convierte una expresión al tipo de dato doble (Double)CDec Convierte una expresión al tipo de dato decimal (Decimal)Chr Convierte un valor ANSI en valor de tipo textoCInt Convierte una expresión en un dato de tipo entero (Int)CLng Convierte una expresión en un dato de tipo largo (Long)CStr Convierte una expresión en un dato de tipo texto (String)CurDir Regresa la ruta actualCVar Convierte una expresión en un dato de tipo variante (Var)Date Regresa la fecha actual del sistemaDateAdd Agrega un intervalo de tiempo a una fecha especificadaDateDiff Obtiene la diferencia entre una fecha y un intervalo de tiempo especificadoDatePart Regresa una parte específica de una fechaDateSerial Convierte una fecha en un número serialDateValue Convierte una cadena de texto en una fechaDay Regresa el día del mes de una fechaDir Regresa el nombre de un archivo o directorio que concuerde con un patrón

Principales FuncionesFUNCIÓN DESCRIPCIÓNEOF Regresa verdadero si se ha llegado al final de un archivoFileDateTime Regresa la fecha y hora de la última modificación de un archivoFileLen Regresa el número de bytes en un archivoFormatCurrency Regresa un número como un texto con formato de monedaFormatPercent Regresa un número como un texto con formato de porcentajeHour Regresa la hora de un valor de tiempoIIf Regresa un de dos partes, dependiendo de la evaluación de una expresiónInputBox Muestra un cuadro de diálogo que solicita la entrada del usuarioInStr Regresa la posición de una cadena de texto dentro de otra cadenaInStrRev Regresa la posición de una cadena de texto dentro de otra cadena pero empezando desde el finalInt Regresa la parte entera de un númeroIsDate Regresa verdadero si la variable es una fechaIsEmpty Regresa verdadero si la variable está vacíaIsError Regresa verdadero si la expresión es un valor de errorIsNull Regresa verdadero si la expresión es un valor nuloIsNumeric Regresa verdadero si la variable es un valor numéricoJoin Regresa una cadena de texto creada al unir las cadenas contenidas en un arreglo.LCase Regresa una cadena convertida en minúsculasLeft Regresa un número específico de caracteres a la izquierda de una cadenaLen Regresa la longitud de una cadena (en caracteres)LTrim Remueve los espacios a la izquierda de una cadenaMid Extrae un número específico de caracteres de una cadena de texto

Principales FuncionesFUNCIÓN DESCRIPCIÓNMinute Regresa el minuto de una dato de tiempoMonth Regresa el mes de una fechaMsgBox Despliega un cuadro de dialogo con un mensaje especificadoNow Regresa la fecha y hora actual del sistemaReplace Reemplaza una cadena de texto con otraSpace regresa una cadena de texto con el número de espacios especificadosSplit Regresa un arreglo formado por cadenas de texto que formaban una sola cadenaStr Regresa la representación en texto de un númeroRight Regresa un número especificado de caracteres a la derecha de una cadena de textoRnd Regresa un número aleatorio entre 0 y 1Round Redondea un número a una cantidad específica de decimalesRTrim Remueve los espacios en blanco a la derecha de una cadena de textoSecond Regresa los segundos de un dato de tiempoStrComp Compara dos cadenas de textoStrReverse Invierte el orden de los caracteres de una cadenaTime Regresa el tiempo actual del sistemaTimer Regresa el número de segundos desde la media nocheTimeValue Convierte una cadena de texto a un númer de serie de tiempoTrim Remueve los espacios en blanco al inicio y final de una cadena de textoTypeName Obtiene el nombre del tipo de dato de una variableUCase Convierte una cadena de texto en mayúsculasVal Regresa el número contenido en una cadena de textoWeekday Regresa un número que representa un día de la semanaWeekdayName Regresa el nombre de un día de la semana

Estructuras Repetitivas (Bucles)

Este tipo de Estructuras nos permite ejecutar más de una vez un mismo bloque de sentencias.

Estructura For

Estructura Do while…Loop (Hacer Mientras)

Estructura Do Until…Loop (Hacer hasta que)

Estructura Do.. Loop While.

Estructura Do.. Loop Until (Hacer hasta que).

Estructura For Each (Por cada).

Estructura ForEs de las instrucciones más útiles en VBA. Su propósito es realizar la repetición de un conjunto de instrucciones un determinado número de veces.

For inicialización de variable To límite

«Conjunto de instrucciones que se repetirán»

Next incrementar variable

Do While/Until…LoopLa diferencia con For Next, es que en esta

estructura no se conoce el número de veces que se ejecutara.

Do { While | Until } Condición[Instrucciones a repetir][Exit Do ][Instrucciones a repetir]

Loop

Do… Loop While/UntilLa diferencia con For Next, es que en esta estructura no se conoce el número de veces que se ejecutara.

Do[Instrucciones a repetir][Exit Do ][Instrucciones a repetir]

Loop { While | Until } Condición

For Each…NextNos permite la manipulación de objetos dentro de una colección. Una colección es el conjunto de elementos de un mismo tipo, por ejemplo, colección de celdas, de hojas, de libros, de ventanas, objetos gráficos, etc.

For Each variable In collection_nameInstrucciones

Next variable

EJERCICIOS.

MUCHAS GRACIAS

[email protected]