Macros y lenguaje VBA Aprender a programar con Excel (3ª edición) Capítulo 1: Introducción A. Introducción 14 B. ¿A quién va dirigido este libro? 14 C. ¿Qué es una macro? 14 D. ¿Qué interés tiene hacer macros? 15 E. Contenido del libro 15 Capítulo 2: El editor de Visual Basic A. Introducción 18 B. ¿Cómo iniciar Visual Basic Editor? 18 1. Versión Excel 2003 (o anterior) 18 2. Versión Excel 2007 (o posterior) 19 C. La interfaz 20 1. Los módulos 21 2. Los cuadros de diálogo personalizados 23 www.ediciones-eni.com © Ediciones ENI 1/25 Macros y lenguaje VBA Aprender a programar con Excel (3ª edición) 3. Las barras de herramientas 25 Capítulo 3: La programación en Visual Basic A. Introducción 28 B. ¿Qué es un objeto? 28 1. Propiedad de un objeto 28 2. Método de un objeto 28 C. Regla de codificación 29 1. Asociación de objetos 30 2. Asociación de propiedades o de métodos 30 D. Ayuda en línea 31 E. Codificación de las celdas y de los rangos de celdas 31 1. La celda 31 2. El rango de celdas 32 3. Las celdas nombradas 32 F. Significado del signo = 33 G. Los procedimientos www.ediciones-eni.com © Ediciones ENI 2/25 Macros y lenguaje VBA Aprender a programar con Excel (3ª edición) 34 H. Las funciones 34 Capítulo 4: Primer programa A. Introducción 38 B. La Grabadora de macros 38 1. Versión Excel 2003 (o anterior) 38 2. Versión Excel 2007 (o posterior) 39 C. Primer ejercicio 41 D. Examen del código 45 E. Ejecución del código 46 F. Otras técnicas para mejorar el código 47 1. Grabar acciones con dos hojas de cálculo 47 2. La instrucción Select 48 3. La instrucción Copy 48 4. Transferencia de datos 49 5. El bloque de datos With ... End With 49 www.ediciones-eni.com © Ediciones ENI 3/25 Macros y lenguaje VBA Aprender a programar con Excel (3ª edición) 6. El código optimizado 50 G. Síntesis 51 Capítulo 5: Las variables A. Introducción 54 B. ¿Qué es una variable? 54 C. El método MsgBox 55 1. Vista de un mensaje personalizado 55 2. Ver el resultado de una variable 56 3. Personalizar el mensaje 56 D. Declaración de una variable 58 1. ¿Declaración obligatoria o no? 58 2. Comprobación de las declaraciones 59 3. Tipo de variable 60 a. Declaración de texto 60 b. Declaración de números 61 c. Declaración fechas 62 d. Declaración de objetos www.ediciones-eni.com © Ediciones ENI 4/25 Macros y lenguaje VBA Aprender a programar con Excel (3ª edición) 63 e. Declaración booleana 63 f. Declaración en Variant, declaración cajón de sastre 64 4. Alcance de las variables 64 a. La instrucción Dim 64 b. La instrucción Static 65 c. La instrucción Public 66 E. Caso práctico de utilización de una variable 66 F. El método InputBox 68 G. Las tablas en memoria 69 1. Presentación 69 2. Las ventajas de trabajar con tablas 70 Capítulo 6: Las condiciones A. Introducción 72 B. La instrucción If 72 1. Presentación 72 2. Ejemplo de aplicación 73 www.ediciones-eni.com © Ediciones ENI 5/25 Macros y lenguaje VBA Aprender a programar con Excel (3ª edición) 3. Explicación 74 4. Transformación del código 74 5. Abreviatura de escritura 75 6. Condición anidada 76 C. La instrucción SELECT CASE 77 1. Presentación 77 2. Ejemplo de utilización 78 a. Test a un solo valor 78 b. Test en varios valores no contiguos 78 c. Test en valores contiguos 79 3. Reversibilidad 79 D. ¿IF o SELECT CASE? 81 E. Ejemplo de uso de dos instrucciones 81 1. Crear un test en función de los parámetros 81 2. Crear los parámetros 82 3. Crear un test en el programa 83 4. Programa completo 85 Capítulo 7: Los bucles www.ediciones-eni.com © Ediciones ENI 6/25 Macros y lenguaje VBA Aprender a programar con Excel (3ª edición) A. Introducción 88 B. La instrucción For ... Next 88 1. Etapas de un bucle For ... Next 88 2. Primer ejemplo de bucle 89 3. Explicación del código 89 4. Ejemplo de bucle con dos variables 90 a. Etapa nº 1 90 b. Etapa nº 2 91 c. Etapa nº 3 91 d. Síntesis 91 C. Bucle según condición 92 1. While ... Wend 92 a. Principio 92 b. Ejemplo de aplicación 92 c. Obligación 93 2. Ejemplo de código 93 3. Do ... Loop 97 a. Presentación 97 b. Ejemplo de aplicación 97 www.ediciones-eni.com © Ediciones ENI 7/25 Macros y lenguaje VBA Aprender a programar con Excel (3ª edición) c. Explicación del código 99 d. Mejora del código 99 e. Trabajar con dos hojas 101 D. Bucle en objetos Excel 102 1. Presentación 102 2. Explicación del código 102 Capítulo 8: Depuración A. Presentación 106 B. Buenas prácticas 107 C. Lectura "Paso a paso" 108 1. La tecla 8 108 2. La combinación de teclas m 8 109 D. Inspeccionar las variables 110 E. La ventana Inspecciones 112 F. La ventana de variables locales 113 www.ediciones-eni.com © Ediciones ENI 8/25 Macros y lenguaje VBA Aprender a programar con Excel (3ª edición) G. El punto de interrupción 115 H. La instrucción Debug.Print 117 I. Interrupción según condición 118 J. Intervenir durante la ejecución del código 120 1. Vuelta atrás 120 2. Cambiar manualmente el valor de las variables 121 K. Ejemplo de aplicación de la depuradora 123 1. Resolución del primer error 124 2. Resolución del segundo error 126 Capítulo 9: Estructura de un programa A. Dividir un programa en varios procedimientos 130 1. Código inicial 130 2. División del código 131 3. La instrucción Call 132 4. El interés de dividir en varios procedimientos 133 B. Alcance de las variables 133 www.ediciones-eni.com © Ediciones ENI 9/25 Macros y lenguaje VBA Aprender a programar con Excel (3ª edición) 1. Vuelta a la declaración de las variables 134 a. Dim dentro de un procedimiento 134 b. Dim al principio del Módulo 134 c. Declaración en Public 136 2. Dim o Public 137 C. Parámetros de llamada 137 1. Principio de transmisión de variables locales 137 a. Respeto del tipo de variable 138 2. Ayuda en la escritura y en la navegación 139 a. Uso de las etiquetas informativas 139 b. Navegación simplificada 140 3. Flexibilidad de programación 141 a. Finalizar el programa 143 b. Procedimientos invisibles 144 D. Las llamadas a funciones 145 1. Crear una función personalizada con parámetros 145 2. Llamada a la función personalizada 146 3. Afectar un tipo a la función personalizada 147 4. Transmitir un rango de celdas 147 www.ediciones-eni.com © Ediciones ENI 10/25 Macros y lenguaje VBA Aprender a programar con Excel (3ª edición) E. Ejemplo de aplicación 148 1. Etapa 1: creación del código para la primera celda 149 2. Etapa 2: extracción del cálculo de la suma en una función 149 3. Etapa 3: creación de la función Media 150 4. Etapa 4: creación del bucle para las filas y explicación del código 151 a. El código 151 b. Explicación del código 151 5. Etapa 5: creación del bucle para las columnas 152 6. Conclusión 153 F. Parámetros opcionales 154 Capítulo 10: Las funciones básicas A. Los operadores 158 1. Los operadores aritméticos 158 2. Los operadores de comparación 159 3. Los operadores lógicos (o booleanos) 159 4. Simplificación de la escritura de los tests 160 B. Conversión de variable 161 www.ediciones-eni.com © Ediciones ENI 11/25 Macros y lenguaje VBA Aprender a programar con Excel (3ª edición) 1. Funciones de conversión 161 2. Probar una variable 161 C. Funciones matemáticas 162 1. Funciones usuales 162 2. Las funciones Excel 163 Capítulo 11: Administrar las listas de caracteres A. Introducción 166 B. Funciones básicas 166 1. El operador & 166 a. Utilización en un programa 166 b. Ejemplo de uso para cambiar el nombre a una hoja 166 c. Entrar en bucle con todos los nombres 167 2. Las tres instrucciones habituales 168 a. La instrucción Left 168 b. La instrucción Right 168 c. La instrucción Len 169 d. Ejemplo de uso de instrucciones de texto 169 e. Extracción de una parte de una celda 170 www.ediciones-eni.com © Ediciones ENI 12/25 Macros y lenguaje VBA Aprender a programar con Excel (3ª edición) 3. Sustitución 171 a. Función Mid 171 b. Función Replace 171 4. Posicionamiento de un carácter 172 a. La instrucción InStr 172 b. La instrucción InstrRev 173 5. Cortar una cadena 174 6. Supresión de los espacios 174 7. Mayúsculas y minúsculas 174 a. Todos los caracteres en mayúsculas 174 b. Todos los caracteres en minúsculas 174 c. Primera letra en mayúscula 175 8. Invertir las letras 175 9. Comparación de cadenas 176 a. Función StrComp 176 b. Función Like 176 10. Los caracteres ASCII 177 a. La instrucción Asc 177 b. La instrucción Chr 178 C. Leer un archivo de texto 178 www.ediciones-eni.com © Ediciones ENI 13/25 Macros y lenguaje VBA Aprender a programar con Excel (3ª edición) 1. Abrir el archivo de texto 179 a. La ruta o el nombre del archivo 179 b. El tipo de acceso 179 c. Número de archivo 179 2. Leer una línea 180 3. La instrucción EOF 180 4. Cerrar un archivo 180 D. Crear un archivo de texto 181 1. Crear un archivo 181 2. Escribir una línea 181 3. Declarar variables 181 4. Ejemplo de aplicación 182 5. Ejercicios de aplicaciones 183 a. Nueva herramienta : Power Query 183 b. Ejercicio: Extraer los datos de un archivo de texto 184 c. Corte según un carácter de separación 190 Capítulo 12: Administración de las fechas y las horas A. Introducción 198 www.ediciones-eni.com © Ediciones ENI 14/25 Macros y lenguaje VBA Aprender a programar con Excel (3ª edición) B. Introducción a las fechas 198 1. Configurar las fechas 199 2. ¿Mi celda contiene una fecha? 200 3. Dar formato a una fecha 202 C. Las funciones básicas 203 D. Las funciones de extracción 204 1. Extracción de las fechas 204 2. Extracción de las horas 204 E. La instrucción DateSerial 205 1. Convertir un número en fecha 205 2. Realizar operaciones con las fechas 206 3. Manipulación de las fechas 206 4. Meses en letras 207 F. Calcular la diferencia entre dos fechas 209 1. La función SIFECHA en Excel 209 2. La función DATEDIFF en VBA 210 3. Integración de la función SIFECHA de Excel en VBA 211 G. Funciones de semanas www.ediciones-eni.com © Ediciones ENI 15/25 Macros y lenguaje VBA Aprender a programar con Excel (3ª edición) 211 1. ¿Qué día de la semana? 211 2. Número de días laborables en la semana 211 3. Número de semana 212 4. Días festivos 213 Capítulo 13: Trabajar en un libro Excel A. Introducción 216 B. Manipulación de los libros 216 1. Diferencia entre Workbooks y ActiveWorkbook 216 2. Abrir un libro 217 3. Cerrar un libro 217 4. Guardar un libro 218 5. Guardar un libro con un nombre nuevo 218 C. Las propiedades de un libro 218 D. Interactuar con la aplicación Excel 220 E. El objeto Application 221 1. ScreenUpdating 221 www.ediciones-eni.com © Ediciones ENI 16/25 Macros y lenguaje VBA Aprender a programar con Excel (3ª edición) 2. DisplayAlerts 221 3. StatusBar/DisplayStatusBar 222 4. Llamada a funciones de cálculo de Excel 223 a. Cómo usar las funciones de cálculo de Excel 223 b. La función Match 223 c. La función Index 224 5. Añadir un tiempo de latencia 225 6. El cuadro de diálogo Abrir 226 7. El cuadro de diálogo Guardar como 226 8. Suspender la comunicación con la impresora 227 9. Modo copiar-pegar suspendido 227 10. Llamada a una macro externa 227 11. Hacer que el ordenador hable 228 Capítulo 14: Trabajar con los archivos A. Introducción 230 B. Operación con archivos 230 1. Copiar un archivo 230 2. Cambiar el nombre de un archivo 230 3. Mover un archivo www.ediciones-eni.com © Ediciones ENI 17/25 Macros y lenguaje VBA Aprender a programar con Excel (3ª edición) 231 4. Eliminar un archivo 231 5. Recuperar la hora y la fecha de un archivo 232 6. Averiguar el tamaño de un archivo 232 7. Encontrar un archivo en un directorio 233 C. Operaciones con los directorios 234 1. Definir un directorio de trabajo 234 2. Crear un directorio 235 3. Eliminar un directorio 235 4. Test para saber si un directorio existe 235 D. "Barrer" un directorio 236 1. Bucles con los archivos 236 2. Bucles con los directorios 236 3. Barrer todos los subdirectorios 238 E. Recuperar los datos sin abrir un libro 240 F. Seleccionar un directorioI 241 G. Seleccionar un archivo 242 www.ediciones-eni.com © Ediciones ENI 18/25 Macros y lenguaje VBA Aprender a programar con Excel (3ª edición) Capítulo 15: Optimización A. Introducción 244 B. Instrucciones de búsqueda 244 1. El método FIND 244 2. Resultado de una búsqueda 245 3. Búsqueda del elemento siguiente 246 4. Opciones de búsqueda 247 5. Encontrar el número de la fila 248 C. Las tablas en memoria 249 1. Utilidad de trabajar con tablas en memoria 249 2. Tablas de una o dos dimensiones 249 a. Tabla de una dimensión 249 b. Tabla de dos dimensiones 251 3. Insertar datos en una tabla en memoria 252 4. Borrar una tabla 255 5. Cambiar el tamaño de una tabla 256 6. Tamaño de una tabla 257 7. Buscar en una tabla 258 a. Transferir el contenido de una tabla a un rango de datos 260 www.ediciones-eni.com © Ediciones ENI 19/25 Macros y lenguaje VBA Aprender a programar con Excel (3ª edición) D. Las celdas con nombre y las tablas 261 1. Presentación 261 2. Función dentro de un programa 262 3. Coordenadas de las celdas con nombre 263 4. Uso de las tablas 264 a. El objeto ListObject 264 b. Propiedades específicas de las tablas 265 c. Problemas vinculados con la tabla 266 E. Una API para los milisegundos 268 F. El entorno de 64 bits 269 1. La instrucción PtrSafe 269 2. Las variables de 64 bits 269 3. Coexistencia de plataformas de 32 bits/64 bits 270 Capítulo 16: Llamada de aplicaciones externas A. Introducción 272 B. Eliminar las dll que faltan 272 C. La instrucción CreateObject www.ediciones-eni.com © Ediciones ENI 20/25 Macros y lenguaje VBA Aprender a programar con Excel (3ª edición) 274 D. Envío de e-mails Outlook 275 1. Programa para enviar un correo electrónico 275 2. Explicación del código 276 3. Bucles en sus contactos recogidos en una columna 276 E. Creación de un archivo PDF 277 1. Función para la generación de un archivo PDF 277 2. Exportar un libro entero 278 3. Exportar una hoja de cálculo en PDF 279 F. Conectar con una base de datos Access 280 1. Presentación 280 2. Puesta en marcha 281 3. Insertar nuevos registros en Access 283 4. Actualizar una base Access desde Excel 285 Capítulo 17: Iniciar un programa de varias maneras A. Repaso del inicio por Visual Basic Editor 288 B. Combinación de teclas A 8 288 www.ediciones-eni.com © Ediciones ENI 21/25 Macros y lenguaje VBA Aprender a programar con Excel (3ª edición) C. Inicio mediante un botón u otro objeto 289 1. Los botones 289 2. Los botones de opción (o botones radio) 291 3. Los menús desplegables 294 4. Ubicación de los objetos 298 D. Procedimiento Auto_Open/Auto_Close 300 E. Evento en una hoja de cálculo 301 1. Principio de los eventos 301 2. Lista de eventos 301 3. El evento Change 303 4. El parámetro Target 303 5. Controlar la selección 304 6. El evento SelectionChange 304 7. El evento doble clic 305 Capítulo 18: Los cuadros de diálogo personalizados A. Introducción 308 B. Crear un cuadro de diálogo www.ediciones-eni.com © Ediciones ENI 22/25 Macros y lenguaje VBA Aprender a programar con Excel (3ª edición) 308 1. Insertar un nuevo UserForm 308 2. Escribir un código en un UserForm 310 3. Hacer referencia a un UserForm 311 C. Los eventos 312 D. Los controles 313 E. Ubicación de los controles 314 F. Orden de tabulación 319 Capítulo 19: Los controles A. Introducción 322 B. Las etiquetas (Labels o títulos) 322 C. Los cuadros de texto (o TextBox) 324 D. Los botones (o CommandButton) 325 1. Agregar un botón 326 2. El botón Cancelar 326 3. El botón Aceptar www.ediciones-eni.com © Ediciones ENI 23/25 Macros y lenguaje VBA Aprender a programar con Excel (3ª edición) 326 E. Las casillas de verificación (CheckBox) 327 F. Los botones de opción (OptionButton o botones radio) 329 G. Los cuadros de lista (o ListBox) 331 1. Presentación 331 2. Manipular los datos de la lista 332 3. Alimentar una lista en el programa 335 H. Los cuadros combinados (ComboBox o menús desplegables) 337 I. Síntesis 339 Capítulo 20: Gestión de errores A. Introducción 342 B. Las instrucciones para la gestión de errores 342 1. On Error 342 2. La instrucción Resume 342 3. La instrucción Resume Next 342 4. La instrucción Err 343 www.ediciones-eni.com © Ediciones ENI 24/25 Macros y lenguaje VBA Aprender a programar con Excel (3ª edición) 5. GoTo 343 6. GoTo 0 343 C. Redirección de errores 343 1. Ejemplo 1 343 2. Ejemplo 2 346 3. Ejemplo 3 346 Anexos A. Tipos de variables 350 B. Colección de objetos 351 C. Lista de constantes 352 D. Lista de códigos de error transmitidos por Visual Basic 355 E. Lista de caracteres no imprimibles 357 índice 359 Lista de instrucciones, operadores y funciones 367 www.ediciones-eni.com © Ediciones ENI 25/25