SlideShare una empresa de Scribd logo
1 de 70
Descargar para leer sin conexión
1
INDICE
PARTE I:............................................................................................................................................ 4
ALGORITMOS, PSEUDOCÓDIGO Y DIAGRAMAS DE FLUJO ............................................ 4
¿Por qué se programa?............................................................................................................... 4
Lenguajes de programación ....................................................................................................... 4
Clasificación de los Lenguajes de Programación.................................................................... 4
Concepto de Algoritmo................................................................................................................ 5
Características de los Algoritmos .............................................................................................. 6
Lenguajes algorítmicos................................................................................................................ 6
Pseudocódigo ............................................................................................................................... 7
Operadores aritméticos ............................................................................................................... 7
Palabras claves............................................................................................................................. 8
Estructura básica y ejemplo de un Pseudocódigo .................................................................. 8
Características del Pseudocódigo ............................................................................................. 9
Diagrama de Flujo...................................................................................................................... 10
Símbolos y significado............................................................................................................... 10
Reglas al trabajar con un Diagrama de Flujo......................................................................... 10
Ejemplo 1 – Diagrama de Flujo................................................................................................ 11
Ejemplo 2 – Diagrama de Flujo................................................................................................ 12
Ejemplo 3 – Diagrama de Flujo................................................................................................ 13
Resumen...................................................................................................................................... 14
Glosario........................................................................................................................................ 14
PARTE II:......................................................................................................................................... 15
TIPOS DE DATOS, ESTRUCTURA CONDICIONAL Y ESTRUCTURAS REPETITIVAS 15
¿Qué son los datos?.................................................................................................................. 15
Tipos de Datos............................................................................................................................ 15
Datos numéricos......................................................................................................................... 15
Datos lógicos............................................................................................................................... 16
Datos Carácter............................................................................................................................ 16
2
Elementos del Algoritmo ........................................................................................................... 17
Constantes................................................................................................................................... 17
Variables...................................................................................................................................... 17
Expresiones................................................................................................................................. 18
Expresiones aritméticas ............................................................................................................ 19
Reglas de prioridad.................................................................................................................... 19
Expresiones lógicas ................................................................................................................... 19
Ejemplo de constantes .............................................................................................................. 20
Uso de acumuladores (contadores) ........................................................................................ 21
Estructuras repetitivas ............................................................................................................... 22
Estructura repetitiva Para.......................................................................................................... 22
Sintaxis de la estructura Para................................................................................................... 23
Ejemplo Para............................................................................................................................... 24
Estructura repetitiva Mientras................................................................................................... 24
Sintaxis de la estructura Mientras............................................................................................ 25
Ejemplo 1 de Estructura Mientras............................................................................................ 26
Ejemplo 2 de Estructura Mientras............................................................................................ 27
Estructura repetitiva Repetir ..................................................................................................... 27
Sintaxis Estructura Repetir........................................................................................................ 28
Ejemplo Repetir .......................................................................................................................... 29
Resumen...................................................................................................................................... 30
Glosario........................................................................................................................................ 30
PARTE III: ....................................................................................................................................... 31
MACROS EN EXCEL.................................................................................................................... 31
Introducción................................................................................................................................. 31
¿Para qué sirve una Macro? .................................................................................................... 31
¿Cómo crear una Macro? ......................................................................................................... 32
Creación de Macro utilizando la opción de Record Macro .................................................. 34
Creación de Macro utilizando la opción Macros.................................................................... 36
Creación de Macro utilizando el entorno de programación ................................................. 37
Ejecución de Macro.................................................................................................................... 40
• Mediante la opción Developer Code Macros ................................................... 40
3
• Mediante un control........................................................................................................ 41
• Mediante una imagen .................................................................................................... 44
• Mediante una autoforma u otro elemento................................................................... 46
Uso de formularios ..................................................................................................................... 48
• Formulario de Datos....................................................................................................... 48
• Hoja de cálculo con controles de formulario .............................................................. 49
• Formulario de usuario en VBA ..................................................................................... 49
Estructura de un procedimiento empleando el entorno de programación VBA................ 52
Subrutinas.................................................................................................................................... 53
Subrutinas y procedimientos propios ...................................................................................... 53
Funciones .................................................................................................................................... 54
Programas en Visual Basic....................................................................................................... 55
Estructuras condicionales en Visual Basic............................................................................. 56
Estructuras repetitivas en Visual Basic................................................................................... 58
• Mientras… Hacer............................................................................................................ 58
• Repetir… Hasta .............................................................................................................. 58
• Para… Hacer................................................................................................................... 59
ANEXOS.......................................................................................................................................... 60
Anexo 1: Tipos de datos............................................................................................................ 60
Anexo 2: Principales instrucciones VBA empleadas en laboratorios................................. 62
Anexo 3: Depuración de una Macro........................................................................................ 63
Anexo 4: Funciones de texto en Macros ................................................................................ 65
Anexo 5: Otras instrucciones para programar en Macro ..................................................... 66
Anexo 6: La instrucción WorksheetFunction.......................................................................... 68
Anexo 7: Seguridad de macros................................................................................................ 69
4
PARTE I:
ALGORITMOS, PSEUDOCÓDIGO Y DIAGRAMAS DE
FLUJO
¿Por qué se programa?
La principal razón para que las personas aprendan lenguajes y técnicas de programación
es utilizar la computadora como herramienta para resolver problemas. La resolución de un
problema exige al menos los siguientes pasos:
- Definición o análisis del problema
- Diseño del algoritmo
- Transformación del algoritmo en un programa
- Ejecución y validación del programa
Lenguajes de programación
Un lenguaje de programación es un conjunto de símbolos, caracteres y reglas que les
permiten a las personas comunicarse con la computadora.
Los lenguajes de programación tienen un conjunto de instrucciones que nos permiten
realizar operaciones de entrada/salida, cálculo, manipulación de textos, lógica/comparación
y almacenamiento/recuperación.
Clasificación de los Lenguajes de Programación
Los lenguajes de programación se clasifican en:
- Lenguaje máquina: Son aquellos cuyas instrucciones son directamente entendidas
por la computadora y no necesitan de una traducción posterior, por lo que el CPU
puede comprender y ejecutar el programa. Las instrucciones en lenguaje máquina
se expresan en lenguaje binario: 0 y 1.
5
- Lenguaje de Bajo Nivel (Ensamblador): En este lenguaje las instrucciones se
escriben en códigos alfabéticos conocidos como mnemotécnicos para las
operaciones y direcciones simbólicas.
- Lenguaje de Alto Nivel: Son aquellos donde las instrucciones o sentencias son
escritas con palabras similares al lenguaje humano (natural), que en general es en
inglés, por lo que facilita la escritura y comprensión del programa.
Concepto de Algoritmo
En términos generales, un Algoritmo es el método para resolver un determinado problema.
A quien ejecuta las instrucciones definidas para conseguir la tarea, se le llama: Procesador.
Dicho esto, es lógico decir que existirán algoritmos que describen toda clase de procesos,
como por ejemplo: una receta de cocina, las partituras musicales, manual de ensamblado
de una computadora, operación de un equipo pesado, etc. Entonces, un Procesador realiza
un proceso ejecutando el algoritmo correspondiente.
Secuencia del Algoritmo
El siguiente diagrama representa de forma general, el proceso para la resolución de
problemas con la computadora.
6
Características de los Algoritmos
Las características más relevantes de los Algoritmos son:
- Finito: Un algoritmo debe siempre terminar después de un número finito de pasos.
- Definido: Cada paso de un algoritmo debe ser definido en forma precisa,
estableciendo las acciones que se van a efectuar de manera clara y rigurosamente
en cada paso.
- Entradas: Un algoritmo debe tener cero o más entradas. Es decir, cantidades que
se entregan inicialmente al algoritmo antes de su ejecución.
- Salidas: Un algoritmo tiene una o más salidas, es decir, cantidades que tienen una
relación específica respecto a las entradas.
- Efectivo: Significa que todas las operaciones del algoritmo deben ser llevadas a
cabo de forma exacta, sin ambigüedades.
Lenguajes algorítmicos
Un lenguaje algorítmico es una serie de símbolos y reglas que se utilizan para describir de
manera explícita un proceso. Los tipos de lenguaje algorítmico son:
- Gráficos: Son la representación gráfica de las operaciones que realiza un algoritmo
(diagrama de flujo)
7
- No gráficos: Representan de forma descriptiva las operaciones que debe realizar un
algoritmo (pseudocódigo).
Pseudocódigo
Pseudocódigo es la descripción de un algoritmo que asemeja a un lenguaje de
programación, pero con algunas convenciones del lenguaje natural.
Pseudo o seudo, significa “falso”, “imitación” y Código se refiere a las instrucciones escritas
en el lenguaje de programación.
Pseudocódigo no es realmente un código sino una imitación y una versión abreviada de
instrucciones reales para la computadora.
Operadores aritméticos
Los símbolos más usados para operaciones aritméticas son conocidos como Operadores
Aritméticos:
Operador Significado
+ Suma
- Resta
* Multiplicación
/ División
 División entera (cociente entero), también se representa por div
mod Resto división entera
^ Exponenciación (potenciación)
8
Palabras claves
En los pseudocódigos se utilizan palabras claves, y estas pueden estar en español o en
inglés. Se recomienda utilizar durante el desarrollo del pseudocódigo el mismo idioma
Estructura básica y ejemplo de un Pseudocódigo
A continuación se muestra el esquema de un pseudocódigo:
9
Representar en pseudocódigo en inglés, el cálculo del salario de un empleado:
Características del Pseudocódigo
Los pseudocódigos se caracterizan por:
- Mantener una identación o sangría adecuada para la fácil identificación de los
elementos que lo componen.
- Permitir la declaración de los datos (constantes y/o variables) manipulados por el
algoritmo.
- Disponer de un conjunto pequeño y completo de palabras reservadas que permiten
expresar: las acciones elementales, las primitivas de composición de acciones, y la
definición de acciones con nombre.
Ventajas de Pseudocódigo vs. Diagrama de Flujo
- Ocupa menos espacio en una hoja de papel.
- Permite representar en forma fácil operaciones repetitivas complejas.
- Es muy fácil pasar de Pseudocódigo a un programa en algún lenguaje de
programación.
- Si se siguen las reglas se puede observar claramente los niveles que tiene cada
operación.
10
Diagrama de Flujo
Los diagramas de flujo son descripciones gráficas de algoritmos, usan símbolos conectados
con flechas para indicar la secuencia de instrucciones y están regidos por ISO (International
Standard Organization) y ANSI (American National Standards Institute).
Los diagramas de flujo son usados para representar algoritmos pequeños, ya que abarcan
mucho espacio y su construcción es laboriosa. Por su facilidad de lectura son usados como
introducción a los algoritmos, descripción de un lenguaje y descripción de procesos a
personas ajenas a la computación.
Un diagrama de flujo debe ilustrar gráficamente los pasos o procesos a seguir para alcanzar
la solución de un problema.
Símbolos y significado
A continuación se muestran los símbolos convencionalmente aceptados y más comunes:
Reglas al trabajar con un Diagrama de Flujo
- El sentido de un diagrama de flujo generalmente es de arriba hacia abajo.
- En un símbolo solo puede entrar una flecha de flujo, si varias líneas se dirigen al
mismo símbolo, se deben unir en una sola flecha.
- Las líneas de flujo no deben cruzarse, para evitar los cruces se utilizan los
conectores.
- De un símbolo, excepto en el de decisión, solo puede salir una línea de flujo.
- Los símbolos Terminal, Conector dentro de página y Conector fuera de página, solo
pueden estar conectados al diagrama por una sola flecha, ya que por su naturaleza
es imposible que tenga una entrada y una de salida.
- Los rombos de decisión tendrán siempre una sola flecha de entrada y dos o tres
flechas de salida, según la cantidad de alternativas que se presentan.
11
- Un diagrama de flujo debe estar completamente cerrado, teniendo una continuidad
de principio a fin, no pueden quedar flechas en el aire ni símbolos sin conexión al
diagrama, pues el flujo sería interrumpido.
Ejemplo 1 – Diagrama de Flujo
El siguiente Diagrama de Flujo tiene por objetivo encontrar la suma de 2 números leídos
por teclado y mostrar el resultado:
- Se lee el primer número y se guarda en A.
- Se lee el segundo número y se guarda en B.
- Se suma A y B y se almacena en C.
- Se muestra el resultado en C.
12
Ejemplo 2 – Diagrama de Flujo
Calcular el promedio de 2 números
13
Ejemplo 3 – Diagrama de Flujo
Calcular el área de un triángulo:
14
Resumen
Glosario
- Algoritmo: Es un conjunto prescrito de instrucciones o reglas bien definidas,
ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos
que no generen dudas a quien deba realizar dicha actividad.
- Pseudocódigo: Es una descripción de alto nivel, compacta e informal del principio
operativo de un programa informático u otro algoritmo.
15
PARTE II:
TIPOS DE DATOS, ESTRUCTURA CONDICIONAL Y
ESTRUCTURAS REPETITIVAS
¿Qué son los datos?
El primer objetivo de toda computadora es el manejo de la información o datos. Estos datos
pueden ser las cifras de ventas de un supermercado o las calificaciones de una clase. Un
dato es la expresión general que describe los objetivos con los cuales opera una
computadora.
La mayoría de las computadoras pueden trabajar con varios tipos de datos. Los algoritmos
y los programas correspondientes operan sobre datos.
En lenguajes de alto nivel aparece el concepto de Tipos de Datos, así como su
representación.
Tipos de Datos
Los tipos de datos simples son los siguientes:
- Numéricos: integer, real
- Lógicos: boolean
- Carácter: char, string
Aunque existen algunos lenguajes de programación que admiten trabajar con otros tipos de
datos complejos.
Datos numéricos
El tipo de datos numéricos es el conjunto de valores numéricos. Éstos pueden
representarse en dos formas distintas:
- Tipo numérico entero (integer)
- Tipo numérico real (real)
- Enteros: El tipo entero es un subconjunto finito de los números enteros. Los enteros
son números complejos, no tienen componentes fraccionarios o decimales y pueden
ser negativos o positivos.
Los enteros también son llamados números de punto o coma fija, y el rango de estos
números suele ser: -32768 a +32767, fuera de este rango se considera que son
números reales.
16
Ejemplos: 5, -15, 20, 1340.
- Reales: El tipo de dato real consiste en un subconjunto de los números reales. Los
números reales siempre tienen un punto decimal y pueden ser positivos o negativos.
Un número real consta de un entero y una parte decimal.
Pero en la notación científica no siempre se puede expresar el número con un
máximo de 8 dígitos, por lo que se utiliza la notación en coma flotante con
exponenciales positivos o negativos.
Ejemplos:
o De coma fija: 0.08, 3.7452, -8.12, 3739.41, 3.0
o De coma flotante: 4.8672 x 109
, 3.675201 x 10-12
Datos lógicos
El dato de tipo lógico, también conocido como booleano, es aquel dato que solo puede
tomar uno de dos valores:
- Cierto o verdadero (true)
- Falso (False)
Este tipo de datos se utiliza para representar las alternativas (si/no) a determinadas
condiciones. Por ejemplo, cuando se quiere determinar si un valor entero es par, la
respuesta será verdadera o falsa, según sea par o impar dicho número.
Datos Carácter
Los datos de tipo carácter pueden ser de 2 tipos:
- Carácter o char
- Cadena o string
- Carácter: El tipo de dato carácter (char) es el conjunto finito y ordenado de
caracteres que la computadora reconoce. Un dato tipo carácter contiene un solo
carácter.
Los caracteres que reconocen las diferentes computadoras no son estándar; sin
embargo, la mayoría reconoce los siguientes caracteres alfabéticos y numéricos:
o Caracteres alfabéticos (A, B, C, …, Z) (a, b, c, …, z)
o Caracteres numéricos (1, 2, …, 9, 0)
o Caracteres especiales (+, -, *, /, ^, . , ; . < , >, $, …)
- Cadena: Una cadena (string) de caracteres es una sucesión de caracteres que se
encuentran delimitados por una comilla (apóstrofe) o dobles comillas, según el tipo
de lenguaje de programación.
17
La longitud de una cadena de caracteres es el número de ellos comprendidos entre
los separadores o limitadores. Algunos lenguajes tienen datos tipo cadena.
Ejemplos:
o ‘Hola Mortimer’
o “8 de octubre de 1946”
o ‘Sr. Mckenna’
Elementos del Algoritmo
Para la elaboración de un algoritmo es necesario contar con una serie de elementos que
nos permitirán resolver el problema que se nos plantea, los datos podrán ser almacenados
en variables, habrán datos que serán constantes y será necesario muchas veces hacer
cálculos a través de expresiones de diferente tipo, siendo las más comunes las expresiones
numéricas.
A continuación se desarrollarán:
- Constantes
- Variables
- Expresiones
Constantes
Los programas de computadora contienen ciertos valores que no deben cambiar durante la
ejecución del programa, tales valores se llaman constantes. Una constante es una partida
de datos (objetos) que permanecen sin cambios durante todo el desarrollo del algoritmo o
durante la ejecución del programa. Por ejemplo:
- Reales: 1.234, -0.1436, 54437324, 3.374562 x 104
- Carácter:
o Char: ‘B’, ‘+’, ‘4’, ‘;’
o Cadena: ‘Juan Pérez’, “José Luis García”
- Lógicas: verdadero, falso
Variables
De igual forma, existen otros valores que cambiarán durante la ejecución del programa; a
estos valores se les llama variables. Los tipos de variables aceptadas por un lenguaje de
programación suelen ser las ya mencionadas: enteras, reales, carácter, cadena y
booelanas.
18
Una variable que es de un cierto tipo solo puede tomar únicamente valores de ese tipo. Si
se intenta asignar un valor de un tipo a una variable de otro tipo se producirá un error de
tipo.
Una variable se identifica por los siguientes atributos:
- Nombre, que cada uno lo asigna.
- Tipo, que describe el uso de la variable.
Los nombres de las variables, a veces conocidos como identificadores, suelen constar de
varios caracteres alfanuméricos, de los cuales el primero normalmente es una letra. No se
deben utilizar como nombres de identificadores palabras reservadas del lenguaje de
programación.
Por ejemplo:
- A510, Nombres, Notas, Nombre_Apellido
- Los nombres elegidos para las variables deben ser significativos para el programa,
deben tener relación con el objeto que representan, como por ejemplo:
o Nombre (para representar nombres de personas)
o Precios (para representar los precios de diferentes productos)
o Notas (para representar las notas de los alumnos de una clase)
- Muchas veces en los programas se requiere que las variables tengan un valor de
inicio, conocido como inicialización de la variable, por lo que se le podrá asignar un
valor como sigue:
o i: entero
o i = 1
Expresiones
Las expresiones son combinaciones de constantes, variables, símbolos de operación,
paréntesis y nombres de funciones especiales, por ejemplo:
- A + ( b + 3 ) * c
Aquí los paréntesis indican el orden del cálculo. Cada expresión toma un valor que se
determina tomando los valores de las variables y constantes implicadas y la ejecución de
las operaciones indicadas.
Una expresión consta de operandos y operadores. Según sea el tipo de objetos que
manipulan, las expresiones se clasifican en:
- Aritméticas
- Lógicas
- Carácter
19
El resultado de la expresión aritmética es de tipo numérico; el resultado de la expresión
relacional y de una expresión lógica es de tipo lógico; el resultado de una expresión carácter
es de tipo carácter.
Expresiones aritméticas
Las expresiones aritméticas son análogas a las fórmulas matemáticas. Las variables y
constantes son numéricas (real o entera) y las operaciones son las aritméticas.
Reglas de prioridad
Las expresiones que tienen dos o más operandos requieren unas reglas matemáticas que
permitan determinar el orden de las operaciones, se denominan reglas de prioridad o
precedencia y son:
- Las operaciones que están encerradas entre paréntesis se evalúan primero. Si
existen diferentes paréntesis anidados (interiores unos a otros), las expresiones más
internas se evalúan primero.
- Las operaciones aritméticas dentro de una expresión suelen seguir el siguiente
orden de prioridad:
o Operador exponencial (^, o bien **)
o Operadores *, /, 
o Operadores div y mod
o Operadores +, -
Expresiones lógicas
La expresión lógica o booleana, siempre tiene como valor verdadero o falso. Recuerde que
existen dos constantes lógicas: verdad (true) y falso (false) y que las variables lógicas
pueden tomar sólo estos dos valores.
20
Las expresiones lógicas se forman combinando constantes lógicas, variables lógicas y otras
expresiones lógicas, utilizando los operadores lógicos not, and y or, y los operadores de
relación.
Ejemplo de constantes
21
Uso de acumuladores (contadores)
22
Estructuras repetitivas
Las estructuras repetitivas nos permiten iterar un proceso un determinado número de veces.
Se dividen en:
- Para (For)
- Mientras (While)
- Repetir (Do – While)
Estructura repetitiva Para
Al ciclo Para, es el conocido ciclo For, y también se le conoce en castellano como ciclo
Desde_Hasta.
En esta estructura se sabe de antemano la cantidad de veces que debe ejecutarse el ciclo,
este número de veces lo determina una variable contadora (i), que siempre deberá ser de
tipo entera y donde se especifica el límite inferior y el límite superior.
Por cada ciclo luego de ejecutar el bloque de instrucciones, la variable i se incrementará o
disminuirá en 1.
Una vez que el contador llega al valor del límite superior, el ciclo termina.
23
Sintaxis de la estructura Para
- Desde: Indica la variable que se utilizará y el valor que tendrá cuando el bloque de
código se ejecute por primera vez, i = 1.
- Hasta: Debe hacer referencia a la misma variable indicada en el desde, indica una
sentencia lógica, que al momento de cumplirse detendrá el ciclo.
24
- Incremento: Es el incremento de la variable contado, y puede ser positivo o
negativo.
- Bloque de sentencias: Es el conjunto de líneas que se ejecutarán en forma
repetitiva.
Ejemplo Para
Se desea mostrar los 10 primeros números pares y luego su suma:
Estructura repetitiva Mientras
La estructura Mientras es conocida en los lenguajes de programación como ciclo While.
Una de sus características es que verifica si la condición se cumple antes de ingresar al
bloque de código que se va a repetir.
El límite de ejecuciones estará dado por la condición, y se ejecutará mientras la condición
devuelva un valor lógico verdadero.
25
Sintaxis de la estructura Mientras
26
- Mientras: Marca el inicio del bloque de código que se repetirá en forma cíclica.
- Condición: Se refiere a una comparación lógica que se evaluará en cada ejecución
del ciclo, si esta operación lógica entrega un resultado verdadero continúa
ejecutando el bloque de código, en caso contrario saldrá del ciclo y continuará con
la línea de código que está a continuación del Fin Mientras.
- Fin Mientras: Indica el término del bloque de código que se repetirá en forma cíclica.
Ejemplo 1 de Estructura Mientras
Se desea mostrar los 10 primeros números y su suma:
27
Ejemplo 2 de Estructura Mientras
Calcular el promedio de 4 notas
Estructura repetitiva Repetir
Esta estructura tiene varias formas de decir, en inglés es: Do Until, otra forma de indicar
en castellano es: Repetir_Hasta o Hacer_Mientras.
Cual fuese la forma de expresarse, este tipo de ciclo es muy similar a la estructura anterior,
pero se diferencian del momento en que se evalúa la condición. En esta estructura primero
se hace el bloque de sentencias ejecutables, por lo menos una vez y luego se verifica la
condición.
El bloque de sentencias se ejecutará nuevamente cuando se evalúe la condición y ésta sea
verdadera y termina el ciclo cuando la condición sea falsa.
28
Sintaxis Estructura Repetir
29
- Bloque de sentencias: Es el conjunto de instrucciones que se ejecuta.
- Condición: Si se evalúa como verdadera el bloque de sentencias es ejecutado
nuevamente, si es falsa, se termina el ciclo.
Ejemplo Repetir
Se desea mostrar los números impares del 1 hasta el 15, pero de mayor a menor:
30
Resumen
Glosario
- For: Se usa cuando de antemano se conoce la cantidad de elementos.
- While: La condición que evalúa el bucle se pregunta al inicio.
- Do – While: La condición que evalúa el bucle se pregunta al final
Excel Avanzado
31
PARTE III:
MACROS EN EXCEL
Introducción
Las macros en Excel son un conjunto de instrucciones que se ejecutan de manera
secuencial por medio de una orden de ejecución, por medio de un lenguaje de programación
de alto nivel.
En el caso de Microsoft Excel el lenguaje empleado para el uso de Macros es VBA (Visual
Basic for Applications).
La herramienta Microsoft Excel cuenta con un “Editor de Visual Basic” o también conocido
como “Editor VBA”, que permite la creación y/o mantenimiento de las Macros que se tengan
disponibles.
¿Para qué sirve una Macro?
Las Macros en Excel son útiles, entre otros aspectos, porque permiten la automatización
de tareas repetitivas, tales como generación de gráficos, creación de encabezados de
boletas y/o facturas, entre otras.
32
Las Macros ayudan a eliminar tareas repetitivas del trabajo cotidiano al permitirnos utilizar
mejor nuestro tiempo en el análisis de los datos y en la toma de decisiones.
¿Cómo crear una Macro?
En primer lugar debemos generar un libro Excel habilitado para Macros. Para tal fin, es
necesario guardar el libro activo con este tipo de archivo.
33
A continuación debemos ver, en la barra de título de Excel, que el libro se ha guardado
correctamente, con la extensión XLSM:
Para disponer de las distintas herramientas de programación de Macros, se debe habilitar
la ficha de “Developer”. Para hacer ello, se deben seguir los siguientes pasos:
• Hacer clic con el botón derecho del mouse sobre la cinta de opciones:
• En la ventana que se va a mostrar activar Developer, luego hacer clic en OK.
34
Se debe luego visualizar la ficha correspondiente en la cinta de opciones:
Donde se tienen los grupos y opciones correspondientes a la programación de Macros:
Creación de Macro utilizando la opción de Record Macro
La creación de una Macro se puede realizar mediante la opción Developer Code
Record Macro:
Nombre de la
Macro
Dónde se va a
guardar
35
Una vez ingresada la configuración, la opción Record Macro cambia a Stop Recording:
A partir de ese momento todas las acciones que se realicen en el libro activo de Excel se
registrarán en la Macro. Una vez que se ha detenido la grabación, se ha generado la nueva
macro, la cual puede ser vista (y/o ejecutada) desde la opción Developer Code
Macros:
Se debe visualizar en la lista la Macro generada:
36
Creación de Macro utilizando la opción Macros
La creación de una Macro se puede realizar mediante la opción Developer Code
Macros.
Una vez que se hace clic en el botón Create, se activa el entorno de programación VBA,
para que podamos ingresar las instrucciones correspondientes (código) de la nueva Macro
que estamos creando.
Nombre de la
nueva Macro
37
Creación de Macro utilizando el entorno de programación
Es importante que reconozcamos las partes principales del entorno de programación VBA
en Excel, al cual podemos acceder mediante la opción Developer Code Visual Basic,
o mediante la combinación de teclas Alt + F11.
Entre Sub y End Sub se
debe ingresar el código de
la Macro
38
Una vez activado el entorno de programación reconocemos las siguientes partes:
Viendo en detalle el explorador de proyectos tenemos lo siguiente:
Explorador
de proyectos
Ventana de
propiedades
Ventana de
código
Regresar a la hoja
de cálculo
Guardar los
cambios
Ejecutar Macro
Detener Macro
Libro Excel
habilitado para
Macros
“Paquete” donde
se almacenan los
códigos de las
Macros del Libro
39
La creación de una Macro se puede realizar mediante el ingreso directo de código Visual
Basic en el entorno de programación VBA del libro activo.
De igual manera, se debe visualizar la nueva macro ingresada mediante el entorno de
programación,
Ubicándonos debajo de la última
Macro, ingresamos el comando:
Sub <nombre_nueva_macro> y
presionamos Enter. Se debe generar
automáticamente una nueva línea y
el comando End Sub al final.
40
Ejecución de Macro
La ejecución de una Macro se puede hacer de las siguientes maneras:
• Mediante la opción Developer Code Macros
• Mediante un control
• Mediante una imagen
• Mediante una autoforma u otro elemento
• Mediante la opción Developer Code Macros
41
Posteriormente se elige la Macro que se desea ejecutar y se hace clic sobre el botón
Run:
• Mediante un control
Para hacer uso de los controles, nos dirigimos a la opción Developer Controls
Insert; luego se elige de la lista el control que se desea emplear. En el ejemplo
vamos a insertar un control Command Button (ActiveX Control):
42
Se dibuja el control en un lugar de la hoja de cálculo, obteniéndose lo siguiente:
Se pueden visualizar las propiedades del control agregado, haciendo uso de la
opción Developer Controls Properties
Con lo que obtenemos una ventana como la siguiente:
43
A través de esta ventana podemos cambiar alguna propiedad del control, con el
objetivo de comprender de mejor manera el uso del control generado. En nuestro
ejemplo cambiaremos la propiedad Caption (Etiqueta):
Una vez generado (y modificado) el control, hacemos doble clic encima de éste para
ingresar las instrucciones que se realizarán cuando se haga clic en el botón:
Principalmente se invoca a la Macro ingresando su nombre:
Con lo que
obtenemos
44
Guardamos los cambios y regresamos al libro de Excel:
Una vez que se ha regresado al libro de Excel, debemos salir del modo de diseño,
para lo cual debemos hacer clic en la opción correspondiente
Finalmente, hacer clic encima del botón generado para la ejecución de la Macro:
• Mediante una imagen
La ejecución de una Macro se puede realizar mediante la inserción de una imagen
en una hoja de cálculo del libro Excel. Para ello primero insertamos una imagen:
Hacer clic
45
Una vez insertada, cambiar el formato si es necesario y hacer clic con el botón
derecho del mouse. Se debe identificar en el menú contextual la opción Assign
Macro. Hacer clic encima de esa opción.
Se activa la ventana con la lista de Macros disponibles en el libro de Excel activo, y
se elige cuál es la Macro que se va a ejecutar desde la imagen. Luego, se hace clic
en el botón OK.
46
• Mediante una autoforma u otro elemento
De igual manera que con una imagen, la Macro se puede ejecutar mediante una
autoforma. Como ejemplo, se inserta la siguiente autoforma en la hoja de cálculo
activa.
Una vez insertada la autoforma, se siguen los mismos pasos realizados con la
imagen.
47
De igual manera, se siguen estos pasos para ejecutar una Macro mediante otro
elemento (p.ej. un diagrama SmartArt).
48
Uso de formularios
Los formularios en Excel son un método para ingresar datos a nuestras hojas y son de
mucha utilidad porque nos ayudan a evitar errores en la captura de información. Podemos
comparar los formularios de Excel con los formularios impresos en papel.
Existen tres tipos generales de formulario:
• Formulario de Datos
• Hojas de cálculo con controles de formulario o controles ActiveX
• Formularios de usuario en VBA
• Formulario de Datos
Podemos mostrar al usuario la información de una sola fila de una tabla. En este
formulario se puede hacer la edición de la información, crear un nuevo registro para
la tabla o buscar un dato específico. No se puede modificar su diseño.
49
• Hoja de cálculo con controles de formulario
Podemos crear formularios de entrada de datos muy útiles. Por ejemplo, podemos
agregar a nuestra hoja de Excel un control de cuadro combinado para facilitar la
selección de los elementos. De igual manera, podemos agregar otros controles,
como son: botones de comando, cuadros de lista, casillas de verificación, etc.
• Formulario de usuario en VBA
Los formularios de usuario en VBA, también conocidos como UserForm, son
cuadros de diálogo que hacen uso de controles de formulario para solicitar
información al usuario. Estos formularios son creados desde el Editor de Visual
Basic y administrados desde código VBA.
Para crear un formulario de usuario, debemos ingresar al entorno de programación
y mediante la opción Insert UserForm
50
Una vez que se ha creado el formulario de usuario, se arrastran y sueltan los
controles que están disponibles desde el Cuadro de Herramientas:
Se va dando forma al formulario, de acuerdo a lo solicitado o según criterio. Se
ingresa el diverso código Visual Basic a partir del uso de controles. Como ejemplo
ingresaremos un botón de comando en el formulario (cambiándole en la propiedad
Caption la etiqueta del botón):
51
Luego le hacemos doble clic encima del botón generado, para poder ingresar las
instrucciones que se van a realizar cuando hagamos clic sobre ese botón:
Tener en cuenta que esta nueva Macro sólo se ejecutará dentro del formulario. Por
lo tanto no se puede visualizar en la lista de Macros general o mediante el módulo
correspondiente.
Para activar el formulario creado desde una hoja de cálculo en Excel, debemos
generar un botón de comando (recomendable ActiveX) y al hacer doble clic sobre
éste ingresar la siguiente instrucción (previamente se va a cambiar el nombre del
botón de comando):
52
Finalmente, guardamos los cambios, regresamos a la hoja de cálculo activa, salimos
del modo diseño y hacemos clic encima del botón. A continuación, se debe activar
el formulario con todo el contenido generado:
Estructura de un procedimiento empleando el entorno de programación
VBA
Una macro es un procedimiento que se crea en el entorno de programación VBA. Este
entorno, al basarse en el lenguaje de programación Visual Basic, convierte el procedimiento
en una de las siguientes:
• Subrutina
• Función
53
Subrutinas
Se denomina subrutina a una porción de código que tiene como principal función ejecutar
una o varias determinadas tareas. Éstas tienen un nombre para identificarlas y luego
llamarlas para poder utilizarlas. Una subrutina tiene la siguiente estructura:
Sub <nombre_subrutina>
Tarea1
Tarea2
….
End Sub
La siguiente subrutina se crea al hacer doble clic encima de un botón de comando, insertado
en una hoja de cálculo:
Las subrutinas tienen un principio y un fin y éstas pueden tener distinto tipo de alcance, o
sea pueden ser de tipo privadas o públicas. En este ejemplo se tiene una subrutina o
procedimiento de tipo Privado, esto quiere decir que la podemos utilizar sólo en el formulario
o módulo donde está declarada o escrita.
Si quisiéramos que estos procedimientos se puedan llamar desde otro formulario, lo que
tendríamos que hacer es cambiar el alcance del procedimiento, en vez de Private Sub
cambiarlo por Public Sub. Si hacemos esto, ese procedimiento de código puede ser
utilizado desde cualquier parte del proyecto.
Subrutinas y procedimientos propios
También podemos crear nuestros propios Procedimientos y Subrutinas de código, para
ejecutar una determinada tarea. Para crear un procedimiento se debe escribir la palabra
Private Sub o Public Sub (depende del alcance), seguida del nombre del procedimiento (un
nombre que queramos) (interpretamos que el nombre del procedimiento equivale al nombre
de la Macro que se está generando) y los parámetros (opcionalmente). Además el
Inicio de
la
subrutina
a
Fin de la
subrutina
54
procedimiento debe ser escrito en un lugar vacío de la ventana de código, es decir no se
puede crear un procedimiento dentro de otro.
Por ejemplo, se tiene la siguiente subrutina propia:
Si queremos llamar esta subrutina podemos utilizar la anterior subrutina:
E invocar luego a la última subrutina, ingresando su nombre:
Para finalmente ejecutar ambas subrutinas, haciendo clic encima del botón de comando.
Funciones
Las funciones son casi exactamente iguales a las subrutinas, con respecto a la forma en
que se las llama y se las crea o declara en el código. La diferencia fundamental es que
éstas, luego de ejecutar el código que tengan en su interior, retornan un valor, y este valor
luego lo podemos utilizar para una determinada tarea. En cambio las subrutinas, sólo
ejecutan el código que contienen y luego terminan.
Para declarar o crear una función podríamos escribir lo siguiente:
En este caso, la función pide dos valores (valor1 y valor2, de tipo Integer) y debe retornar
un valor de tipo Long (ver los tipos de valores en el anexo Nro. 1). Las funciones pueden
retornar tipo de datos: numéricos, de cadenas, de fecha, arreglos y vectores.
55
Para llamar a la función anterior podríamos hacerlo de la siguiente manera:
En este caso, el control Label1 llamaría a la función Total; la función realizaría la suma de
los valores pasados como parámetros y por último el valor final de la suma se lo asignaría
al control Label1 en su propiedad Caption.
Programas en Visual Basic
Para crear adecuadamente un programa (en nuestro caso una Macro), debemos considerar
instrucciones específicas, como se tiene a continuación: (ejemplo: suma de dos ingresados)
Pseudocódigo Código VBA
1. Inicio
2. Declarar variables num1, num2, resultado
3. Pedir número 1
4. Num1  número 1
5. Pedir número 2
6. Num2  número2
7. resultado = num1+num2
8. Escribir resultado
9. Fin
Sub sumar_dos_numeros()
Dim num1, num2, resultado As Integer
num1 = Range("A2").Value
num2 = Range("A3").Value
resultado = num1 + num2
MsgBox "La suma es: " & resultado
End Sub
Donde:
• Sub…. End Sub: Indican el Inicio y Fin de una subrutina o función
• Sumar_dos_numeros: Nombre de la subrutina (en nuestro caso, el nombre de la
Macro)
• Dim: Indica la declaración de variables
• Num1, num2, resultado: Nombre de las tres variables que se utilizan en la subrutina
• As Integer: Indica que una o varias variables van a ser de tipo Integer
• Num1 = Range(“A2”).Value: El valor que tenga la celda A2 se asigna a la variable
Num1
• Msgbox: Genera un cuadro de diálogo en pantalla para mostrar algún mensaje
En el ejemplo anterior, se tuvo una ejecución secuencial del programa. Existen casos en
que debemos hacer uso de otras formas de ejecución, las cuales se basan en estructuras
condicionales y repetitivas. A continuación se detallan esas estructuras.
56
Estructuras condicionales en Visual Basic
La ejecución de un programa es según el cumplimiento o no de una o varias condiciones.
A continuación se muestra un ejemplo que determina, mediante un programa, si un alumno
está aprobado o desaprobado, en base a su nota final:
Pseudocódigo Código VBA
1. Inicio
2. Declarar variable nota_final
3. Pedir nota final del alumno
4. Nota_final  nota final del alumno
5. Si nota_final >= 13 entonces
Escribir “Alumno aprobado”
Sino
Escribir “Alumno desaprobado”
Fin Si
6. Fin
Sub detalle_alumno()
Dim nota_final As Integer
nota_final = Range("A2").Value
If nota_final >= 13 Then
MsgBox "Alumno aprobado"
Else
MsgBox "Alumno desaprobado"
End If
End Sub
Donde:
• If … Then… Else… End If: Representa el uso de una estructura condicional, que
analiza si la nota final es mayor o igual a 13, y de acuerdo a ello, determina si el
alumno está aprobado o desaprobado.
Se puede tener además el análisis de varias condiciones, para determinar un resultado. En
este caso, se tiene el ejemplo siguiente sobre la validación de una nota (entre 0 y 20):
Pseudocódigo Código VBA
1. Inicio
2. Declarar variable nota
3. Pedir nota alumno
4. nota  nota alumno
5. Si nota>=0 y nota<=20 entonces
Escribir “Nota Valida”
Sino
Escribir “Nota Invalida”
Fin Si
6. Fin
Sub validar_nota()
Dim nota As Integer
nota = Range("A2").Value
If nota >= 0 And nota <= 20 Then
MsgBox "Nota Válida"
Else
MsgBox "Nota Inválida"
End If
End Sub
57
Donde:
• And: Permite unir dos o más condiciones a ser analizadas con la estructura
condicional IF
En este caso, donde se desea analizar dos o más condiciones, se puede utilizar la
instrucción SELECT – CASE. A continuación se muestra un ejemplo de ello, donde se
desea determinar si un producto es categoría A, B o C:
Pseudocódigo Código VBA
1. Inicio
2. Declarar variable categoría
3. Pedir categoría del producto
4. Categoria  categoría del producto
5. Seleccionar Categoria
Caso sea A
Escribir “Producto es cat. A”
Caso sea B
Escribir “Producto es cat. B”
Caso contrario
Escribir “Producto es cat. C”
Fin Selección
6. Fin
Sub categoria_producto2()
Dim categoria As String
categoria = Range("A2").Value
Select Case categoria
Case "A"
MsgBox "Producto es Cat. A"
Case "B"
MsgBox "Producto es Cat. B"
Case Else
MsgBox "Producto es Cat. C"
End Select
End Sub
Donde:
• Select Case categoria: Analiza el valor que tiene la variable categoria
• Case “A”: Se especifica qué va a pasar cuando la variable categoría sea igual a “A”
• Case Else: Se especifica qué va a pasar cuando la variable categoría no
corresponda a ningún caso indicado
• End Select: Indica el final de la instrucción Select Case
58
Estructuras repetitivas en Visual Basic
En términos de programación, un bucle (estructura repetitiva) es una instrucción que nos
permitirá ejecutar repetidamente un conjunto de instrucciones hasta que se no cumpla la
condición que hayamos especificado. Los bucles también son conocidos como ciclos. Se
dividen en:
• Mientras… Hacer (While)
• Repetir… Hasta (Do – While)
• Para… Hacer (For)
Para aplicar cada estructura repetitiva se verá el ejemplo de mostrar en pantalla del número
1 al 5.
• Mientras… Hacer
Pseudocódigo Código VBA
1. Inicio
2. Declarar variable contador
3. Contador = 1
4. Mientras contador<=5 hacer
Escribir contador
Contador = Contador+1
Fin Mientras
5. Fin
Sub numeros()
Dim contador As Integer
contador = 1
While contador <= 5
MsgBox contador
contador = contador + 1
Wend
End Sub
• Repetir… Hasta
Pseudocódigo Código VBA
1. Inicio
2. Declarar variable contador
3. Contador = 1
4. Repetir
Escribir contador
Contador = Contador+1
Hasta que contador>5
5. Fin
Sub numeros1()
Dim contador As Integer
contador = 1
Do
MsgBox contador
contador = contador + 1
Loop Until contador > 5
End Sub
59
• Para… Hacer
Pseudocódigo Código VBA
1. Inicio
2. Declarar variable contador
3. Para contador  1 hasta 5 con paso 1
hacer
Escribir contador
Fin Para
4. Fin
Sub numeros2()
Dim contador As Integer
For contador = 1 To 5
Step 1
MsgBox contador
Next
End Sub
Como se puede ver, para trabajar correctamente una estructura repetitiva es necesario
trabajar con variables que sean CONTADORES o ACUMULADORES. Según estructura
repetitiva este tipo de variable tiene las siguientes características:
• Para… Hacer: El contador toma el valor inicial en la misma estructura. Aumenta su
valor automáticamente.
• Mientras… Hacer / Repetir… Hasta: Se adiciona una instrucción para que el
contador tome un valor inicial y otra instrucción para aumentar su valor.
Mientras… Repetir…
60
ANEXOS
Anexo 1: Tipos de datos
Tipo de Dato Asignación de
almacenamiento
nominal
Intervalo de valores
Boolean En función de la
plataforma de
implementación
True o False
Byte 1 byte 0 a 255 (sin signo)
Char (carácter
individual)
2 bytes 0 a 65535 (sin signo)
Date 8 bytes 0:00:00 (medianoche) del 1 de enero de 0001
a 11:59:59 p.m. del 31 de diciembre de 9999.
Decimal 16 bytes 0 a +/-
79.228.162.514.264.337.593.543.950.335
(+/-7,9... E+28) † sin separador decimal; 0 a
+/-7,9228162514264337593543950335 con
28 posiciones a la derecha del decimal;
el número distinto de cero más pequeño es
+/-0,0000000000000000000000000001 (+/-
1E-28) †
Double (punto
flotante de precisión
doble)
8 bytes -1,79769313486231570E+308 a -
4,94065645841246544E-324 † para los
valores negativos;
4,94065645841246544E-324 a
1,79769313486231570E+308 † para los
valores positivos
Integer 4 bytes -2.147.483.648 a 2.147.483.647 (con signo)
Long (entero largo) 8 bytes -9.223.372.036.854.775.808 a
9.223.372.036.854.775.807 (9,2...E+18 †)
(con signo)
Objeto. 4 bytes en plataforma
de 32 bits
8 bytes en plataforma
de 64 bits
Cualquier tipo puede almacenarse en una
variable de tipo Object
SByte 1 byte -128 a 127 (con signo)
Short (entero corto) 2 bytes -32.768 a 32.767 (con signo)
Single (punto flotante
de precisión sencilla)
4 bytes -3,4028235E+38 a -1,401298E-45 † para los
valores negativos;
1,401298E-45 a 3,4028235E+38 † para los
valores positivos
61
String (longitud
variable)
En función de la
plataforma de
implementación
0 a 2.000 millones de caracteres Unicode
aprox.
UInteger 4 bytes 0 a 4.294.967.295 (sin signo)
ULong 8 bytes 0 a 18.446.744.073.709.551.615
(1,8...E+19 †) (sin signo)
User-
Defined(estructura)
En función de la
plataforma de
implementación
Cada miembro de la estructura tiene un
intervalo de valores determinado por su tipo
de datos y es independiente de los intervalos
de valores correspondientes a los demás
miembros.
UShort 2 bytes 0 a 65.535 (sin signo)
Variant 16 bytes Almacena cualquier tipo de valor (numérico y
no numérico)
62
Anexo 2: Principales instrucciones VBA empleadas en laboratorios
Función / Instrucción Descripción
ActiveCell.FormulaR1C1 = "mes" Ingresa “mes” en la celda activa (empleando
grabación de macro)
Range("F7").Select Selecciona la celda F7
Range(“B5”).Value = Range(“B2”).Value +
Range(“B3”).Value
Suma de los valores que tienen las celdas B2 y
B3, y el resultado se ingresa en la celda B5
Selection.ClearContents Borra todo el contenido de las celdas
seleccionadas
Selection.ClearFormats Borra todos los formatos de las celdas
seleccionadas
ActiveCell.Value = codigo Ingresa en la celda activa el valor que tiene la
variable codigo
ActiveCell.Offset(0,1).Value = nombre En la celda de la siguiente columna de la misma
fila de la celda activa ingresa el valor que tiene la
variable nombre ( sintaxis:
ActiveCell.Offset(fila, columna) )
A = Range(“A1”).Value Asigna en la variable A el contenido de la celda
A1
Llegada = minute(hora) Obtiene los minutos del valor de la variable hora y
lo asigna a la variable llegada
Sueldo = Cells(ActiveCell.Row,
ActiveCell.Column).Value
Obtiene el valor que tiene la celda activa y lo
asigna a la variable Sueldo
For Each celda In Selection.Cells Va a realizar una acción en cada celda de una
selección
Cells(1,1).Value = 5 Ingresa el número 5 en la celda ubicada en la
columna A y en la fila 1 (sintaxis de la instrucción:
Cells(fila, columna) )
Resultado =
WorksheetFunction.Average(Range(“A1:A
10”))
Obtiene el promedio de los números ingresados
en el rango A1:A10 y lo asigna a la variable
Resultado
Worksheets(“datos”).ShowDataForm Dentro de la hoja de cálculo llamada datos
muestra el formulario de datos
Unload me Cierra el formulario en ejecución (formulario de
usuario)
formIngresoNotas.Show Muestra el formulario de usuario llamado
formIngresoNotas
Dim hojaDatos as Worksheet Declara la variable hojaDatos de tipo Hoja de
Cálculo
Set hojaDatos = Worksheets(“datos”) Asigna todo el contenido de la hoja de cálculo
llamada datos a la variable hojaDatos
totalFilas = hojaDatos.Rows.Count Obtiene la cantidad de filas de la variable
hojaDatos y la asigna a la variable totalFilas
nuevaFila =
hojaDatos.Cells(totalFilas,”A”).End(xlUp).
Offset(1,0).Row
Verifica cual es la última fila con información en la
columna A, obtiene el número de fila siguiente y
lo asigna a la variable nuevaFila
Worksheets(“datos”).Cells(1,1).Value Verifica qué valor se tiene en la celda A1 de la
hoja de cálculo llamada datos
ActiveCell.EntireRow.Delete Borra toda la fila donde pertenece la celda activa
63
Anexo 3: Depuración de una Macro
Cuando nos encontramos con errores en nuestras macros podemos depurar el código
utilizando el Editor de Visual Basic, para encontrar fácilmente los errores que pueda
contener nuestro código VBA. Por ejemplo, consideremos la siguiente macro:
Para iniciar con la depuración del código podemos seleccionar la opción del menú Debug
> Step Into o simplemente pulsar la tecla F8.
Esto hará que se inicie la ejecución en la primera línea, la cual se mostrará con un fondo
amarillo indicando que esa instrucción es la que está por ejecutarse.
64
Para continuar con la depuración debemos pulsar de nuevo la tecla F8 hasta llegar al final
del código. Cada vez que pulsamos la tecla F8 suceden las siguientes cosas:
• Excel ejecuta la instrucción que está sombreada en color amarillo
• Si Excel encuentra un error en la instrucción, entonces enviará un mensaje de
error.
• Por el contrario, si no hubo error en dicha instrucción, entonces Excel marcará en
amarillo la siguiente instrucción a ejecutar.
De esta manera podemos ejecutar cada una de las líneas de nuestro código VBA y validar
que no exista error alguno. Regresando a nuestro ejemplo, al momento de llegar a la tercera
instrucción y pulsar la tecla F8, Excel enviará el siguiente mensaje de error:
El mensaje nos advierte que el objeto no admite esa propiedad o método y se está refiriendo
al objeto Range en donde el método Valor no está escrito de manera correcta y por lo tanto
el depurador de VBA no reconoce dicha propiedad. Pulsamos el botón Aceptar / OK para
cerrar el cuadro de diálogo y poder corregir el error en el código.
65
Anexo 4: Funciones de texto en Macros
Para mostrar el resultado de cada ejemplo se puede hacer uso de la instrucción Msgbox.
FUNCIONES PARA MANEJO DE CADENAS
Función Descripción Ejemplo
Len Devuelve la longitud de una cadena Dim rpta As Integer
Dim nombre as String
Nombre = “Juan Perez”
rpta = Len( nombre )
UCase Devuelve el contenido de una cadena
en mayúsculas
Dim xmay As String
xmay = UCase( nombre )
LCase Devuelve el contenido de una cadena
en minúsculas
Dim xmin As String
xmin = LCase( nombre )
Left Devuelve una sub cadena desde la
izquierda de una cadena
Dim lcad As String
lcad = Left(nombre,5)
Right Devuelve una sub cadena desde la
derecha de una cadena
Dim rcad As String
rcad = Right(nombre,4)
Mid Devuelve una sub cadena de
cualquier ubicación dentro de la
cadena
Dim mcad As String
mcad = Mid(nombre,2,5)
InStr Devuelve la posición donde se
encuentra una sub cadena dentro de
una cadena
Dim rpta As Integer
rpta = InStr(nombre, "Per")
Str Convierte un número a cadena Dim cad As String
cad = Str(123)
Val Convierte una cadena numérica a
valor numérico
Dim rpta as Integer
rpta = Val(cad)
Trim Elimina espacios en blanco ubicados
al inicio o final de una cadena
Dim cad as String
cad = Trim(nombre)
String Permite crear una cadena repitiendo
un mismo carácter n veces
Dim cad As String
cad = String(10,”A”)
Space Permite crear una cadena
conformada por n espacios en blanco
Dim cad As String
cad = Space(10)
66
Anexo 5: Otras instrucciones para programar en Macro
Instrucción Descripción Ejemplo
Add Crea una nueva
hoja de cálculo,
tabla, o libro con
Macro. La nueva
hoja de cálculo se
vuelve en la
activa
ActiveWorkbook.Sheets.Add
Before:=Worksheets(Worksheets.Count)
Address Muestra una
celda de con
diferentes
referencias
Set mc = Worksheets("Sheet1").Cells(1, 1)
MsgBox mc.Address() ' $A$1
MsgBox mc.Address(RowAbsolute:=False) ' $A1
MsgBox mc.Address(ReferenceStyle:=xlR1C1) ' R1C1
Autofit Cambia el ancho
de las columnas
del rango
indicado
Worksheets(“Sheet1”).Columns(“A:I”).AutoFit
Worksheets(“Sheet1”).Rows(“1:3”).AutoFit
Worksheets(“Sheet1”).Range(“A1:E1”).Columns.AutoFit
Add Crea una nueva
hoja de cálculo y
lo adiciona a la
lista.
Worksheets.Add Count:=2, Before:=Sheets(1)
Call Invoca a una
macro
Call Proc1
Call Proc2(“Hola Mundo”) En caso la macro necesite
que se pase un argumento
Columns Indica la acción a
realizar en una
columna de una
hoja de cálculo
Worksheets(“Sheet1”).Columns(1).Font.Bold=True
Copy Copia la hoja de
cálculo hacia otra.
Worksheets(“Sheet1”).Copy
After:=Worksheets(“Sheet3”)
Count Muestra la
cantidad de hojas
de cálculo en el
libro
Worksheets.Count
CurrentRegion Devuelve un
objeto Range que
representa la
región actual. La
región actual es
un rango limitado
por cualquier
combinación de
filas y columnas
en blanco.
Worksheets(“Sheet1”).Activate
ActiveCell.CurrentRegion.Select
DateSerial Devuelve un valor
de fecha
Dim LDate as Date
DateSerial(2004, 6, 30)
DateSerial(2004-1, 6, 30)
LDate = DateSerial(2004, 5, 31)
67
Format Convierte un valor
en un formato
diferente
Dim MiTiempo, MiStr
MiTiempo = #17:04:23#
MiStr = Format(Time, “Long Time”)
MiStr = Format(MiTiempo, “hh:mm:ss AMPM”)
Msgbox MiStr
InputBox Permite ingresar
un valor por
teclado
Dim miValor as Variant
miValor = InputBox(“Ingresa un dato”)
Cells(1,1) = miValor
Move Mueve la hoja de
cálculo al final del
libro
Worksheets.Move After:=Sheets(Sheets.Count)
Paste Pega el contenido
de una hoja de
cálculo
Worksheets(“Sheet1”).Range(“C1:C5”).Copy
ActiveSheet.Paste
Destination:=Worksheets(“Sheet1”).Range(“D1:D5”)
PrintPreview Muestra una vista
previa como se
tendrá impresa la
hoja indicada
Worksheets("Sheet1").PrintPreview
PrintOut Imprime la hoja
indicada
ActiveSheet.PrintOut
Worksheets.(“Sheet1”).PrintOut From:=2, To:=3
imprime desde la página 2 hasta la página 3
Worksheets.(“Sheet1”).PrintOut From:=2, To:=3,
Copies:=3 como el ejemplo anterior, con 3 copias
vbCrLf Saltos de línea en
una cadena
Mensaje = “Hola, “ + vbCrLf + “Espero que todo vaya
bien.” + vbCrLf + “Saludos.”
68
Anexo 6: La instrucción WorksheetFunction
Para utilizar funciones de Excel dentro del código Visual Basic, se puede emplear la
instrucción siguiente:
Como se puede ver, ya se tienen acceso a funciones principales de Excel para hacer
cálculos complejos.
69
Anexo 7: Seguridad de macros
Para realizar la configuración de la seguridad de macros, debemos dirigirnos en el libro de
Excel que estamos trabajando las Macros, a la opción: Developer Code Macro
Security.
Luego se activará la siguiente ventana:
70
Donde se debe establecer la seguridad que tendrá el uso de las Macros, una vez que se
cierre el libro y se vuelva a abrir.
La lista que se puede ver resume las diferentes configuraciones de seguridad de macros.
En todos las configuraciones, si el software antivirus instalado funciona con Microsoft Office
y el libro contiene macros, el libro se escanea en busca de virus conocidos antes de que se
abre.
• Deshabilitar todas las macros sin notificación: Haga clic en esta opción si no
confía en las macros. Todas las macros en los documentos y las alertas de seguridad sobre
las macros están deshabilitadas. Si hay documentos que contienen macros sin firmar en
las que confía, puede colocar estos documentos en una ubicación de confianza. Los
documentos de las ubicaciones de confianza se pueden ejecutar sin ser revisados por el
Centro de confianza del sistema de seguridad.
• Deshabilitar todas las macros con notificación: Esta es la configuración
predeterminada. Haga clic en esta opción si desea deshabilitar las macros, pero sí quiere
recibir alertas de seguridad si hay macros. Así, podrá elegir cuándo quiere habilitar esas
macros caso por caso.
• Deshabilitar todas las macros excepto las firmadas digitalmente: Esta
configuración es la misma que la de la opción Deshabilitar todas las macros con
notificación, con la excepción de que si la macro cuenta con una firma digital emitida por un
editor de confianza, la macro se puede ejecutar. Si no ha confiado el editor, se le notificará.
Así, podrá elegir habilitar las macros firmadas o confiar en el editor. Todas las macros sin
firmar están deshabilitadas sin notificación.
• Habilitar todas las macros (no se recomienda, se podría ejecutar código
peligroso): Haga clic en esta opción para permitir que todas las macros se ejecuten.
Utilizando esta configuración no es recomendable porque su equipo es vulnerable a
posibles códigos perjudiciales.
• Confiar en el acceso al modelo de objetos de proyectos de VBA: Esta
configuración es para desarrolladores y se usa para bloquear o deshabilitar el acceso
mediante programación al modelo de objeto de VBA desde cualquier cliente de
automatización. En otras palabras, proporciona una opción de seguridad para el código que
se escribe para automatizar un programa de Office y se manipula mediante programación
el entorno y modelo de objetos de Microsoft Visual Basic para aplicaciones (VBA). Es una
configuración por usuario y por aplicación, y niega el acceso de manera predeterminada.
Esta opción de seguridad dificulta que los programas no autorizados generen códigos
perjudiciales que se replican automáticamente. Para que los clientes de automatización
tengan acceso mediante programación al modelo de objetos de VBA, el usuario que ejecuta
el código debe conceder el acceso. Para habilitar el acceso, active la casilla.

Más contenido relacionado

Similar a Manual - Excel con Macros.pdf

Manual de s10_2005
Manual de s10_2005Manual de s10_2005
Manual de s10_2005Enriqueeeee
 
Vehículo pila combustible 2
Vehículo pila combustible 2Vehículo pila combustible 2
Vehículo pila combustible 2scrip22
 
Vehículo pila combustible 2
Vehículo pila combustible 2Vehículo pila combustible 2
Vehículo pila combustible 2scrip22
 
Tesis doctorado andres perafan
Tesis doctorado andres perafanTesis doctorado andres perafan
Tesis doctorado andres perafanRafael
 
manual-de-preparacin-para-olimpiadas-nacionales-de-mecatrnica
manual-de-preparacin-para-olimpiadas-nacionales-de-mecatrnicamanual-de-preparacin-para-olimpiadas-nacionales-de-mecatrnica
manual-de-preparacin-para-olimpiadas-nacionales-de-mecatrnicaKartel Balder
 
Computacion tic integracion
Computacion tic integracionComputacion tic integracion
Computacion tic integracionJhonatan C-l
 
Organofosforados: Diagnostico tratamiento y prevención de intoxicaciones agud...
Organofosforados: Diagnostico tratamiento y prevención de intoxicaciones agud...Organofosforados: Diagnostico tratamiento y prevención de intoxicaciones agud...
Organofosforados: Diagnostico tratamiento y prevención de intoxicaciones agud...Jean Carlos Cordero Vargas
 
Apuntes prac
Apuntes pracApuntes prac
Apuntes pracJusto Lux
 
Manual de diagnostico tratamiento y prevencion de intoxicaciones causadas por...
Manual de diagnostico tratamiento y prevencion de intoxicaciones causadas por...Manual de diagnostico tratamiento y prevencion de intoxicaciones causadas por...
Manual de diagnostico tratamiento y prevencion de intoxicaciones causadas por...Fundación Plagbol
 
LIBRO "CREANDO EMPRESA"
LIBRO "CREANDO EMPRESA"LIBRO "CREANDO EMPRESA"
LIBRO "CREANDO EMPRESA"patagutel
 

Similar a Manual - Excel con Macros.pdf (20)

Manual de-s10-2005
Manual de-s10-2005Manual de-s10-2005
Manual de-s10-2005
 
Manual de s10_2005
Manual de s10_2005Manual de s10_2005
Manual de s10_2005
 
Vehículo pila combustible 2
Vehículo pila combustible 2Vehículo pila combustible 2
Vehículo pila combustible 2
 
Vehículo pila combustible 2
Vehículo pila combustible 2Vehículo pila combustible 2
Vehículo pila combustible 2
 
Tesis doctorado andres perafan
Tesis doctorado andres perafanTesis doctorado andres perafan
Tesis doctorado andres perafan
 
03 puertos rev08
03 puertos rev0803 puertos rev08
03 puertos rev08
 
manual-de-preparacin-para-olimpiadas-nacionales-de-mecatrnica
manual-de-preparacin-para-olimpiadas-nacionales-de-mecatrnicamanual-de-preparacin-para-olimpiadas-nacionales-de-mecatrnica
manual-de-preparacin-para-olimpiadas-nacionales-de-mecatrnica
 
Tutorial moodle, paideia pucp
Tutorial moodle, paideia pucpTutorial moodle, paideia pucp
Tutorial moodle, paideia pucp
 
Manual de C
Manual de CManual de C
Manual de C
 
Sintonizacion PID
Sintonizacion PID Sintonizacion PID
Sintonizacion PID
 
Computacion tic integracion
Computacion tic integracionComputacion tic integracion
Computacion tic integracion
 
Manual de c# 2
Manual de c# 2Manual de c# 2
Manual de c# 2
 
Organofosforados: Diagnostico tratamiento y prevención de intoxicaciones agud...
Organofosforados: Diagnostico tratamiento y prevención de intoxicaciones agud...Organofosforados: Diagnostico tratamiento y prevención de intoxicaciones agud...
Organofosforados: Diagnostico tratamiento y prevención de intoxicaciones agud...
 
Apuntes prac
Apuntes pracApuntes prac
Apuntes prac
 
Estadistica ii
Estadistica iiEstadistica ii
Estadistica ii
 
Estadistica
EstadisticaEstadistica
Estadistica
 
Manual de diagnostico tratamiento y prevencion de intoxicaciones causadas por...
Manual de diagnostico tratamiento y prevencion de intoxicaciones causadas por...Manual de diagnostico tratamiento y prevencion de intoxicaciones causadas por...
Manual de diagnostico tratamiento y prevencion de intoxicaciones causadas por...
 
Modulo i
Modulo iModulo i
Modulo i
 
LIBRO "CREANDO EMPRESA"
LIBRO "CREANDO EMPRESA"LIBRO "CREANDO EMPRESA"
LIBRO "CREANDO EMPRESA"
 
Apunte Rup
Apunte RupApunte Rup
Apunte Rup
 

Último

Code name Anastasia parte - 1(1)-páginas-1.pdf
Code name Anastasia parte - 1(1)-páginas-1.pdfCode name Anastasia parte - 1(1)-páginas-1.pdf
Code name Anastasia parte - 1(1)-páginas-1.pdfnaladosol
 
Code name Anastasia parte 1 - capitulo - 2(1)-páginas-2.pdf
Code name Anastasia parte 1 - capitulo - 2(1)-páginas-2.pdfCode name Anastasia parte 1 - capitulo - 2(1)-páginas-2.pdf
Code name Anastasia parte 1 - capitulo - 2(1)-páginas-2.pdfnaladosol
 
Matemática universitaria de AlgebraLineal.pdf
Matemática universitaria de AlgebraLineal.pdfMatemática universitaria de AlgebraLineal.pdf
Matemática universitaria de AlgebraLineal.pdfFAUSTODANILOCRUZCAST
 
RESUMEN DE LA PELÍCULA DE CHERNOBYL ENFOCADO A MEDICINA DEL TRABAJO
RESUMEN DE LA PELÍCULA DE CHERNOBYL ENFOCADO A MEDICINA DEL TRABAJORESUMEN DE LA PELÍCULA DE CHERNOBYL ENFOCADO A MEDICINA DEL TRABAJO
RESUMEN DE LA PELÍCULA DE CHERNOBYL ENFOCADO A MEDICINA DEL TRABAJOLuisFigueroa230128
 
Mujeres que corren con los lobos en la noche.pdf
Mujeres que corren con los lobos en la noche.pdfMujeres que corren con los lobos en la noche.pdf
Mujeres que corren con los lobos en la noche.pdfKeilly Merlo
 
TRIFOLIO DIA DE LA TIERRA.pdf Perdida libertad y educación social. • Pérdida ...
TRIFOLIO DIA DE LA TIERRA.pdf Perdida libertad y educación social. • Pérdida ...TRIFOLIO DIA DE LA TIERRA.pdf Perdida libertad y educación social. • Pérdida ...
TRIFOLIO DIA DE LA TIERRA.pdf Perdida libertad y educación social. • Pérdida ...univerzalworld
 
(HOTD) Las Grandes Casas de Westeros y su estado previo a la Danza de los Dra...
(HOTD) Las Grandes Casas de Westeros y su estado previo a la Danza de los Dra...(HOTD) Las Grandes Casas de Westeros y su estado previo a la Danza de los Dra...
(HOTD) Las Grandes Casas de Westeros y su estado previo a la Danza de los Dra...patriciooviedo3
 
Code name Anastasia parte - 1(1)-páginas-3.pdf
Code name Anastasia parte - 1(1)-páginas-3.pdfCode name Anastasia parte - 1(1)-páginas-3.pdf
Code name Anastasia parte - 1(1)-páginas-3.pdfnaladosol
 
Code name Anastasia parte -1(1)-páginas-4.pdf
Code name Anastasia parte -1(1)-páginas-4.pdfCode name Anastasia parte -1(1)-páginas-4.pdf
Code name Anastasia parte -1(1)-páginas-4.pdfnaladosol
 
EL QUIJOTE.pdf Libro adaptado de la edicion vicens vives de clasicos hispanicoss
EL QUIJOTE.pdf Libro adaptado de la edicion vicens vives de clasicos hispanicossEL QUIJOTE.pdf Libro adaptado de la edicion vicens vives de clasicos hispanicoss
EL QUIJOTE.pdf Libro adaptado de la edicion vicens vives de clasicos hispanicossLucasJohnHuntingford
 
Programación de las Fiestas de San Isidro 2024.pdf
Programación de las Fiestas de San Isidro 2024.pdfProgramación de las Fiestas de San Isidro 2024.pdf
Programación de las Fiestas de San Isidro 2024.pdf20minutos
 

Último (11)

Code name Anastasia parte - 1(1)-páginas-1.pdf
Code name Anastasia parte - 1(1)-páginas-1.pdfCode name Anastasia parte - 1(1)-páginas-1.pdf
Code name Anastasia parte - 1(1)-páginas-1.pdf
 
Code name Anastasia parte 1 - capitulo - 2(1)-páginas-2.pdf
Code name Anastasia parte 1 - capitulo - 2(1)-páginas-2.pdfCode name Anastasia parte 1 - capitulo - 2(1)-páginas-2.pdf
Code name Anastasia parte 1 - capitulo - 2(1)-páginas-2.pdf
 
Matemática universitaria de AlgebraLineal.pdf
Matemática universitaria de AlgebraLineal.pdfMatemática universitaria de AlgebraLineal.pdf
Matemática universitaria de AlgebraLineal.pdf
 
RESUMEN DE LA PELÍCULA DE CHERNOBYL ENFOCADO A MEDICINA DEL TRABAJO
RESUMEN DE LA PELÍCULA DE CHERNOBYL ENFOCADO A MEDICINA DEL TRABAJORESUMEN DE LA PELÍCULA DE CHERNOBYL ENFOCADO A MEDICINA DEL TRABAJO
RESUMEN DE LA PELÍCULA DE CHERNOBYL ENFOCADO A MEDICINA DEL TRABAJO
 
Mujeres que corren con los lobos en la noche.pdf
Mujeres que corren con los lobos en la noche.pdfMujeres que corren con los lobos en la noche.pdf
Mujeres que corren con los lobos en la noche.pdf
 
TRIFOLIO DIA DE LA TIERRA.pdf Perdida libertad y educación social. • Pérdida ...
TRIFOLIO DIA DE LA TIERRA.pdf Perdida libertad y educación social. • Pérdida ...TRIFOLIO DIA DE LA TIERRA.pdf Perdida libertad y educación social. • Pérdida ...
TRIFOLIO DIA DE LA TIERRA.pdf Perdida libertad y educación social. • Pérdida ...
 
(HOTD) Las Grandes Casas de Westeros y su estado previo a la Danza de los Dra...
(HOTD) Las Grandes Casas de Westeros y su estado previo a la Danza de los Dra...(HOTD) Las Grandes Casas de Westeros y su estado previo a la Danza de los Dra...
(HOTD) Las Grandes Casas de Westeros y su estado previo a la Danza de los Dra...
 
Code name Anastasia parte - 1(1)-páginas-3.pdf
Code name Anastasia parte - 1(1)-páginas-3.pdfCode name Anastasia parte - 1(1)-páginas-3.pdf
Code name Anastasia parte - 1(1)-páginas-3.pdf
 
Code name Anastasia parte -1(1)-páginas-4.pdf
Code name Anastasia parte -1(1)-páginas-4.pdfCode name Anastasia parte -1(1)-páginas-4.pdf
Code name Anastasia parte -1(1)-páginas-4.pdf
 
EL QUIJOTE.pdf Libro adaptado de la edicion vicens vives de clasicos hispanicoss
EL QUIJOTE.pdf Libro adaptado de la edicion vicens vives de clasicos hispanicossEL QUIJOTE.pdf Libro adaptado de la edicion vicens vives de clasicos hispanicoss
EL QUIJOTE.pdf Libro adaptado de la edicion vicens vives de clasicos hispanicoss
 
Programación de las Fiestas de San Isidro 2024.pdf
Programación de las Fiestas de San Isidro 2024.pdfProgramación de las Fiestas de San Isidro 2024.pdf
Programación de las Fiestas de San Isidro 2024.pdf
 

Manual - Excel con Macros.pdf

  • 1. 1 INDICE PARTE I:............................................................................................................................................ 4 ALGORITMOS, PSEUDOCÓDIGO Y DIAGRAMAS DE FLUJO ............................................ 4 ¿Por qué se programa?............................................................................................................... 4 Lenguajes de programación ....................................................................................................... 4 Clasificación de los Lenguajes de Programación.................................................................... 4 Concepto de Algoritmo................................................................................................................ 5 Características de los Algoritmos .............................................................................................. 6 Lenguajes algorítmicos................................................................................................................ 6 Pseudocódigo ............................................................................................................................... 7 Operadores aritméticos ............................................................................................................... 7 Palabras claves............................................................................................................................. 8 Estructura básica y ejemplo de un Pseudocódigo .................................................................. 8 Características del Pseudocódigo ............................................................................................. 9 Diagrama de Flujo...................................................................................................................... 10 Símbolos y significado............................................................................................................... 10 Reglas al trabajar con un Diagrama de Flujo......................................................................... 10 Ejemplo 1 – Diagrama de Flujo................................................................................................ 11 Ejemplo 2 – Diagrama de Flujo................................................................................................ 12 Ejemplo 3 – Diagrama de Flujo................................................................................................ 13 Resumen...................................................................................................................................... 14 Glosario........................................................................................................................................ 14 PARTE II:......................................................................................................................................... 15 TIPOS DE DATOS, ESTRUCTURA CONDICIONAL Y ESTRUCTURAS REPETITIVAS 15 ¿Qué son los datos?.................................................................................................................. 15 Tipos de Datos............................................................................................................................ 15 Datos numéricos......................................................................................................................... 15 Datos lógicos............................................................................................................................... 16 Datos Carácter............................................................................................................................ 16
  • 2. 2 Elementos del Algoritmo ........................................................................................................... 17 Constantes................................................................................................................................... 17 Variables...................................................................................................................................... 17 Expresiones................................................................................................................................. 18 Expresiones aritméticas ............................................................................................................ 19 Reglas de prioridad.................................................................................................................... 19 Expresiones lógicas ................................................................................................................... 19 Ejemplo de constantes .............................................................................................................. 20 Uso de acumuladores (contadores) ........................................................................................ 21 Estructuras repetitivas ............................................................................................................... 22 Estructura repetitiva Para.......................................................................................................... 22 Sintaxis de la estructura Para................................................................................................... 23 Ejemplo Para............................................................................................................................... 24 Estructura repetitiva Mientras................................................................................................... 24 Sintaxis de la estructura Mientras............................................................................................ 25 Ejemplo 1 de Estructura Mientras............................................................................................ 26 Ejemplo 2 de Estructura Mientras............................................................................................ 27 Estructura repetitiva Repetir ..................................................................................................... 27 Sintaxis Estructura Repetir........................................................................................................ 28 Ejemplo Repetir .......................................................................................................................... 29 Resumen...................................................................................................................................... 30 Glosario........................................................................................................................................ 30 PARTE III: ....................................................................................................................................... 31 MACROS EN EXCEL.................................................................................................................... 31 Introducción................................................................................................................................. 31 ¿Para qué sirve una Macro? .................................................................................................... 31 ¿Cómo crear una Macro? ......................................................................................................... 32 Creación de Macro utilizando la opción de Record Macro .................................................. 34 Creación de Macro utilizando la opción Macros.................................................................... 36 Creación de Macro utilizando el entorno de programación ................................................. 37 Ejecución de Macro.................................................................................................................... 40 • Mediante la opción Developer Code Macros ................................................... 40
  • 3. 3 • Mediante un control........................................................................................................ 41 • Mediante una imagen .................................................................................................... 44 • Mediante una autoforma u otro elemento................................................................... 46 Uso de formularios ..................................................................................................................... 48 • Formulario de Datos....................................................................................................... 48 • Hoja de cálculo con controles de formulario .............................................................. 49 • Formulario de usuario en VBA ..................................................................................... 49 Estructura de un procedimiento empleando el entorno de programación VBA................ 52 Subrutinas.................................................................................................................................... 53 Subrutinas y procedimientos propios ...................................................................................... 53 Funciones .................................................................................................................................... 54 Programas en Visual Basic....................................................................................................... 55 Estructuras condicionales en Visual Basic............................................................................. 56 Estructuras repetitivas en Visual Basic................................................................................... 58 • Mientras… Hacer............................................................................................................ 58 • Repetir… Hasta .............................................................................................................. 58 • Para… Hacer................................................................................................................... 59 ANEXOS.......................................................................................................................................... 60 Anexo 1: Tipos de datos............................................................................................................ 60 Anexo 2: Principales instrucciones VBA empleadas en laboratorios................................. 62 Anexo 3: Depuración de una Macro........................................................................................ 63 Anexo 4: Funciones de texto en Macros ................................................................................ 65 Anexo 5: Otras instrucciones para programar en Macro ..................................................... 66 Anexo 6: La instrucción WorksheetFunction.......................................................................... 68 Anexo 7: Seguridad de macros................................................................................................ 69
  • 4. 4 PARTE I: ALGORITMOS, PSEUDOCÓDIGO Y DIAGRAMAS DE FLUJO ¿Por qué se programa? La principal razón para que las personas aprendan lenguajes y técnicas de programación es utilizar la computadora como herramienta para resolver problemas. La resolución de un problema exige al menos los siguientes pasos: - Definición o análisis del problema - Diseño del algoritmo - Transformación del algoritmo en un programa - Ejecución y validación del programa Lenguajes de programación Un lenguaje de programación es un conjunto de símbolos, caracteres y reglas que les permiten a las personas comunicarse con la computadora. Los lenguajes de programación tienen un conjunto de instrucciones que nos permiten realizar operaciones de entrada/salida, cálculo, manipulación de textos, lógica/comparación y almacenamiento/recuperación. Clasificación de los Lenguajes de Programación Los lenguajes de programación se clasifican en: - Lenguaje máquina: Son aquellos cuyas instrucciones son directamente entendidas por la computadora y no necesitan de una traducción posterior, por lo que el CPU puede comprender y ejecutar el programa. Las instrucciones en lenguaje máquina se expresan en lenguaje binario: 0 y 1.
  • 5. 5 - Lenguaje de Bajo Nivel (Ensamblador): En este lenguaje las instrucciones se escriben en códigos alfabéticos conocidos como mnemotécnicos para las operaciones y direcciones simbólicas. - Lenguaje de Alto Nivel: Son aquellos donde las instrucciones o sentencias son escritas con palabras similares al lenguaje humano (natural), que en general es en inglés, por lo que facilita la escritura y comprensión del programa. Concepto de Algoritmo En términos generales, un Algoritmo es el método para resolver un determinado problema. A quien ejecuta las instrucciones definidas para conseguir la tarea, se le llama: Procesador. Dicho esto, es lógico decir que existirán algoritmos que describen toda clase de procesos, como por ejemplo: una receta de cocina, las partituras musicales, manual de ensamblado de una computadora, operación de un equipo pesado, etc. Entonces, un Procesador realiza un proceso ejecutando el algoritmo correspondiente. Secuencia del Algoritmo El siguiente diagrama representa de forma general, el proceso para la resolución de problemas con la computadora.
  • 6. 6 Características de los Algoritmos Las características más relevantes de los Algoritmos son: - Finito: Un algoritmo debe siempre terminar después de un número finito de pasos. - Definido: Cada paso de un algoritmo debe ser definido en forma precisa, estableciendo las acciones que se van a efectuar de manera clara y rigurosamente en cada paso. - Entradas: Un algoritmo debe tener cero o más entradas. Es decir, cantidades que se entregan inicialmente al algoritmo antes de su ejecución. - Salidas: Un algoritmo tiene una o más salidas, es decir, cantidades que tienen una relación específica respecto a las entradas. - Efectivo: Significa que todas las operaciones del algoritmo deben ser llevadas a cabo de forma exacta, sin ambigüedades. Lenguajes algorítmicos Un lenguaje algorítmico es una serie de símbolos y reglas que se utilizan para describir de manera explícita un proceso. Los tipos de lenguaje algorítmico son: - Gráficos: Son la representación gráfica de las operaciones que realiza un algoritmo (diagrama de flujo)
  • 7. 7 - No gráficos: Representan de forma descriptiva las operaciones que debe realizar un algoritmo (pseudocódigo). Pseudocódigo Pseudocódigo es la descripción de un algoritmo que asemeja a un lenguaje de programación, pero con algunas convenciones del lenguaje natural. Pseudo o seudo, significa “falso”, “imitación” y Código se refiere a las instrucciones escritas en el lenguaje de programación. Pseudocódigo no es realmente un código sino una imitación y una versión abreviada de instrucciones reales para la computadora. Operadores aritméticos Los símbolos más usados para operaciones aritméticas son conocidos como Operadores Aritméticos: Operador Significado + Suma - Resta * Multiplicación / División División entera (cociente entero), también se representa por div mod Resto división entera ^ Exponenciación (potenciación)
  • 8. 8 Palabras claves En los pseudocódigos se utilizan palabras claves, y estas pueden estar en español o en inglés. Se recomienda utilizar durante el desarrollo del pseudocódigo el mismo idioma Estructura básica y ejemplo de un Pseudocódigo A continuación se muestra el esquema de un pseudocódigo:
  • 9. 9 Representar en pseudocódigo en inglés, el cálculo del salario de un empleado: Características del Pseudocódigo Los pseudocódigos se caracterizan por: - Mantener una identación o sangría adecuada para la fácil identificación de los elementos que lo componen. - Permitir la declaración de los datos (constantes y/o variables) manipulados por el algoritmo. - Disponer de un conjunto pequeño y completo de palabras reservadas que permiten expresar: las acciones elementales, las primitivas de composición de acciones, y la definición de acciones con nombre. Ventajas de Pseudocódigo vs. Diagrama de Flujo - Ocupa menos espacio en una hoja de papel. - Permite representar en forma fácil operaciones repetitivas complejas. - Es muy fácil pasar de Pseudocódigo a un programa en algún lenguaje de programación. - Si se siguen las reglas se puede observar claramente los niveles que tiene cada operación.
  • 10. 10 Diagrama de Flujo Los diagramas de flujo son descripciones gráficas de algoritmos, usan símbolos conectados con flechas para indicar la secuencia de instrucciones y están regidos por ISO (International Standard Organization) y ANSI (American National Standards Institute). Los diagramas de flujo son usados para representar algoritmos pequeños, ya que abarcan mucho espacio y su construcción es laboriosa. Por su facilidad de lectura son usados como introducción a los algoritmos, descripción de un lenguaje y descripción de procesos a personas ajenas a la computación. Un diagrama de flujo debe ilustrar gráficamente los pasos o procesos a seguir para alcanzar la solución de un problema. Símbolos y significado A continuación se muestran los símbolos convencionalmente aceptados y más comunes: Reglas al trabajar con un Diagrama de Flujo - El sentido de un diagrama de flujo generalmente es de arriba hacia abajo. - En un símbolo solo puede entrar una flecha de flujo, si varias líneas se dirigen al mismo símbolo, se deben unir en una sola flecha. - Las líneas de flujo no deben cruzarse, para evitar los cruces se utilizan los conectores. - De un símbolo, excepto en el de decisión, solo puede salir una línea de flujo. - Los símbolos Terminal, Conector dentro de página y Conector fuera de página, solo pueden estar conectados al diagrama por una sola flecha, ya que por su naturaleza es imposible que tenga una entrada y una de salida. - Los rombos de decisión tendrán siempre una sola flecha de entrada y dos o tres flechas de salida, según la cantidad de alternativas que se presentan.
  • 11. 11 - Un diagrama de flujo debe estar completamente cerrado, teniendo una continuidad de principio a fin, no pueden quedar flechas en el aire ni símbolos sin conexión al diagrama, pues el flujo sería interrumpido. Ejemplo 1 – Diagrama de Flujo El siguiente Diagrama de Flujo tiene por objetivo encontrar la suma de 2 números leídos por teclado y mostrar el resultado: - Se lee el primer número y se guarda en A. - Se lee el segundo número y se guarda en B. - Se suma A y B y se almacena en C. - Se muestra el resultado en C.
  • 12. 12 Ejemplo 2 – Diagrama de Flujo Calcular el promedio de 2 números
  • 13. 13 Ejemplo 3 – Diagrama de Flujo Calcular el área de un triángulo:
  • 14. 14 Resumen Glosario - Algoritmo: Es un conjunto prescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos que no generen dudas a quien deba realizar dicha actividad. - Pseudocódigo: Es una descripción de alto nivel, compacta e informal del principio operativo de un programa informático u otro algoritmo.
  • 15. 15 PARTE II: TIPOS DE DATOS, ESTRUCTURA CONDICIONAL Y ESTRUCTURAS REPETITIVAS ¿Qué son los datos? El primer objetivo de toda computadora es el manejo de la información o datos. Estos datos pueden ser las cifras de ventas de un supermercado o las calificaciones de una clase. Un dato es la expresión general que describe los objetivos con los cuales opera una computadora. La mayoría de las computadoras pueden trabajar con varios tipos de datos. Los algoritmos y los programas correspondientes operan sobre datos. En lenguajes de alto nivel aparece el concepto de Tipos de Datos, así como su representación. Tipos de Datos Los tipos de datos simples son los siguientes: - Numéricos: integer, real - Lógicos: boolean - Carácter: char, string Aunque existen algunos lenguajes de programación que admiten trabajar con otros tipos de datos complejos. Datos numéricos El tipo de datos numéricos es el conjunto de valores numéricos. Éstos pueden representarse en dos formas distintas: - Tipo numérico entero (integer) - Tipo numérico real (real) - Enteros: El tipo entero es un subconjunto finito de los números enteros. Los enteros son números complejos, no tienen componentes fraccionarios o decimales y pueden ser negativos o positivos. Los enteros también son llamados números de punto o coma fija, y el rango de estos números suele ser: -32768 a +32767, fuera de este rango se considera que son números reales.
  • 16. 16 Ejemplos: 5, -15, 20, 1340. - Reales: El tipo de dato real consiste en un subconjunto de los números reales. Los números reales siempre tienen un punto decimal y pueden ser positivos o negativos. Un número real consta de un entero y una parte decimal. Pero en la notación científica no siempre se puede expresar el número con un máximo de 8 dígitos, por lo que se utiliza la notación en coma flotante con exponenciales positivos o negativos. Ejemplos: o De coma fija: 0.08, 3.7452, -8.12, 3739.41, 3.0 o De coma flotante: 4.8672 x 109 , 3.675201 x 10-12 Datos lógicos El dato de tipo lógico, también conocido como booleano, es aquel dato que solo puede tomar uno de dos valores: - Cierto o verdadero (true) - Falso (False) Este tipo de datos se utiliza para representar las alternativas (si/no) a determinadas condiciones. Por ejemplo, cuando se quiere determinar si un valor entero es par, la respuesta será verdadera o falsa, según sea par o impar dicho número. Datos Carácter Los datos de tipo carácter pueden ser de 2 tipos: - Carácter o char - Cadena o string - Carácter: El tipo de dato carácter (char) es el conjunto finito y ordenado de caracteres que la computadora reconoce. Un dato tipo carácter contiene un solo carácter. Los caracteres que reconocen las diferentes computadoras no son estándar; sin embargo, la mayoría reconoce los siguientes caracteres alfabéticos y numéricos: o Caracteres alfabéticos (A, B, C, …, Z) (a, b, c, …, z) o Caracteres numéricos (1, 2, …, 9, 0) o Caracteres especiales (+, -, *, /, ^, . , ; . < , >, $, …) - Cadena: Una cadena (string) de caracteres es una sucesión de caracteres que se encuentran delimitados por una comilla (apóstrofe) o dobles comillas, según el tipo de lenguaje de programación.
  • 17. 17 La longitud de una cadena de caracteres es el número de ellos comprendidos entre los separadores o limitadores. Algunos lenguajes tienen datos tipo cadena. Ejemplos: o ‘Hola Mortimer’ o “8 de octubre de 1946” o ‘Sr. Mckenna’ Elementos del Algoritmo Para la elaboración de un algoritmo es necesario contar con una serie de elementos que nos permitirán resolver el problema que se nos plantea, los datos podrán ser almacenados en variables, habrán datos que serán constantes y será necesario muchas veces hacer cálculos a través de expresiones de diferente tipo, siendo las más comunes las expresiones numéricas. A continuación se desarrollarán: - Constantes - Variables - Expresiones Constantes Los programas de computadora contienen ciertos valores que no deben cambiar durante la ejecución del programa, tales valores se llaman constantes. Una constante es una partida de datos (objetos) que permanecen sin cambios durante todo el desarrollo del algoritmo o durante la ejecución del programa. Por ejemplo: - Reales: 1.234, -0.1436, 54437324, 3.374562 x 104 - Carácter: o Char: ‘B’, ‘+’, ‘4’, ‘;’ o Cadena: ‘Juan Pérez’, “José Luis García” - Lógicas: verdadero, falso Variables De igual forma, existen otros valores que cambiarán durante la ejecución del programa; a estos valores se les llama variables. Los tipos de variables aceptadas por un lenguaje de programación suelen ser las ya mencionadas: enteras, reales, carácter, cadena y booelanas.
  • 18. 18 Una variable que es de un cierto tipo solo puede tomar únicamente valores de ese tipo. Si se intenta asignar un valor de un tipo a una variable de otro tipo se producirá un error de tipo. Una variable se identifica por los siguientes atributos: - Nombre, que cada uno lo asigna. - Tipo, que describe el uso de la variable. Los nombres de las variables, a veces conocidos como identificadores, suelen constar de varios caracteres alfanuméricos, de los cuales el primero normalmente es una letra. No se deben utilizar como nombres de identificadores palabras reservadas del lenguaje de programación. Por ejemplo: - A510, Nombres, Notas, Nombre_Apellido - Los nombres elegidos para las variables deben ser significativos para el programa, deben tener relación con el objeto que representan, como por ejemplo: o Nombre (para representar nombres de personas) o Precios (para representar los precios de diferentes productos) o Notas (para representar las notas de los alumnos de una clase) - Muchas veces en los programas se requiere que las variables tengan un valor de inicio, conocido como inicialización de la variable, por lo que se le podrá asignar un valor como sigue: o i: entero o i = 1 Expresiones Las expresiones son combinaciones de constantes, variables, símbolos de operación, paréntesis y nombres de funciones especiales, por ejemplo: - A + ( b + 3 ) * c Aquí los paréntesis indican el orden del cálculo. Cada expresión toma un valor que se determina tomando los valores de las variables y constantes implicadas y la ejecución de las operaciones indicadas. Una expresión consta de operandos y operadores. Según sea el tipo de objetos que manipulan, las expresiones se clasifican en: - Aritméticas - Lógicas - Carácter
  • 19. 19 El resultado de la expresión aritmética es de tipo numérico; el resultado de la expresión relacional y de una expresión lógica es de tipo lógico; el resultado de una expresión carácter es de tipo carácter. Expresiones aritméticas Las expresiones aritméticas son análogas a las fórmulas matemáticas. Las variables y constantes son numéricas (real o entera) y las operaciones son las aritméticas. Reglas de prioridad Las expresiones que tienen dos o más operandos requieren unas reglas matemáticas que permitan determinar el orden de las operaciones, se denominan reglas de prioridad o precedencia y son: - Las operaciones que están encerradas entre paréntesis se evalúan primero. Si existen diferentes paréntesis anidados (interiores unos a otros), las expresiones más internas se evalúan primero. - Las operaciones aritméticas dentro de una expresión suelen seguir el siguiente orden de prioridad: o Operador exponencial (^, o bien **) o Operadores *, /, o Operadores div y mod o Operadores +, - Expresiones lógicas La expresión lógica o booleana, siempre tiene como valor verdadero o falso. Recuerde que existen dos constantes lógicas: verdad (true) y falso (false) y que las variables lógicas pueden tomar sólo estos dos valores.
  • 20. 20 Las expresiones lógicas se forman combinando constantes lógicas, variables lógicas y otras expresiones lógicas, utilizando los operadores lógicos not, and y or, y los operadores de relación. Ejemplo de constantes
  • 21. 21 Uso de acumuladores (contadores)
  • 22. 22 Estructuras repetitivas Las estructuras repetitivas nos permiten iterar un proceso un determinado número de veces. Se dividen en: - Para (For) - Mientras (While) - Repetir (Do – While) Estructura repetitiva Para Al ciclo Para, es el conocido ciclo For, y también se le conoce en castellano como ciclo Desde_Hasta. En esta estructura se sabe de antemano la cantidad de veces que debe ejecutarse el ciclo, este número de veces lo determina una variable contadora (i), que siempre deberá ser de tipo entera y donde se especifica el límite inferior y el límite superior. Por cada ciclo luego de ejecutar el bloque de instrucciones, la variable i se incrementará o disminuirá en 1. Una vez que el contador llega al valor del límite superior, el ciclo termina.
  • 23. 23 Sintaxis de la estructura Para - Desde: Indica la variable que se utilizará y el valor que tendrá cuando el bloque de código se ejecute por primera vez, i = 1. - Hasta: Debe hacer referencia a la misma variable indicada en el desde, indica una sentencia lógica, que al momento de cumplirse detendrá el ciclo.
  • 24. 24 - Incremento: Es el incremento de la variable contado, y puede ser positivo o negativo. - Bloque de sentencias: Es el conjunto de líneas que se ejecutarán en forma repetitiva. Ejemplo Para Se desea mostrar los 10 primeros números pares y luego su suma: Estructura repetitiva Mientras La estructura Mientras es conocida en los lenguajes de programación como ciclo While. Una de sus características es que verifica si la condición se cumple antes de ingresar al bloque de código que se va a repetir. El límite de ejecuciones estará dado por la condición, y se ejecutará mientras la condición devuelva un valor lógico verdadero.
  • 25. 25 Sintaxis de la estructura Mientras
  • 26. 26 - Mientras: Marca el inicio del bloque de código que se repetirá en forma cíclica. - Condición: Se refiere a una comparación lógica que se evaluará en cada ejecución del ciclo, si esta operación lógica entrega un resultado verdadero continúa ejecutando el bloque de código, en caso contrario saldrá del ciclo y continuará con la línea de código que está a continuación del Fin Mientras. - Fin Mientras: Indica el término del bloque de código que se repetirá en forma cíclica. Ejemplo 1 de Estructura Mientras Se desea mostrar los 10 primeros números y su suma:
  • 27. 27 Ejemplo 2 de Estructura Mientras Calcular el promedio de 4 notas Estructura repetitiva Repetir Esta estructura tiene varias formas de decir, en inglés es: Do Until, otra forma de indicar en castellano es: Repetir_Hasta o Hacer_Mientras. Cual fuese la forma de expresarse, este tipo de ciclo es muy similar a la estructura anterior, pero se diferencian del momento en que se evalúa la condición. En esta estructura primero se hace el bloque de sentencias ejecutables, por lo menos una vez y luego se verifica la condición. El bloque de sentencias se ejecutará nuevamente cuando se evalúe la condición y ésta sea verdadera y termina el ciclo cuando la condición sea falsa.
  • 29. 29 - Bloque de sentencias: Es el conjunto de instrucciones que se ejecuta. - Condición: Si se evalúa como verdadera el bloque de sentencias es ejecutado nuevamente, si es falsa, se termina el ciclo. Ejemplo Repetir Se desea mostrar los números impares del 1 hasta el 15, pero de mayor a menor:
  • 30. 30 Resumen Glosario - For: Se usa cuando de antemano se conoce la cantidad de elementos. - While: La condición que evalúa el bucle se pregunta al inicio. - Do – While: La condición que evalúa el bucle se pregunta al final Excel Avanzado
  • 31. 31 PARTE III: MACROS EN EXCEL Introducción Las macros en Excel son un conjunto de instrucciones que se ejecutan de manera secuencial por medio de una orden de ejecución, por medio de un lenguaje de programación de alto nivel. En el caso de Microsoft Excel el lenguaje empleado para el uso de Macros es VBA (Visual Basic for Applications). La herramienta Microsoft Excel cuenta con un “Editor de Visual Basic” o también conocido como “Editor VBA”, que permite la creación y/o mantenimiento de las Macros que se tengan disponibles. ¿Para qué sirve una Macro? Las Macros en Excel son útiles, entre otros aspectos, porque permiten la automatización de tareas repetitivas, tales como generación de gráficos, creación de encabezados de boletas y/o facturas, entre otras.
  • 32. 32 Las Macros ayudan a eliminar tareas repetitivas del trabajo cotidiano al permitirnos utilizar mejor nuestro tiempo en el análisis de los datos y en la toma de decisiones. ¿Cómo crear una Macro? En primer lugar debemos generar un libro Excel habilitado para Macros. Para tal fin, es necesario guardar el libro activo con este tipo de archivo.
  • 33. 33 A continuación debemos ver, en la barra de título de Excel, que el libro se ha guardado correctamente, con la extensión XLSM: Para disponer de las distintas herramientas de programación de Macros, se debe habilitar la ficha de “Developer”. Para hacer ello, se deben seguir los siguientes pasos: • Hacer clic con el botón derecho del mouse sobre la cinta de opciones: • En la ventana que se va a mostrar activar Developer, luego hacer clic en OK.
  • 34. 34 Se debe luego visualizar la ficha correspondiente en la cinta de opciones: Donde se tienen los grupos y opciones correspondientes a la programación de Macros: Creación de Macro utilizando la opción de Record Macro La creación de una Macro se puede realizar mediante la opción Developer Code Record Macro: Nombre de la Macro Dónde se va a guardar
  • 35. 35 Una vez ingresada la configuración, la opción Record Macro cambia a Stop Recording: A partir de ese momento todas las acciones que se realicen en el libro activo de Excel se registrarán en la Macro. Una vez que se ha detenido la grabación, se ha generado la nueva macro, la cual puede ser vista (y/o ejecutada) desde la opción Developer Code Macros: Se debe visualizar en la lista la Macro generada:
  • 36. 36 Creación de Macro utilizando la opción Macros La creación de una Macro se puede realizar mediante la opción Developer Code Macros. Una vez que se hace clic en el botón Create, se activa el entorno de programación VBA, para que podamos ingresar las instrucciones correspondientes (código) de la nueva Macro que estamos creando. Nombre de la nueva Macro
  • 37. 37 Creación de Macro utilizando el entorno de programación Es importante que reconozcamos las partes principales del entorno de programación VBA en Excel, al cual podemos acceder mediante la opción Developer Code Visual Basic, o mediante la combinación de teclas Alt + F11. Entre Sub y End Sub se debe ingresar el código de la Macro
  • 38. 38 Una vez activado el entorno de programación reconocemos las siguientes partes: Viendo en detalle el explorador de proyectos tenemos lo siguiente: Explorador de proyectos Ventana de propiedades Ventana de código Regresar a la hoja de cálculo Guardar los cambios Ejecutar Macro Detener Macro Libro Excel habilitado para Macros “Paquete” donde se almacenan los códigos de las Macros del Libro
  • 39. 39 La creación de una Macro se puede realizar mediante el ingreso directo de código Visual Basic en el entorno de programación VBA del libro activo. De igual manera, se debe visualizar la nueva macro ingresada mediante el entorno de programación, Ubicándonos debajo de la última Macro, ingresamos el comando: Sub <nombre_nueva_macro> y presionamos Enter. Se debe generar automáticamente una nueva línea y el comando End Sub al final.
  • 40. 40 Ejecución de Macro La ejecución de una Macro se puede hacer de las siguientes maneras: • Mediante la opción Developer Code Macros • Mediante un control • Mediante una imagen • Mediante una autoforma u otro elemento • Mediante la opción Developer Code Macros
  • 41. 41 Posteriormente se elige la Macro que se desea ejecutar y se hace clic sobre el botón Run: • Mediante un control Para hacer uso de los controles, nos dirigimos a la opción Developer Controls Insert; luego se elige de la lista el control que se desea emplear. En el ejemplo vamos a insertar un control Command Button (ActiveX Control):
  • 42. 42 Se dibuja el control en un lugar de la hoja de cálculo, obteniéndose lo siguiente: Se pueden visualizar las propiedades del control agregado, haciendo uso de la opción Developer Controls Properties Con lo que obtenemos una ventana como la siguiente:
  • 43. 43 A través de esta ventana podemos cambiar alguna propiedad del control, con el objetivo de comprender de mejor manera el uso del control generado. En nuestro ejemplo cambiaremos la propiedad Caption (Etiqueta): Una vez generado (y modificado) el control, hacemos doble clic encima de éste para ingresar las instrucciones que se realizarán cuando se haga clic en el botón: Principalmente se invoca a la Macro ingresando su nombre: Con lo que obtenemos
  • 44. 44 Guardamos los cambios y regresamos al libro de Excel: Una vez que se ha regresado al libro de Excel, debemos salir del modo de diseño, para lo cual debemos hacer clic en la opción correspondiente Finalmente, hacer clic encima del botón generado para la ejecución de la Macro: • Mediante una imagen La ejecución de una Macro se puede realizar mediante la inserción de una imagen en una hoja de cálculo del libro Excel. Para ello primero insertamos una imagen: Hacer clic
  • 45. 45 Una vez insertada, cambiar el formato si es necesario y hacer clic con el botón derecho del mouse. Se debe identificar en el menú contextual la opción Assign Macro. Hacer clic encima de esa opción. Se activa la ventana con la lista de Macros disponibles en el libro de Excel activo, y se elige cuál es la Macro que se va a ejecutar desde la imagen. Luego, se hace clic en el botón OK.
  • 46. 46 • Mediante una autoforma u otro elemento De igual manera que con una imagen, la Macro se puede ejecutar mediante una autoforma. Como ejemplo, se inserta la siguiente autoforma en la hoja de cálculo activa. Una vez insertada la autoforma, se siguen los mismos pasos realizados con la imagen.
  • 47. 47 De igual manera, se siguen estos pasos para ejecutar una Macro mediante otro elemento (p.ej. un diagrama SmartArt).
  • 48. 48 Uso de formularios Los formularios en Excel son un método para ingresar datos a nuestras hojas y son de mucha utilidad porque nos ayudan a evitar errores en la captura de información. Podemos comparar los formularios de Excel con los formularios impresos en papel. Existen tres tipos generales de formulario: • Formulario de Datos • Hojas de cálculo con controles de formulario o controles ActiveX • Formularios de usuario en VBA • Formulario de Datos Podemos mostrar al usuario la información de una sola fila de una tabla. En este formulario se puede hacer la edición de la información, crear un nuevo registro para la tabla o buscar un dato específico. No se puede modificar su diseño.
  • 49. 49 • Hoja de cálculo con controles de formulario Podemos crear formularios de entrada de datos muy útiles. Por ejemplo, podemos agregar a nuestra hoja de Excel un control de cuadro combinado para facilitar la selección de los elementos. De igual manera, podemos agregar otros controles, como son: botones de comando, cuadros de lista, casillas de verificación, etc. • Formulario de usuario en VBA Los formularios de usuario en VBA, también conocidos como UserForm, son cuadros de diálogo que hacen uso de controles de formulario para solicitar información al usuario. Estos formularios son creados desde el Editor de Visual Basic y administrados desde código VBA. Para crear un formulario de usuario, debemos ingresar al entorno de programación y mediante la opción Insert UserForm
  • 50. 50 Una vez que se ha creado el formulario de usuario, se arrastran y sueltan los controles que están disponibles desde el Cuadro de Herramientas: Se va dando forma al formulario, de acuerdo a lo solicitado o según criterio. Se ingresa el diverso código Visual Basic a partir del uso de controles. Como ejemplo ingresaremos un botón de comando en el formulario (cambiándole en la propiedad Caption la etiqueta del botón):
  • 51. 51 Luego le hacemos doble clic encima del botón generado, para poder ingresar las instrucciones que se van a realizar cuando hagamos clic sobre ese botón: Tener en cuenta que esta nueva Macro sólo se ejecutará dentro del formulario. Por lo tanto no se puede visualizar en la lista de Macros general o mediante el módulo correspondiente. Para activar el formulario creado desde una hoja de cálculo en Excel, debemos generar un botón de comando (recomendable ActiveX) y al hacer doble clic sobre éste ingresar la siguiente instrucción (previamente se va a cambiar el nombre del botón de comando):
  • 52. 52 Finalmente, guardamos los cambios, regresamos a la hoja de cálculo activa, salimos del modo diseño y hacemos clic encima del botón. A continuación, se debe activar el formulario con todo el contenido generado: Estructura de un procedimiento empleando el entorno de programación VBA Una macro es un procedimiento que se crea en el entorno de programación VBA. Este entorno, al basarse en el lenguaje de programación Visual Basic, convierte el procedimiento en una de las siguientes: • Subrutina • Función
  • 53. 53 Subrutinas Se denomina subrutina a una porción de código que tiene como principal función ejecutar una o varias determinadas tareas. Éstas tienen un nombre para identificarlas y luego llamarlas para poder utilizarlas. Una subrutina tiene la siguiente estructura: Sub <nombre_subrutina> Tarea1 Tarea2 …. End Sub La siguiente subrutina se crea al hacer doble clic encima de un botón de comando, insertado en una hoja de cálculo: Las subrutinas tienen un principio y un fin y éstas pueden tener distinto tipo de alcance, o sea pueden ser de tipo privadas o públicas. En este ejemplo se tiene una subrutina o procedimiento de tipo Privado, esto quiere decir que la podemos utilizar sólo en el formulario o módulo donde está declarada o escrita. Si quisiéramos que estos procedimientos se puedan llamar desde otro formulario, lo que tendríamos que hacer es cambiar el alcance del procedimiento, en vez de Private Sub cambiarlo por Public Sub. Si hacemos esto, ese procedimiento de código puede ser utilizado desde cualquier parte del proyecto. Subrutinas y procedimientos propios También podemos crear nuestros propios Procedimientos y Subrutinas de código, para ejecutar una determinada tarea. Para crear un procedimiento se debe escribir la palabra Private Sub o Public Sub (depende del alcance), seguida del nombre del procedimiento (un nombre que queramos) (interpretamos que el nombre del procedimiento equivale al nombre de la Macro que se está generando) y los parámetros (opcionalmente). Además el Inicio de la subrutina a Fin de la subrutina
  • 54. 54 procedimiento debe ser escrito en un lugar vacío de la ventana de código, es decir no se puede crear un procedimiento dentro de otro. Por ejemplo, se tiene la siguiente subrutina propia: Si queremos llamar esta subrutina podemos utilizar la anterior subrutina: E invocar luego a la última subrutina, ingresando su nombre: Para finalmente ejecutar ambas subrutinas, haciendo clic encima del botón de comando. Funciones Las funciones son casi exactamente iguales a las subrutinas, con respecto a la forma en que se las llama y se las crea o declara en el código. La diferencia fundamental es que éstas, luego de ejecutar el código que tengan en su interior, retornan un valor, y este valor luego lo podemos utilizar para una determinada tarea. En cambio las subrutinas, sólo ejecutan el código que contienen y luego terminan. Para declarar o crear una función podríamos escribir lo siguiente: En este caso, la función pide dos valores (valor1 y valor2, de tipo Integer) y debe retornar un valor de tipo Long (ver los tipos de valores en el anexo Nro. 1). Las funciones pueden retornar tipo de datos: numéricos, de cadenas, de fecha, arreglos y vectores.
  • 55. 55 Para llamar a la función anterior podríamos hacerlo de la siguiente manera: En este caso, el control Label1 llamaría a la función Total; la función realizaría la suma de los valores pasados como parámetros y por último el valor final de la suma se lo asignaría al control Label1 en su propiedad Caption. Programas en Visual Basic Para crear adecuadamente un programa (en nuestro caso una Macro), debemos considerar instrucciones específicas, como se tiene a continuación: (ejemplo: suma de dos ingresados) Pseudocódigo Código VBA 1. Inicio 2. Declarar variables num1, num2, resultado 3. Pedir número 1 4. Num1  número 1 5. Pedir número 2 6. Num2  número2 7. resultado = num1+num2 8. Escribir resultado 9. Fin Sub sumar_dos_numeros() Dim num1, num2, resultado As Integer num1 = Range("A2").Value num2 = Range("A3").Value resultado = num1 + num2 MsgBox "La suma es: " & resultado End Sub Donde: • Sub…. End Sub: Indican el Inicio y Fin de una subrutina o función • Sumar_dos_numeros: Nombre de la subrutina (en nuestro caso, el nombre de la Macro) • Dim: Indica la declaración de variables • Num1, num2, resultado: Nombre de las tres variables que se utilizan en la subrutina • As Integer: Indica que una o varias variables van a ser de tipo Integer • Num1 = Range(“A2”).Value: El valor que tenga la celda A2 se asigna a la variable Num1 • Msgbox: Genera un cuadro de diálogo en pantalla para mostrar algún mensaje En el ejemplo anterior, se tuvo una ejecución secuencial del programa. Existen casos en que debemos hacer uso de otras formas de ejecución, las cuales se basan en estructuras condicionales y repetitivas. A continuación se detallan esas estructuras.
  • 56. 56 Estructuras condicionales en Visual Basic La ejecución de un programa es según el cumplimiento o no de una o varias condiciones. A continuación se muestra un ejemplo que determina, mediante un programa, si un alumno está aprobado o desaprobado, en base a su nota final: Pseudocódigo Código VBA 1. Inicio 2. Declarar variable nota_final 3. Pedir nota final del alumno 4. Nota_final  nota final del alumno 5. Si nota_final >= 13 entonces Escribir “Alumno aprobado” Sino Escribir “Alumno desaprobado” Fin Si 6. Fin Sub detalle_alumno() Dim nota_final As Integer nota_final = Range("A2").Value If nota_final >= 13 Then MsgBox "Alumno aprobado" Else MsgBox "Alumno desaprobado" End If End Sub Donde: • If … Then… Else… End If: Representa el uso de una estructura condicional, que analiza si la nota final es mayor o igual a 13, y de acuerdo a ello, determina si el alumno está aprobado o desaprobado. Se puede tener además el análisis de varias condiciones, para determinar un resultado. En este caso, se tiene el ejemplo siguiente sobre la validación de una nota (entre 0 y 20): Pseudocódigo Código VBA 1. Inicio 2. Declarar variable nota 3. Pedir nota alumno 4. nota  nota alumno 5. Si nota>=0 y nota<=20 entonces Escribir “Nota Valida” Sino Escribir “Nota Invalida” Fin Si 6. Fin Sub validar_nota() Dim nota As Integer nota = Range("A2").Value If nota >= 0 And nota <= 20 Then MsgBox "Nota Válida" Else MsgBox "Nota Inválida" End If End Sub
  • 57. 57 Donde: • And: Permite unir dos o más condiciones a ser analizadas con la estructura condicional IF En este caso, donde se desea analizar dos o más condiciones, se puede utilizar la instrucción SELECT – CASE. A continuación se muestra un ejemplo de ello, donde se desea determinar si un producto es categoría A, B o C: Pseudocódigo Código VBA 1. Inicio 2. Declarar variable categoría 3. Pedir categoría del producto 4. Categoria  categoría del producto 5. Seleccionar Categoria Caso sea A Escribir “Producto es cat. A” Caso sea B Escribir “Producto es cat. B” Caso contrario Escribir “Producto es cat. C” Fin Selección 6. Fin Sub categoria_producto2() Dim categoria As String categoria = Range("A2").Value Select Case categoria Case "A" MsgBox "Producto es Cat. A" Case "B" MsgBox "Producto es Cat. B" Case Else MsgBox "Producto es Cat. C" End Select End Sub Donde: • Select Case categoria: Analiza el valor que tiene la variable categoria • Case “A”: Se especifica qué va a pasar cuando la variable categoría sea igual a “A” • Case Else: Se especifica qué va a pasar cuando la variable categoría no corresponda a ningún caso indicado • End Select: Indica el final de la instrucción Select Case
  • 58. 58 Estructuras repetitivas en Visual Basic En términos de programación, un bucle (estructura repetitiva) es una instrucción que nos permitirá ejecutar repetidamente un conjunto de instrucciones hasta que se no cumpla la condición que hayamos especificado. Los bucles también son conocidos como ciclos. Se dividen en: • Mientras… Hacer (While) • Repetir… Hasta (Do – While) • Para… Hacer (For) Para aplicar cada estructura repetitiva se verá el ejemplo de mostrar en pantalla del número 1 al 5. • Mientras… Hacer Pseudocódigo Código VBA 1. Inicio 2. Declarar variable contador 3. Contador = 1 4. Mientras contador<=5 hacer Escribir contador Contador = Contador+1 Fin Mientras 5. Fin Sub numeros() Dim contador As Integer contador = 1 While contador <= 5 MsgBox contador contador = contador + 1 Wend End Sub • Repetir… Hasta Pseudocódigo Código VBA 1. Inicio 2. Declarar variable contador 3. Contador = 1 4. Repetir Escribir contador Contador = Contador+1 Hasta que contador>5 5. Fin Sub numeros1() Dim contador As Integer contador = 1 Do MsgBox contador contador = contador + 1 Loop Until contador > 5 End Sub
  • 59. 59 • Para… Hacer Pseudocódigo Código VBA 1. Inicio 2. Declarar variable contador 3. Para contador  1 hasta 5 con paso 1 hacer Escribir contador Fin Para 4. Fin Sub numeros2() Dim contador As Integer For contador = 1 To 5 Step 1 MsgBox contador Next End Sub Como se puede ver, para trabajar correctamente una estructura repetitiva es necesario trabajar con variables que sean CONTADORES o ACUMULADORES. Según estructura repetitiva este tipo de variable tiene las siguientes características: • Para… Hacer: El contador toma el valor inicial en la misma estructura. Aumenta su valor automáticamente. • Mientras… Hacer / Repetir… Hasta: Se adiciona una instrucción para que el contador tome un valor inicial y otra instrucción para aumentar su valor. Mientras… Repetir…
  • 60. 60 ANEXOS Anexo 1: Tipos de datos Tipo de Dato Asignación de almacenamiento nominal Intervalo de valores Boolean En función de la plataforma de implementación True o False Byte 1 byte 0 a 255 (sin signo) Char (carácter individual) 2 bytes 0 a 65535 (sin signo) Date 8 bytes 0:00:00 (medianoche) del 1 de enero de 0001 a 11:59:59 p.m. del 31 de diciembre de 9999. Decimal 16 bytes 0 a +/- 79.228.162.514.264.337.593.543.950.335 (+/-7,9... E+28) † sin separador decimal; 0 a +/-7,9228162514264337593543950335 con 28 posiciones a la derecha del decimal; el número distinto de cero más pequeño es +/-0,0000000000000000000000000001 (+/- 1E-28) † Double (punto flotante de precisión doble) 8 bytes -1,79769313486231570E+308 a - 4,94065645841246544E-324 † para los valores negativos; 4,94065645841246544E-324 a 1,79769313486231570E+308 † para los valores positivos Integer 4 bytes -2.147.483.648 a 2.147.483.647 (con signo) Long (entero largo) 8 bytes -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807 (9,2...E+18 †) (con signo) Objeto. 4 bytes en plataforma de 32 bits 8 bytes en plataforma de 64 bits Cualquier tipo puede almacenarse en una variable de tipo Object SByte 1 byte -128 a 127 (con signo) Short (entero corto) 2 bytes -32.768 a 32.767 (con signo) Single (punto flotante de precisión sencilla) 4 bytes -3,4028235E+38 a -1,401298E-45 † para los valores negativos; 1,401298E-45 a 3,4028235E+38 † para los valores positivos
  • 61. 61 String (longitud variable) En función de la plataforma de implementación 0 a 2.000 millones de caracteres Unicode aprox. UInteger 4 bytes 0 a 4.294.967.295 (sin signo) ULong 8 bytes 0 a 18.446.744.073.709.551.615 (1,8...E+19 †) (sin signo) User- Defined(estructura) En función de la plataforma de implementación Cada miembro de la estructura tiene un intervalo de valores determinado por su tipo de datos y es independiente de los intervalos de valores correspondientes a los demás miembros. UShort 2 bytes 0 a 65.535 (sin signo) Variant 16 bytes Almacena cualquier tipo de valor (numérico y no numérico)
  • 62. 62 Anexo 2: Principales instrucciones VBA empleadas en laboratorios Función / Instrucción Descripción ActiveCell.FormulaR1C1 = "mes" Ingresa “mes” en la celda activa (empleando grabación de macro) Range("F7").Select Selecciona la celda F7 Range(“B5”).Value = Range(“B2”).Value + Range(“B3”).Value Suma de los valores que tienen las celdas B2 y B3, y el resultado se ingresa en la celda B5 Selection.ClearContents Borra todo el contenido de las celdas seleccionadas Selection.ClearFormats Borra todos los formatos de las celdas seleccionadas ActiveCell.Value = codigo Ingresa en la celda activa el valor que tiene la variable codigo ActiveCell.Offset(0,1).Value = nombre En la celda de la siguiente columna de la misma fila de la celda activa ingresa el valor que tiene la variable nombre ( sintaxis: ActiveCell.Offset(fila, columna) ) A = Range(“A1”).Value Asigna en la variable A el contenido de la celda A1 Llegada = minute(hora) Obtiene los minutos del valor de la variable hora y lo asigna a la variable llegada Sueldo = Cells(ActiveCell.Row, ActiveCell.Column).Value Obtiene el valor que tiene la celda activa y lo asigna a la variable Sueldo For Each celda In Selection.Cells Va a realizar una acción en cada celda de una selección Cells(1,1).Value = 5 Ingresa el número 5 en la celda ubicada en la columna A y en la fila 1 (sintaxis de la instrucción: Cells(fila, columna) ) Resultado = WorksheetFunction.Average(Range(“A1:A 10”)) Obtiene el promedio de los números ingresados en el rango A1:A10 y lo asigna a la variable Resultado Worksheets(“datos”).ShowDataForm Dentro de la hoja de cálculo llamada datos muestra el formulario de datos Unload me Cierra el formulario en ejecución (formulario de usuario) formIngresoNotas.Show Muestra el formulario de usuario llamado formIngresoNotas Dim hojaDatos as Worksheet Declara la variable hojaDatos de tipo Hoja de Cálculo Set hojaDatos = Worksheets(“datos”) Asigna todo el contenido de la hoja de cálculo llamada datos a la variable hojaDatos totalFilas = hojaDatos.Rows.Count Obtiene la cantidad de filas de la variable hojaDatos y la asigna a la variable totalFilas nuevaFila = hojaDatos.Cells(totalFilas,”A”).End(xlUp). Offset(1,0).Row Verifica cual es la última fila con información en la columna A, obtiene el número de fila siguiente y lo asigna a la variable nuevaFila Worksheets(“datos”).Cells(1,1).Value Verifica qué valor se tiene en la celda A1 de la hoja de cálculo llamada datos ActiveCell.EntireRow.Delete Borra toda la fila donde pertenece la celda activa
  • 63. 63 Anexo 3: Depuración de una Macro Cuando nos encontramos con errores en nuestras macros podemos depurar el código utilizando el Editor de Visual Basic, para encontrar fácilmente los errores que pueda contener nuestro código VBA. Por ejemplo, consideremos la siguiente macro: Para iniciar con la depuración del código podemos seleccionar la opción del menú Debug > Step Into o simplemente pulsar la tecla F8. Esto hará que se inicie la ejecución en la primera línea, la cual se mostrará con un fondo amarillo indicando que esa instrucción es la que está por ejecutarse.
  • 64. 64 Para continuar con la depuración debemos pulsar de nuevo la tecla F8 hasta llegar al final del código. Cada vez que pulsamos la tecla F8 suceden las siguientes cosas: • Excel ejecuta la instrucción que está sombreada en color amarillo • Si Excel encuentra un error en la instrucción, entonces enviará un mensaje de error. • Por el contrario, si no hubo error en dicha instrucción, entonces Excel marcará en amarillo la siguiente instrucción a ejecutar. De esta manera podemos ejecutar cada una de las líneas de nuestro código VBA y validar que no exista error alguno. Regresando a nuestro ejemplo, al momento de llegar a la tercera instrucción y pulsar la tecla F8, Excel enviará el siguiente mensaje de error: El mensaje nos advierte que el objeto no admite esa propiedad o método y se está refiriendo al objeto Range en donde el método Valor no está escrito de manera correcta y por lo tanto el depurador de VBA no reconoce dicha propiedad. Pulsamos el botón Aceptar / OK para cerrar el cuadro de diálogo y poder corregir el error en el código.
  • 65. 65 Anexo 4: Funciones de texto en Macros Para mostrar el resultado de cada ejemplo se puede hacer uso de la instrucción Msgbox. FUNCIONES PARA MANEJO DE CADENAS Función Descripción Ejemplo Len Devuelve la longitud de una cadena Dim rpta As Integer Dim nombre as String Nombre = “Juan Perez” rpta = Len( nombre ) UCase Devuelve el contenido de una cadena en mayúsculas Dim xmay As String xmay = UCase( nombre ) LCase Devuelve el contenido de una cadena en minúsculas Dim xmin As String xmin = LCase( nombre ) Left Devuelve una sub cadena desde la izquierda de una cadena Dim lcad As String lcad = Left(nombre,5) Right Devuelve una sub cadena desde la derecha de una cadena Dim rcad As String rcad = Right(nombre,4) Mid Devuelve una sub cadena de cualquier ubicación dentro de la cadena Dim mcad As String mcad = Mid(nombre,2,5) InStr Devuelve la posición donde se encuentra una sub cadena dentro de una cadena Dim rpta As Integer rpta = InStr(nombre, "Per") Str Convierte un número a cadena Dim cad As String cad = Str(123) Val Convierte una cadena numérica a valor numérico Dim rpta as Integer rpta = Val(cad) Trim Elimina espacios en blanco ubicados al inicio o final de una cadena Dim cad as String cad = Trim(nombre) String Permite crear una cadena repitiendo un mismo carácter n veces Dim cad As String cad = String(10,”A”) Space Permite crear una cadena conformada por n espacios en blanco Dim cad As String cad = Space(10)
  • 66. 66 Anexo 5: Otras instrucciones para programar en Macro Instrucción Descripción Ejemplo Add Crea una nueva hoja de cálculo, tabla, o libro con Macro. La nueva hoja de cálculo se vuelve en la activa ActiveWorkbook.Sheets.Add Before:=Worksheets(Worksheets.Count) Address Muestra una celda de con diferentes referencias Set mc = Worksheets("Sheet1").Cells(1, 1) MsgBox mc.Address() ' $A$1 MsgBox mc.Address(RowAbsolute:=False) ' $A1 MsgBox mc.Address(ReferenceStyle:=xlR1C1) ' R1C1 Autofit Cambia el ancho de las columnas del rango indicado Worksheets(“Sheet1”).Columns(“A:I”).AutoFit Worksheets(“Sheet1”).Rows(“1:3”).AutoFit Worksheets(“Sheet1”).Range(“A1:E1”).Columns.AutoFit Add Crea una nueva hoja de cálculo y lo adiciona a la lista. Worksheets.Add Count:=2, Before:=Sheets(1) Call Invoca a una macro Call Proc1 Call Proc2(“Hola Mundo”) En caso la macro necesite que se pase un argumento Columns Indica la acción a realizar en una columna de una hoja de cálculo Worksheets(“Sheet1”).Columns(1).Font.Bold=True Copy Copia la hoja de cálculo hacia otra. Worksheets(“Sheet1”).Copy After:=Worksheets(“Sheet3”) Count Muestra la cantidad de hojas de cálculo en el libro Worksheets.Count CurrentRegion Devuelve un objeto Range que representa la región actual. La región actual es un rango limitado por cualquier combinación de filas y columnas en blanco. Worksheets(“Sheet1”).Activate ActiveCell.CurrentRegion.Select DateSerial Devuelve un valor de fecha Dim LDate as Date DateSerial(2004, 6, 30) DateSerial(2004-1, 6, 30) LDate = DateSerial(2004, 5, 31)
  • 67. 67 Format Convierte un valor en un formato diferente Dim MiTiempo, MiStr MiTiempo = #17:04:23# MiStr = Format(Time, “Long Time”) MiStr = Format(MiTiempo, “hh:mm:ss AMPM”) Msgbox MiStr InputBox Permite ingresar un valor por teclado Dim miValor as Variant miValor = InputBox(“Ingresa un dato”) Cells(1,1) = miValor Move Mueve la hoja de cálculo al final del libro Worksheets.Move After:=Sheets(Sheets.Count) Paste Pega el contenido de una hoja de cálculo Worksheets(“Sheet1”).Range(“C1:C5”).Copy ActiveSheet.Paste Destination:=Worksheets(“Sheet1”).Range(“D1:D5”) PrintPreview Muestra una vista previa como se tendrá impresa la hoja indicada Worksheets("Sheet1").PrintPreview PrintOut Imprime la hoja indicada ActiveSheet.PrintOut Worksheets.(“Sheet1”).PrintOut From:=2, To:=3 imprime desde la página 2 hasta la página 3 Worksheets.(“Sheet1”).PrintOut From:=2, To:=3, Copies:=3 como el ejemplo anterior, con 3 copias vbCrLf Saltos de línea en una cadena Mensaje = “Hola, “ + vbCrLf + “Espero que todo vaya bien.” + vbCrLf + “Saludos.”
  • 68. 68 Anexo 6: La instrucción WorksheetFunction Para utilizar funciones de Excel dentro del código Visual Basic, se puede emplear la instrucción siguiente: Como se puede ver, ya se tienen acceso a funciones principales de Excel para hacer cálculos complejos.
  • 69. 69 Anexo 7: Seguridad de macros Para realizar la configuración de la seguridad de macros, debemos dirigirnos en el libro de Excel que estamos trabajando las Macros, a la opción: Developer Code Macro Security. Luego se activará la siguiente ventana:
  • 70. 70 Donde se debe establecer la seguridad que tendrá el uso de las Macros, una vez que se cierre el libro y se vuelva a abrir. La lista que se puede ver resume las diferentes configuraciones de seguridad de macros. En todos las configuraciones, si el software antivirus instalado funciona con Microsoft Office y el libro contiene macros, el libro se escanea en busca de virus conocidos antes de que se abre. • Deshabilitar todas las macros sin notificación: Haga clic en esta opción si no confía en las macros. Todas las macros en los documentos y las alertas de seguridad sobre las macros están deshabilitadas. Si hay documentos que contienen macros sin firmar en las que confía, puede colocar estos documentos en una ubicación de confianza. Los documentos de las ubicaciones de confianza se pueden ejecutar sin ser revisados por el Centro de confianza del sistema de seguridad. • Deshabilitar todas las macros con notificación: Esta es la configuración predeterminada. Haga clic en esta opción si desea deshabilitar las macros, pero sí quiere recibir alertas de seguridad si hay macros. Así, podrá elegir cuándo quiere habilitar esas macros caso por caso. • Deshabilitar todas las macros excepto las firmadas digitalmente: Esta configuración es la misma que la de la opción Deshabilitar todas las macros con notificación, con la excepción de que si la macro cuenta con una firma digital emitida por un editor de confianza, la macro se puede ejecutar. Si no ha confiado el editor, se le notificará. Así, podrá elegir habilitar las macros firmadas o confiar en el editor. Todas las macros sin firmar están deshabilitadas sin notificación. • Habilitar todas las macros (no se recomienda, se podría ejecutar código peligroso): Haga clic en esta opción para permitir que todas las macros se ejecuten. Utilizando esta configuración no es recomendable porque su equipo es vulnerable a posibles códigos perjudiciales. • Confiar en el acceso al modelo de objetos de proyectos de VBA: Esta configuración es para desarrolladores y se usa para bloquear o deshabilitar el acceso mediante programación al modelo de objeto de VBA desde cualquier cliente de automatización. En otras palabras, proporciona una opción de seguridad para el código que se escribe para automatizar un programa de Office y se manipula mediante programación el entorno y modelo de objetos de Microsoft Visual Basic para aplicaciones (VBA). Es una configuración por usuario y por aplicación, y niega el acceso de manera predeterminada. Esta opción de seguridad dificulta que los programas no autorizados generen códigos perjudiciales que se replican automáticamente. Para que los clientes de automatización tengan acceso mediante programación al modelo de objetos de VBA, el usuario que ejecuta el código debe conceder el acceso. Para habilitar el acceso, active la casilla.