Ediciones ENI
VBA Excel 2016Programación en Excel: Macros y lenguaje VBA
Colección Recursos Informáticos
Contenido
1Contenido
Podrá descargar algunos elementos de este libro en la página web de Ediciones ENI: http://www.ediciones-eni.com.
Escriba la referencia ENI del libro RIT16EXCV en la zona de búsqueda y valide. Haga clic en el título y después en el botón de descarga.
Prólogo
Capítulo 1Presentación
1. Presentación del lenguaje VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171.1 Objetivos del lenguaje VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171.2 Algunas definiciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181.3 Escritura de código VBA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2. Las macros de Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.1 Mostrar la pestaña Desarrollador en la cinta de opciones . . . . . 192.2 Descripción de la pestaña Desarrollador . . . . . . . . . . . . . . . . . . . 20
2.2.1 Grupo Código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202.2.2 Grupo Complementos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.2.3 Grupo Controles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.3 Grabar una macro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222.3.1 Grabar la primera macro . . . . . . . . . . . . . . . . . . . . . . . . . . 222.3.2 Ejecutar una macro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.3.3 Grabar una macro con referencias relativas . . . . . . . . . . . 232.3.4 Definir el lugar de almacenamiento
de una nueva macro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252.3.5 Eliminar una macro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262.3.6 Guardar un libro con macros . . . . . . . . . . . . . . . . . . . . . . . 26
2.4 Las macros y la seguridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272.4.1 Modificar la configuración de seguridad . . . . . . . . . . . . . . 272.4.2 Descripción de las diferentes opciones de seguridad . . . . 272.4.3 Habilitar las macros cuando aparece la advertencia
de seguridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2Programación en Excel: macros y lenguaje VBA
VBA Excel 2016
2.4.4 Activar las macros en una ubicación dada . . . . . . . . . . . . 292.4.5 Firmas electrónicas de macros . . . . . . . . . . . . . . . . . . . . . . 30
2.5 Modificar el código de una macro . . . . . . . . . . . . . . . . . . . . . . . . 30
3. Asignar una macro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323.1 Acceso a una macro desde la cinta de opciones
de Office 2016 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323.2 Asociar una macro a un icono de la barra de herramientas
de acceso rápido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353.3 Asociar una macro a un botón de comando . . . . . . . . . . . . . . . . 363.4 Asignar una macro a una imagen . . . . . . . . . . . . . . . . . . . . . . . . 363.5 Asociar una macro a una zona de un objeto gráfico. . . . . . . . . . 373.6 Asociar una macro a una imagen Control ActiveX . . . . . . . . . . 37
4. El entorno de desarrollo VBE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384.1 Acceso al entorno VBE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394.2 Cerrar el entorno VBE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394.3 Volver a Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394.4 Descripción del entorno VBE. . . . . . . . . . . . . . . . . . . . . . . . . . . . 404.5 Elegir las ventanas que hay que mostrar . . . . . . . . . . . . . . . . . . . 43
5. Configuración del editor VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435.1 Configuración de la tipografía . . . . . . . . . . . . . . . . . . . . . . . . . . . 435.2 Configuración de la introducción de código . . . . . . . . . . . . . . . . 445.3 Manejo de errores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455.4 Acoplar una ventana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Capítulo 2El lenguaje VBA
1. Módulos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471.1 Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471.2 Acceso a los módulos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491.3 Importar y exportar código VBA . . . . . . . . . . . . . . . . . . . . . . . . . 49
3Contenido
2. Procedimientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502.1 Definiciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502.2 Acceso a los procedimientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512.3 Procedimientos Sub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512.4 Procedimientos Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522.5 Declaración de procedimientos . . . . . . . . . . . . . . . . . . . . . . . . . . 532.6 Alcance de los procedimientos . . . . . . . . . . . . . . . . . . . . . . . . . . . 542.7 Argumentos de los procedimientos . . . . . . . . . . . . . . . . . . . . . . . 542.8 Argumentos con nombre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552.9 Llamar a un procedimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572.10 Llamar a una función VBA en una fórmula de Excel . . . . . . . . . 572.11 Ejemplos de procedimientos y funciones . . . . . . . . . . . . . . . . . . 60
3. Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613.1 Tipos de variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613.2 Declaración de variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
3.2.1 Declaraciones implícitas. . . . . . . . . . . . . . . . . . . . . . . . . . . 663.2.2 Declaraciones explícitas . . . . . . . . . . . . . . . . . . . . . . . . . . . 673.2.3 Sintaxis de las instrucciones de declaración . . . . . . . . . . . 67
3.3 Declaración de los tipos de variables . . . . . . . . . . . . . . . . . . . . . . 683.3.1 Declaraciones explícitas del tipo . . . . . . . . . . . . . . . . . . . . 683.3.2 Declaraciones implícitas del tipo . . . . . . . . . . . . . . . . . . . . 693.3.3 Convención de nombres de variables . . . . . . . . . . . . . . . . 71
3.4 Matrices. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713.5 Constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
3.5.1 Constantes personalizadas. . . . . . . . . . . . . . . . . . . . . . . . . 733.5.2 Constantes integradas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
4. Estructuras de decisión. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754.1 Instrucción If . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 764.2 Instrucción Select Case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
5. Estructuras en ciclo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 805.1 Instrucción Do...Loop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 815.2 Instrucción While...Wend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
4Programación en Excel: macros y lenguaje VBA
VBA Excel 2016
5.3 Instrucción For...Next . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835.4 Instrucción For Each...Next . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 845.5 Salir de las estructuras de control . . . . . . . . . . . . . . . . . . . . . . . . 86
6. Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 866.1 Operadores aritméticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 876.2 Operadores de comparación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 876.3 Operadores lógicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 886.4 Operador de concatenación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 896.5 Prioridad de los operadores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
7. Reglas de escritura del código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 907.1 Comentarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 907.2 Carácter de continuación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 907.3 Sangrías . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 917.4 Nombres de los procedimientos, variables y constantes . . . . . . 91
Capítulo 3La programación de objetos en Excel
1. Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
2. El modelo de objeto de Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 942.1 Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 942.2 Principales objetos y colecciones . . . . . . . . . . . . . . . . . . . . . . . . . 95
3. Principios de uso de los objetos y las colecciones . . . . . . . . . . . . . . . . 983.1 Propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 983.2 Propiedades que representan objetos. . . . . . . . . . . . . . . . . . . . . . 983.3 Métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1003.4 Eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1013.5 Colecciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1023.6 Redacción automática de instrucciones . . . . . . . . . . . . . . . . . . 104
4. Instrucciones usadas con los objetos. . . . . . . . . . . . . . . . . . . . . . . . . 1064.1 La instrucción With . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1064.2 La instrucción For Each...Next. . . . . . . . . . . . . . . . . . . . . . . . . . 107
5Contenido
4.3 La instrucción If TypeOf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1074.4 La instrucción Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
5. El Examinador de objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1095.1 Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1095.2 Búsqueda en el Examinador de objetos . . . . . . . . . . . . . . . . . . . 111
Capítulo 4Objetos de Excel
1. El objeto Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1131.1 Propiedades que representan las opciones de Excel . . . . . . . . . 114
1.1.1 Opciones de la categoría General. . . . . . . . . . . . . . . . . . . 1141.1.2 Opciones de la categoría Fórmulas . . . . . . . . . . . . . . . . . 1151.1.3 Opciones de la categoría Revisión . . . . . . . . . . . . . . . . . . 1171.1.4 Opciones de la categoría Guardar . . . . . . . . . . . . . . . . . . 1181.1.5 Opciones de la categoría Avanzadas . . . . . . . . . . . . . . . . 119
1.2 Propiedades relativas a la presentación de la aplicación. . . . . . 1261.3 Propiedades varias. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1281.4 Métodos del objeto Application . . . . . . . . . . . . . . . . . . . . . . . . 132
1.4.1 Métodos que actúan sobre las fórmulas y los cálculos. . 1321.4.2 Métodos que actúan sobre las celdas. . . . . . . . . . . . . . . . 1331.4.3 Métodos que actúan sobre las listas personalizadas. . . . 1331.4.4 Métodos que muestran los cuadros de diálogo. . . . . . . . 1341.4.5 Métodos relacionados con las acciones en Excel. . . . . . . 1341.4.6 Métodos relativos al correo . . . . . . . . . . . . . . . . . . . . . . . 1351.4.7 Otros métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
1.5 Ejemplos de códigos que usan el objeto Application . . . . . . . . 1371.5.1 Modificación de la interfaz de Excel . . . . . . . . . . . . . . . . 1371.5.2 Creación de una lista personalizada . . . . . . . . . . . . . . . . 1371.5.3 Selección de columnas no consecutivas . . . . . . . . . . . . . 1381.5.4 Evaluación del resultado de una fórmula . . . . . . . . . . . . 138
6Programación en Excel: macros y lenguaje VBA
VBA Excel 2016
2. Objeto Workbook. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1392.1 Objetos y colecciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1402.2 Propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
2.2.1 Propiedades relativas a la actualización y registro de libros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
2.2.2 Propiedades relativas a libros compartidos . . . . . . . . . . . 1432.2.3 Otras propiedades. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
2.3 Lista de métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1482.3.1 Métodos que actúan directamente sobre los libros . . . . 1482.3.2 Métodos relativos a la seguridad . . . . . . . . . . . . . . . . . . . 1502.3.3 Métodos relativos a libros compartidos . . . . . . . . . . . . . 1502.3.4 Métodos relacionados con datos vinculados. . . . . . . . . . 1512.3.5 Métodos relativos al envío de libros . . . . . . . . . . . . . . . . 1522.3.6 Otros métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
2.4 Ejemplos de códigos que usan el objeto Workbook . . . . . . . . . 1532.4.1 Creación de un libro de Excel. . . . . . . . . . . . . . . . . . . . . . 1532.4.2 Importar una base de datos y exportarla al formato
HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1542.4.3 Mostrar las propiedades de un libro . . . . . . . . . . . . . . . . 1552.4.4 Exportar un libro al formato PDF . . . . . . . . . . . . . . . . . . 156
3. El objeto Worksheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1563.1 Lista de objetos y colecciones . . . . . . . . . . . . . . . . . . . . . . . . . . 1573.2 Objetos y colecciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1573.3 Propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1603.4 Métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1623.5 Ejemplos de códigos que usan el objeto Worksheet . . . . . . . . . 165
3.5.1 Ordenar las hojas de cálculo de un libro . . . . . . . . . . . . . 1653.5.2 Protección de las hojas de cálculo de un libro . . . . . . . . . 1663.5.3 Ordenar una tabla. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
4. El objeto Range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1674.1 Propiedades y métodos que devuelven un objeto Range . . . . . 1674.2 Sintaxis de las propiedades que devuelven un objeto Range . . 1704.3 Lista de objetos y colecciones . . . . . . . . . . . . . . . . . . . . . . . . . . 174
7Contenido
4.4 Propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1764.4.1 Propiedades relacionadas con la posición y el formato
de las celdas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1764.4.2 Propiedades que se relacionan con el contenido
de celdas y con las fórmulas. . . . . . . . . . . . . . . . . . . . . . . 1774.4.3 Otras propiedades. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
4.5 Métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1794.5.1 Métodos que devuelven un objeto . . . . . . . . . . . . . . . . . 1794.5.2 Métodos que se relacionan con la presentación
de las celdas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1794.5.3 Métodos relacionados con el contenido de las celdas. . . 1814.5.4 Métodos relacionados con los nombres de celdas. . . . . . 1834.5.5 Métodos relacionados con los filtros . . . . . . . . . . . . . . . . 1834.5.6 Métodos relacionados con el modo esquema . . . . . . . . . 1844.5.7 Métodos que se relacionan con la herramienta
de Auditoría . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1844.5.8 Otros métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
5. Ejemplos de uso de los objetos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1865.1 Cálculo del importe de una prima . . . . . . . . . . . . . . . . . . . . . . . 1865.2 Asignar comentarios a las celdas . . . . . . . . . . . . . . . . . . . . . . . . 188
Capítulo 5Tablas dinámicas y gráficos
1. Las tablas dinámicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1911.1 El objeto PivotTable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
1.1.1 Colecciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1911.1.2 Propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1921.1.3 Métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
1.2 Creación de una tabla dinámica. . . . . . . . . . . . . . . . . . . . . . . . . 196
2. Los gráficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1972.1 El objeto Shape . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
2.1.1 Propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
8Programación en Excel: macros y lenguaje VBA
VBA Excel 2016
2.1.2 Métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1982.2 El objeto Chart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
2.2.1 Colecciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1982.2.2 Propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1982.2.3 Métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
2.3 Creación de un gráfico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
3. Ejemplo de aplicación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2013.1 Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2013.2 Código VBA del ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
4. Creación de una tabla dinámica con minigráficos . . . . . . . . . . . . . . 210
Capítulo 6Cuadros de diálogo
1. Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
2. Cuadros de diálogo integrados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2162.1 El objeto Dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2162.2 Los métodos GetOpenFileName y GetSaveAsFileName . . . . . 217
3. Cuadros de diálogo predefinidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2193.1 La función InputBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2193.2 El método InputBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2203.3 La función MsgBox. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2213.4 Constantes usadas en los cuadros de diálogo . . . . . . . . . . . . . . 225
Capítulo 7Formularios
1. Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
2. Crear un formulario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
3. Personalizar un formulario. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2373.1 Escribir procedimientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2373.2 Lista de eventos asociados a los principales controles . . . . . . . 238
9Contenido
3.3 Ejecutar y cerrar un formulario . . . . . . . . . . . . . . . . . . . . . . . . . 244
4. Ejemplo de formulario personalizado . . . . . . . . . . . . . . . . . . . . . . . . 2454.1 Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2454.2 Código asociado al botón macro de la pestaña Empleados . . . 2474.3 Código VBA asociado al formulario . . . . . . . . . . . . . . . . . . . . . 247
Capítulo 8Mejoras en la interfaz de usuario
1. Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
2. Personalización de la cinta con la utilidad Custom UI Editor . . . . . 2542.1 Presentación de la utilidad Custom UI Editor . . . . . . . . . . . . . 2542.2 Ejemplo de código XML de personalización . . . . . . . . . . . . . . . 2562.3 Etiquetas XML correspondientes a los distintos elementos
de la cinta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2592.3.1 Pestañas y grupos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2592.3.2 Principales controles de la cinta de opciones . . . . . . . . . 2602.3.3 Atributos de los controles de la cinta de opciones . . . . . 2632.3.4 Resumen de los atributos para cada control . . . . . . . . . . 2652.3.5 Imágenes de la galería de iconos de Microsoft Office . . 2672.3.6 Funciones de llamadas Callbacks. . . . . . . . . . . . . . . . . . . 2672.3.7 Uso de las funciones de llamada Callbacks . . . . . . . . . . . 270
3. Ejemplo de cinta personalizada con el Custom UI Editor . . . . . . . . 2713.1 Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2713.2 Código XML de la cinta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2733.3 Código VBA de personalización de la cinta (módulo "Cinta"). 275
4. Personalización de la cinta de opciones mediante la colección CommandBars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
5. Ejemplos de barras de comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2805.1 Barras de herramientas personalizadas . . . . . . . . . . . . . . . . . . . 2805.2 Comandos de menús en formato Office 2016 . . . . . . . . . . . . . 2805.3 Agregar el grupo a la barra de herramientas de acceso rápido . 281
10Programación en Excel: macros y lenguaje VBA
VBA Excel 2016
6. Barras de comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2826.1 Terminología. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
6.1.1 Barra de comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2826.1.2 Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
6.2 Crear una barra de comandos . . . . . . . . . . . . . . . . . . . . . . . . . . 2826.3 Eliminar una barra de comandos . . . . . . . . . . . . . . . . . . . . . . . . 2846.4 Mostrar una barra de comandos . . . . . . . . . . . . . . . . . . . . . . . . 284
7. Controles (opciones o botones de comando) de las barras de comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2857.1 Agregar un control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2857.2 Especificar el título de un control . . . . . . . . . . . . . . . . . . . . . . . 2867.3 Eliminar un control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2877.4 Asociar un procedimiento a un control. . . . . . . . . . . . . . . . . . . 2877.5 Otras propiedades. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2877.6 Lista de imágenes asociadas a los botones de comando . . . . . . 289
8. Ejemplos de menús personalizados . . . . . . . . . . . . . . . . . . . . . . . . . . 2908.1 Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2908.2 Código de los ejemplos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2928.3 Código del módulo de clase ThisWorkbook . . . . . . . . . . . . . . . 2928.4 Código de la hoja "Nota de Gastos" . . . . . . . . . . . . . . . . . . . . . . 2938.5 Código del módulo ProcMenus . . . . . . . . . . . . . . . . . . . . . . . . . 2938.6 Código del módulo ProcAction . . . . . . . . . . . . . . . . . . . . . . . . . 298
Capítulo 9Administración de eventos
1. Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
2. Escritura de eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3022.1 Eventos de libro, de hoja o de formulario . . . . . . . . . . . . . . . . . 3022.2 Eventos del objeto Application . . . . . . . . . . . . . . . . . . . . . . . . . 3042.3 Evento asociado a un gráfico incrustado. . . . . . . . . . . . . . . . . . 307
3. Eventos del objeto Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
11Contenido
4. Eventos del objeto Workbook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
5. Eventos del objeto Worksheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
6. Eventos del objeto Chart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
Capítulo 10Depuración y administración de errores
1. Diferentes tipos de error. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3211.1 Errores de sintaxis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3211.2 Errores de compilación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3221.3 Errores de ejecución . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3231.4 Errores de lógica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
2. Depuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3252.1 Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3252.2 La barra de herramientas Depuración . . . . . . . . . . . . . . . . . . . . 3252.3 El objeto Debug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
3. Administración de errores en VBA . . . . . . . . . . . . . . . . . . . . . . . . . . 3283.1 El objeto Err. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
Capítulo 11Comunicación con las aplicaciones de Office 2016
1. La tecnología Automation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3331.1 Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3331.2 Uso de la tecnología Automation . . . . . . . . . . . . . . . . . . . . . . . 334
2. Comunicación con Word desde Excel . . . . . . . . . . . . . . . . . . . . . . . . 3362.1 El modelo de objeto de Word . . . . . . . . . . . . . . . . . . . . . . . . . . . 3362.2 Principales colecciones del modelo de objeto de Word. . . . . . . 3372.3 Principales objetos del modelo de objeto de Word . . . . . . . . . . 3382.4 La colección Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3392.5 Objetos Document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3402.6 Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
12Programación en Excel: macros y lenguaje VBA
VBA Excel 2016
3. Comunicación con Access desde Excel . . . . . . . . . . . . . . . . . . . . . . . 3453.1 El modelo de objeto de Access . . . . . . . . . . . . . . . . . . . . . . . . . . 3453.2 Principales colecciones del modelo de objeto de Access . . . . . . 3463.3 Principales objetos del modelo de objeto de Access . . . . . . . . . 3463.4 Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
3.4.1 Listar tablas de una base de Access . . . . . . . . . . . . . . . . . 3483.4.2 Mostrar una tabla de Access en Excel . . . . . . . . . . . . . . . 3483.4.3 Abrir una tabla o consulta de Access
en un nuevo libro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
4. Comunicación con Outlook desde Excel. . . . . . . . . . . . . . . . . . . . . . 3514.1 Objetos de Outlook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3514.2 Acceso a los objetos de Outlook . . . . . . . . . . . . . . . . . . . . . . . . 352
4.2.1 Creación de un objeto (e-mail, contacto...) en Outlook 3524.2.2 Acceso a los objetos (contactos, citas…) de Outlook. . . 353
4.3 Ejemplo de uso del objeto MailItem . . . . . . . . . . . . . . . . . . . . . 354
5. Objetos vinculados o incrustados . . . . . . . . . . . . . . . . . . . . . . . . . . . 3555.1 Métodos del objeto OLEObject . . . . . . . . . . . . . . . . . . . . . . . . . 3565.2 Propiedades del objeto OLEObject . . . . . . . . . . . . . . . . . . . . . . 356
6. Métodos y propiedades relativos a los vínculos con Excel . . . . . . . . 3576.1 Métodos y propiedades del objeto Workbook . . . . . . . . . . . . . 3576.2 Métodos y propiedades de otros objetos. . . . . . . . . . . . . . . . . . 359
Capítulo 12Internet
1. Consultas por Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
2. El objeto QueryTable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3632.1 Propiedades del objeto QueryTable . . . . . . . . . . . . . . . . . . . . . . 3642.2 Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
3. Publicación de páginas web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3703.1 Asociación de un elemento de libro a una página web . . . . . . 3713.2 Publicación de la página web . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
13Contenido
3.3 Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
4. Los objetos WebOptions y DefaultWebOptions . . . . . . . . . . . . . . . 3734.1 Propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
4.1.1 Opciones de la pestaña General . . . . . . . . . . . . . . . . . . . . 3744.1.2 Opciones de la pestaña Exploradores . . . . . . . . . . . . . . . 3754.1.3 Opciones de la pestaña Archivos . . . . . . . . . . . . . . . . . . . 3764.1.4 Otras propiedades. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376
4.2 Método del objeto WebOptions . . . . . . . . . . . . . . . . . . . . . . . . 377
5. Importar, exportar y asignar archivos XML . . . . . . . . . . . . . . . . . . . 3775.1 Colecciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3785.2 Métodos del objeto Workbook . . . . . . . . . . . . . . . . . . . . . . . . . 3795.3 Eventos del objeto Workbook . . . . . . . . . . . . . . . . . . . . . . . . . . 3805.4 Métodos del objeto XmlMap . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
6. El objeto HyperLink . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3816.1 Propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3816.2 Métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
Capítulo 13Programación en Windows
1. Presentación de las API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
2. Llamar a una función de la API de Windows . . . . . . . . . . . . . . . . . . 3852.1 Sintaxis de la instrucción Declare . . . . . . . . . . . . . . . . . . . . . . . 3852.2 Paso de argumentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
3. Lista de funciones API de Windows . . . . . . . . . . . . . . . . . . . . . . . . . 386
4. Ejemplos de uso de funciones API de Windows . . . . . . . . . . . . . . . . 3874.1 Recuperar el directorio Windows . . . . . . . . . . . . . . . . . . . . . . . 3874.2 Abrir la calculadora de Windows. . . . . . . . . . . . . . . . . . . . . . . . 388
5. El objeto FileSystemObject . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3905.1 Métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3905.2 Propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3925.3 Ejemplo: copia de archivos de Excel . . . . . . . . . . . . . . . . . . . . . 392
14Programación en Excel: macros y lenguaje VBA
VBA Excel 2016
Capítulo 14Código de una miniaplicación
1. Presentación general . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
2. Descripción de la aplicación GestPresupuesto . . . . . . . . . . . . . . . . . 394
3. Cinta de Office 2013 personalizada. . . . . . . . . . . . . . . . . . . . . . . . . . 3963.1 Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3963.2 Código XML de la cinta personalizada . . . . . . . . . . . . . . . . . . . 397
4. Módulo ThisWorbook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3984.1 Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3984.2 Código VBA del módulo ThisWorkbook . . . . . . . . . . . . . . . . . 398
5. Formulario NuevoPresupuesto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3995.1 Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3995.2 Lista de controles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3995.3 Lista de celdas con nombre del modelo Presupuesto.xltx . . . . 4005.4 Código VBA del formulario NuevoPresupuesto . . . . . . . . . . . . 400
6. Formulario BuscarPresupuesto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4036.1 Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4036.2 Lista de controles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4036.3 Código VBA del formulario BuscarPresupuesto . . . . . . . . . . . . 404
7. Módulos ProcCinta y ProcGene. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4077.1 Código VBA del módulo ProcCinta. . . . . . . . . . . . . . . . . . . . . . 4077.2 Código VBA del módulo ProcGene . . . . . . . . . . . . . . . . . . . . . . 409
Anexos1. Lista de instrucciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
1.1 Cadenas de caracteres. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4131.2 Fecha Hora/Matemáticas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4141.3 Declaración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4141.4 Error. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416
15Contenido
1.5 Archivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4171.6 Estructuración. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4211.7 Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4221.8 Diversas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
2. Lista de funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4242.1 Conversiones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4242.2 Cadenas de caracteres. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4262.3 Matemáticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4292.4 Financieras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4312.5 Fechas y horas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4332.6 Archivos, Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4362.7 Verificación de variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4382.8 Interacción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4392.9 Matrices. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4392.10 SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4402.11 Diversas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4412.12 Solver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442
3. Constantes VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4443.1 Constantes de color . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4443.2 Constantes de fecha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4443.3 Constantes de teclas correspondientes a letras y números . . . 4453.4 Constantes de teclas de función . . . . . . . . . . . . . . . . . . . . . . . . 4453.5 Constantes de teclas diversas. . . . . . . . . . . . . . . . . . . . . . . . . . . 446
Índice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449
Ediciones ENI
VBA Excel 2016 Cree aplicaciones profesionales:
Ejercicios y correcciones
Colección Prácticas Técnicas
Contenido
PrefacioA quién va dirigido el libro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19Objetivo del libro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19Utilización del libro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19Ayuda en la realización de las prácticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
EnunciadosCapítulo 1: ProcedimientosRequisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37Enunciado 1.1 Crear y utilizar un procedimiento privado . . . . . . . . . . . . . . . . . . . . . . 39Enunciado 1.2 Crear y utilizar un procedimiento público . . . . . . . . . . . . . . . . . . . . . . 40Enunciado 1.3 Llamar a un procedimiento desde otro procedimiento . . . . . . . . . . . . . 40Enunciado 1.4 Llamar a un procedimiento a partir de otro módulo . . . . . . . . . . . . . . . 41Enunciado 1.5 Llamar a un procedimiento desde un control VBA . . . . . . . . . . . . . . . . 41Enunciado 1.6 Utilizar un procedimiento desde una hoja de cálculo Excel . . . . . . . . . . 42Enunciado 1.7 Utilizar un procedimiento a partir de un libro Excel . . . . . . . . . . . . . . . 42Enunciado 1.8 Crear una función . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43Enunciado 1.9 Utilizar una función . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43Enunciado 1.10 Utilizar parámetros con nombre . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Capítulo 2: Variables - Constantes - Tipos de datosRequisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45Enunciado 2.1 Declarar y utilizar una variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48Enunciado 2.2 Declarar y utilizar una constante . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50Enunciado 2.3 Utilizar la fecha del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52Enunciado 2.4 Crear un tipo de datos "PezTropical" definido por el usuario . . . . . . . . . 52Enunciado 2.5 Utilizar el tipo "PezTropical" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53Enunciado 2.6 Renombrar una hoja de cálculo Excel . . . . . . . . . . . . . . . . . . . . . . . . 54
Capítulo 3: Funciones - OperadoresRequisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55Enunciado 3.1 Dividir dos números . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57Enunciado 3.2 Obtener el resto de una división entera . . . . . . . . . . . . . . . . . . . . . . . 57Enunciado 3.3 Comparar números y buscar el más pequeño de ellos . . . . . . . . . . . . . 58Enunciado 3.4 Dar el resultado de un número elevado a la potencia N . . . . . . . . . . . . 59Enunciado 3.5 Comparar dos cadenas de caracteres. . . . . . . . . . . . . . . . . . . . . . . . . 60
2
Enunciado 3.6 Realizar un cálculo factorial. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60Enunciado 3.7 Calcular el porcentaje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61Enunciado 3.8 Formatear una palabra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62Enunciado 3.9 Buscar una palabra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62Enunciado 3.10 Extraer información de una cadena de caracteres . . . . . . . . . . . . . . . . 63
Capítulo 4: Estructuras de controlRequisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65Enunciado 4.1 Comprobar que se introduce un número . . . . . . . . . . . . . . . . . . . . . . 67Enunciado 4.2 Despedida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68Enunciado 4.3 Controlar la introducción de una consonante o una vocal . . . . . . . . . . 70Enunciado 4.4 Mostrar un mensaje según la edad y el sexo . . . . . . . . . . . . . . . . . . . 70Enunciado 4.5 Mostrar buenos días N veces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72Enunciado 4.6 Contar de N en N hasta M. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72Enunciado 4.7 Hacer obligatoria la introducción de un dato y controlar la salida . . . . . 73Enunciado 4.8 Invertir el orden de los caracteres . . . . . . . . . . . . . . . . . . . . . . . . . . . 75Enunciado 4.9 Comprobar si un número es primo . . . . . . . . . . . . . . . . . . . . . . . . . . 75Enunciado 4.10 Contar el número de ocurrencias de un número . . . . . . . . . . . . . . . . . 76
Capítulo 5: TablasRequisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77Enunciado 5.1 Declarar una tabla accesible por todos los procedimientos del proyecto 79Enunciado 5.2 Declarar una tabla accesible solo por los procedimientos del módulo . . 79Enunciado 5.3 Utilizar una tabla declarada en un procedimiento. . . . . . . . . . . . . . . . 79Enunciado 5.4 Utilizar una tabla a nivel de módulo . . . . . . . . . . . . . . . . . . . . . . . . . 80Enunciado 5.5 Inicializar una tabla con un bucle . . . . . . . . . . . . . . . . . . . . . . . . . . . 80Enunciado 5.6 Declarar y utilizar una tabla de dos dimensiones . . . . . . . . . . . . . . . . 81Enunciado 5.7 Declarar y utilizar una tabla de más de dos dimensiones. . . . . . . . . . . 81Enunciado 5.8 Declarar y utilizar una tabla dinámica. . . . . . . . . . . . . . . . . . . . . . . . 82Enunciado 5.9 Hacer más grande una tabla dinámica
con servando los valores iniciales . . . . . . . . . . . . . . . . . . . . . . . . . . . 82Enunciado 5.10 Trabajar con una tabla mediante un bucle. . . . . . . . . . . . . . . . . . . . . 83Enunciado 5.11 Mostrar una tabla en un formulario. . . . . . . . . . . . . . . . . . . . . . . . . . 83
3
Capítulo 6: Introducción a la programación orientada a objetosRequisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85Enunciado 6.1 Acceder a un objeto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87Enunciado 6.2 Leer las propiedades de un objeto . . . . . . . . . . . . . . . . . . . . . . . . . . . 88Enunciado 6.3 Modificar las propiedades de un objeto . . . . . . . . . . . . . . . . . . . . . . . 89Enunciado 6.4 Utilizar los métodos de un objeto . . . . . . . . . . . . . . . . . . . . . . . . . . . 90Enunciado 6.5 Gestionar las colecciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91Enunciado 6.6 Gestionar los eventos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92Enunciado 6.7 Administrar los errores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93Enunciado 6.8 Crear una clase. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94Enunciado 6.9 Utilizar la clase creada. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95Enunciado 6.10 Crear y utilizar una colección de objetos . . . . . . . . . . . . . . . . . . . . . . 96
Capítulo 7: LibrosRequisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97Enunciado 7.1 Conocer el libro activo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99Enunciado 7.2 Mostrar el libro activo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99Enunciado 7.3 Cambiar el libro activo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100Enunciado 7.4 Grabar el libro activo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100Enunciado 7.5 Agregar un nuevo libro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100Enunciado 7.6 Grabar un libro especificando la carpeta de destino. . . . . . . . . . . . . . 100Enunciado 7.7 Obtener la ruta completa donde se encuentra el libro . . . . . . . . . . . . 101Enunciado 7.8 Cerrar todos los libros ofreciendo la posibilidad de grabarlos . . . . . . . 102Enunciado 7.9 Dar la bienvenida al usuario con un mensaje cuando se abra el libro. . 102Enunciado 7.10 Seleccionar la hoja de cálculo al abrir el fichero . . . . . . . . . . . . . . . . 103Enunciado 7.11 Actualizar todos los cálculos antes del cierre del libro . . . . . . . . . . . . 103Enunciado 7.12 Actualizar todos los cálculos antes de la impresión . . . . . . . . . . . . . . 104Enunciado 7.13 Consolidar datos a partir de varios libros . . . . . . . . . . . . . . . . . . . . . 105Enunciado 7.14 Actualizar datos consolidados al abrir el libro . . . . . . . . . . . . . . . . . . 106Enunciado 7.15 Actualizar los datos a partir de varios libros permanentemente . . . . . . 107Enunciado 7.16 Crear una portada de acceso a varios libros . . . . . . . . . . . . . . . . . . . 107
Capítulo 8: Hojas de cálculoRequisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109Enunciado 8.1 Averiguar el nombre de la hoja activa . . . . . . . . . . . . . . . . . . . . . . . 111Enunciado 8.2 Renombrar la hoja activa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112Enunciado 8.3 Avisar al cambiar la hoja activa recordando
el nombre de la hoja activa anterior. . . . . . . . . . . . . . . . . . . . . . . . . 112
4
Enunciado 8.4 Realizar una vista previa de la hoja activa . . . . . . . . . . . . . . . . . . . . 113Enunciado 8.5 Desencadenar una acción cuando se active una hoja . . . . . . . . . . . . 113Enunciado 8.6 Desencadenar una acción cuando se activa una celda
de la hoja activa. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114Enunciado 8.7 Desencadenar una acción cuando se modifica
una celda de la hoja activa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115Enunciado 8.8 Desencadenar una acción cuando
se haga doble clic en una celda de la hoja activa . . . . . . . . . . . . . . . 115Enunciado 8.9 Agregar una nueva hoja de cálculo . . . . . . . . . . . . . . . . . . . . . . . . . 116Enunciado 8.10 Eliminar una hoja de cálculo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116Enunciado 8.11 Copiar una hoja de cálculo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117Enunciado 8.12 Averiguar el número de hojas del libro . . . . . . . . . . . . . . . . . . . . . . 117Enunciado 8.13 Averiguar los nombres de todas las hojas de cálculo. . . . . . . . . . . . . 117Enunciado 8.14 Mostrar los nombres de todas las hojas de cálculo en forma de lista. . 118Enunciado 8.15 Buscar una hoja de cálculo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119Enunciado 8.16 Proteger todas las hojas de cálculo. . . . . . . . . . . . . . . . . . . . . . . . . 119Enunciado 8.17 Desproteger todas las hojas de cálculo . . . . . . . . . . . . . . . . . . . . . . 119
Capítulo 9: Celdas y rangosRequisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121Enunciado 9.1 Activar una celda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123Enunciado 9.2 Averiguar la dirección de la celda activa . . . . . . . . . . . . . . . . . . . . . 123Enunciado 9.3 Recuperar el valor de una celda . . . . . . . . . . . . . . . . . . . . . . . . . . . 124Enunciado 9.4 Recuperar la fórmula de una celda . . . . . . . . . . . . . . . . . . . . . . . . . 124Enunciado 9.5 Modificar el contenido de una celda . . . . . . . . . . . . . . . . . . . . . . . . 124Enunciado 9.6 Modificar el formato de una celda . . . . . . . . . . . . . . . . . . . . . . . . . 125Enunciado 9.7 Seleccionar la columna donde está la celda activa . . . . . . . . . . . . . . 125Enunciado 9.8 Seleccionar todas las celdas de una hoja de cálculo . . . . . . . . . . . . . 126Enunciado 9.9 Seleccionar todas las celdas de un rango definido . . . . . . . . . . . . . . 126Enunciado 9.10 Seleccionar toda una tabla a partir de una de sus celdas. . . . . . . . . . 127Enunciado 9.11 Seleccionar una tabla o lista con nombre a partir de su nombre . . . . 127Enunciado 9.12 Indicar la dirección de la celda bajo la celda activa y seleccionarla. . . 128Enunciado 9.13 Encontrar la última celda que contenga un valor de una columna . . . 128Enunciado 9.14 Asignar la fórmula de una celda a otra celda . . . . . . . . . . . . . . . . . . 129Enunciado 9.15 Asignar una fórmula a una celda . . . . . . . . . . . . . . . . . . . . . . . . . . 129Enunciado 9.16 Asignar la referencia absoluta de una celda a otra celda . . . . . . . . . . 130Enunciado 9.17 Asignar un valor a un rango de celdas. . . . . . . . . . . . . . . . . . . . . . . 130Enunciado 9.18 Agregar un comentario a una celda. . . . . . . . . . . . . . . . . . . . . . . . . 130Enunciado 9.19 Llenar una tabla con números . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131Enunciado 9.20 Mostrar el número de columnas, de líneas y de celdas de un rango . . 131
5
Enunciado 9.21 Buscar un valor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132Enunciado 9.22 Crear una serie de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132Enunciado 9.23 Ordenar un rango de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133Enunciado 9.24 Copiar un rango de datos con vínculo a los datos origen . . . . . . . . . . 133Enunciado 9.25 Borrar los valores de un rango de datos pidiendo confirmación . . . . . . 134
Capítulo 10: GráficosRequisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135Enunciado 10.1 Crear un gráfico en una hoja aparte. . . . . . . . . . . . . . . . . . . . . . . . . 137Enunciado 10.2 Renombrar una hoja que contiene un gráfico . . . . . . . . . . . . . . . . . . 138Enunciado 10.3 Mover una hoja que contiene un gráfico. . . . . . . . . . . . . . . . . . . . . . 138Enunciado 10.4 Crear un gráfico incrustado en una hoja de cálculo . . . . . . . . . . . . . . 138Enunciado 10.5 Extender el origen de datos de un gráfico incrustado . . . . . . . . . . . . . 139Enunciado 10.6 Extender el origen de datos de un gráfico
implantado en una hoja gráfica. . . . . . . . . . . . . . . . . . . . . . . . . . . . 140Enunciado 10.7 Modificar el diseño de un gráfico. . . . . . . . . . . . . . . . . . . . . . . . . . . 141Enunciado 10.8 Exportar un gráfico a un fichero de imagen. . . . . . . . . . . . . . . . . . . . 141Enunciado 10.9 Desencadenar una acción cuando se seleccione el gráfico . . . . . . . . . 142Enunciado 10.10 Desencadenar una acción después de un clic en el gráfico . . . . . . . . . 142
Capítulo 11: Intercambio de funciones entre Excel y VBARequisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143Enunciado 11.1 Calcular una comisión en una hoja
de cálculo Excel con una función VBA . . . . . . . . . . . . . . . . . . . . . . . 144Enunciado 11.2 Calcular con una función VBA el precio sin IVA a partir del porcentaje
de IVA y del precio con IVA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145Enunciado 11.3 Calcular el valor acumulado de una inversión con una función VBA. . . 145Enunciado 11.4 Buscar el valor más pequeño en un rango de
celdas con una función Excel en el código VBA. . . . . . . . . . . . . . . . . 146Enunciado 11.5 Generar un número aleatorio a partir de código
VBA utilizando una fórmula Excel . . . . . . . . . . . . . . . . . . . . . . . . . . 146Enunciado 11.6 Calcular la anualidad constante con Excel a partir de una función VBA 147Enunciado 11.7 Eliminar todos los espacios inútiles y redundantes de un rango
de celdas que contenga texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
6
Capítulo 12: Cuadros de diálogo estándaresRequisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149Enunciado 12.1 Mostrar un mensaje simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150Enunciado 12.2 Pedir una introducción de datos sin ningún control en concreto . . . . . 151Enunciado 12.3 Llamar al cuadro de diálogo "Abrir" de Windows . . . . . . . . . . . . . . . 151Enunciado 12.4 Llamar al cuadro de diálogo "Colores" de Windows. . . . . . . . . . . . . . 152Enunciado 12.5 Seleccionar botones para los cuadros de diálogo . . . . . . . . . . . . . . . 153Enunciado 12.6 Determinar el botón predeterminado de entre los disponibles . . . . . . 154Enunciado 12.7 Elegir y agregar un icono a un cuadro de diálogo . . . . . . . . . . . . . . . 154Enunciado 12.8 Controlar la introducción de datos . . . . . . . . . . . . . . . . . . . . . . . . . 155Enunciado 12.9 Realizar una acción según la elección del usuario. . . . . . . . . . . . . . . 155Enunciado 12.10 Realizar un proceso mientras el usuario
introduzca los datos que se le piden . . . . . . . . . . . . . . . . . . . . . . . . 156Enunciado 12.11 Grabar un libro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156Enunciado 12.12 Modificar la fuente de la hoja de cálculo . . . . . . . . . . . . . . . . . . . . . 157Enunciado 12.13 Modificar el color de un rango de celdas . . . . . . . . . . . . . . . . . . . . . 158
Capítulo 13: FormulariosRequisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159Enunciado 13.1 Mostrar un formulario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160Enunciado 13.2 Mostrar un formulario en modo no modal . . . . . . . . . . . . . . . . . . . . 161Enunciado 13.3 Mostrar un formulario detallando su contenido. . . . . . . . . . . . . . . . . 161Enunciado 13.4 Cerrar un formulario y liberar la memoria . . . . . . . . . . . . . . . . . . . . 162Enunciado 13.5 Gestionar el desplazamiento del ratón en el formulario . . . . . . . . . . . 163Enunciado 13.6 Gestionar el doble clic del ratón en el formulario . . . . . . . . . . . . . . . 164Enunciado 13.7 Mostrar un formulario desde otro formulario . . . . . . . . . . . . . . . . . . 164Enunciado 13.8 Modificar el formulario mediante código . . . . . . . . . . . . . . . . . . . . . 165Enunciado 13.9 Desactivar la cruz de cierre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Capítulo 14: ControlesRequisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167Enunciado 14.1 Agregar controles mediante programación . . . . . . . . . . . . . . . . . . . . 169Enunciado 14.2 Ocultar y volver a mostrar los controles. . . . . . . . . . . . . . . . . . . . . . 170Enunciado 14.3 Mover los controles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170Enunciado 14.4 Hacer que un control dependa de otro . . . . . . . . . . . . . . . . . . . . . . 171Enunciado 14.5 Hacer que los controles respondan a las pulsaciones del teclado . . . . 172Enunciado 14.6 Hacer que los controles respondan al ratón . . . . . . . . . . . . . . . . . . . 172
7
Enunciado 14.7 Mostrar una columna de datos de Excel con el título en el encabezado en un cuadro de lista . . . . . . . . . . . . . . . . 173
Enunciado 14.8 Mostrar en Excel un dato seleccionado en un cuadro de lista . . . . . . . 174Enunciado 14.9 Informar varias líneas de un cuadro de lista en celdas Excel . . . . . . . . 174Enunciado 14.10 Asignar a una tabla Excel el dato introducido
en una lista desplegable modificable . . . . . . . . . . . . . . . . . . . . . . . . 175Enunciado 14.11 Ordenar una tabla Excel desde una lista desplegable modificable . . . . 176Enunciado 14.12 Utilizar una lista desplegable con dos columnas
y asignar la selección a un rango Excel . . . . . . . . . . . . . . . . . . . . . . 176Enunciado 14.13 Utilizar botones de opción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177Enunciado 14.14 Utilizar casillas de verificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178Enunciado 14.15 Capturar una combinación de teclas . . . . . . . . . . . . . . . . . . . . . . . . 179Enunciado 14.16 Utilizar un botón interruptor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180Enunciado 14.17 Preparar un cuadro de texto con información
ya introducida y seleccionada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181Enunciado 14.18 Gestionar imágenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
Capítulo 15: Agregar objetos vinculados e insertadosRequisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183Enunciado 15.1 Incrustar una imagen o una fotografía . . . . . . . . . . . . . . . . . . . . . . . 185Enunciado 15.2 Incrustar WordPad en Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185Enunciado 15.3 Incrustar un documento Word en Excel . . . . . . . . . . . . . . . . . . . . . . 187Enunciado 15.4 Vincular un documento externo a Excel . . . . . . . . . . . . . . . . . . . . . . 187Enunciado 15.5 Incrustar un vídeo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188Enunciado 15.6 Vincular un vídeo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189Enunciado 15.7 Crear un menú para los objetos vinculados o incrustados. . . . . . . . . . 190
Capítulo 16: Colaboración con las aplicaciones MicrosoftRequisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191Enunciado 16.1 Ejecutar Word. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193Enunciado 16.2 Crear un documento Word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194Enunciado 16.3 Abrir un documento Word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194Enunciado 16.4 Modificar un documento Word . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194Enunciado 16.5 Ejecutar Outlook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195Enunciado 16.6 Enviar un mail con Outlook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195Enunciado 16.7 Ejecutar Access. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196Enunciado 16.8 Crear una base de datos Access . . . . . . . . . . . . . . . . . . . . . . . . . . . 196Enunciado 16.9 Importar una tabla entera Access (con QueryTables) . . . . . . . . . . . . . 196
8
Enunciado 16.10 Importar algunos campos de una tabla Access (con ADO) . . . . . . . . . 197Enunciado 16.11 Importar algunos registros de una tabla Access . . . . . . . . . . . . . . . . 197Enunciado 16.12 Importar algunos registros de varias tablas Access . . . . . . . . . . . . . . 198Enunciado 16.13 Importar los registros de una base
de datos utilizando un vínculo ODBC . . . . . . . . . . . . . . . . . . . . . . . 198
Capítulo 17: Programación WebRequisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199Enunciado 17.1 Crear una página web estática desde un libro Excel . . . . . . . . . . . . . 200Enunciado 17.2 Crear una página web estática desde un libro
Excel cargado en memoria. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201Enunciado 17.3 Mostrar el cuadro de diálogo "Publicar como página web" . . . . . . . . . 201Enunciado 17.4 Publicar el libro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202Enunciado 17.5 Publicar una hoja del libro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203Enunciado 17.6 Publicar un rango de datos de una hoja del libro . . . . . . . . . . . . . . . 203Enunciado 17.7 Actualizar todas las páginas web . . . . . . . . . . . . . . . . . . . . . . . . . . 204Enunciado 17.8 Actualizar todas las páginas web según ciertos criterios . . . . . . . . . . 204Enunciado 17.9 Agregar un vínculo hipertexto a una celda . . . . . . . . . . . . . . . . . . . . 204
Capítulo 18: Programación del formato XMLRequisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205Enunciado 18.1 Grabar un libro Excel en formato XML. . . . . . . . . . . . . . . . . . . . . . . 206Enunciado 18.2 Importar datos en formato XML . . . . . . . . . . . . . . . . . . . . . . . . . . . 206Enunciado 18.3 Exportar datos Excel al formato XML. . . . . . . . . . . . . . . . . . . . . . . . 207Enunciado 18.4 Abrir un fichero XML en Excel 2016. . . . . . . . . . . . . . . . . . . . . . . . 208Enunciado 18.5 Crear un fichero GPX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208Enunciado 18.6 Leer directamente un fichero XML . . . . . . . . . . . . . . . . . . . . . . . . . 209Enunciado 18.7 Realizar un consulta en un fichero XML . . . . . . . . . . . . . . . . . . . . . 209
Capítulo 19: Programación de sistema WindowsRequisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211Enunciado 19.1 Generar un sonido breve (bip) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212Enunciado 19.2 Conocer los tipos de las unidades lógicas . . . . . . . . . . . . . . . . . . . . 212Enunciado 19.3 Ocultar la cruz de cierre de los formularios personalizados . . . . . . . . 212Enunciado 19.4 Calcular el tiempo de ejecución de un procedimiento . . . . . . . . . . . . 213Enunciado 19.5 Recuperar la carpeta temporal y la carpeta de sistema Windows . . . . 214
9
Capítulo 20: Matrices y tablas dinámicasRequisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215Enunciado 20.1 Buscar un dato en un rango de datos . . . . . . . . . . . . . . . . . . . . . . . 216Enunciado 20.2 Buscar un valor con duplicados en un rango de datos . . . . . . . . . . . . 217Enunciado 20.3 Establecer el volumen de negocio por representantes y por país . . . . . 218Enunciado 20.4 Crear una tabla dinámica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219Enunciado 20.5 Gestionar las etiquetas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220Enunciado 20.6 Administrar los campos de valores . . . . . . . . . . . . . . . . . . . . . . . . . 220Enunciado 20.7 Actualizar una tabla dinámica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
Capítulo 21: Herramienta Power QueryRequisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223Enunciado 21.1 Obtener datos a partir de la Web . . . . . . . . . . . . . . . . . . . . . . . . . . 224Enunciado 21.2 Crear una consulta simple sobre una página web . . . . . . . . . . . . . . . 225Enunciado 21.3 Crear una consulta con filtro sobre una página web. . . . . . . . . . . . . . 225Enunciado 21.4 Generalizar una consulta con filtro sobre una página web . . . . . . . . . 226Enunciado 21.5 Crear una consulta Power Query sobre una base de datos Access . . . . 226Enunciado 21.6 Fusionar dos consultas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
SolucionesCapítulo 1: ProcedimientosRequisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229Solución 1.1 Crear y utilizar un procedimiento privado . . . . . . . . . . . . . . . . . . . . . 230Solución 1.2 Crear y utilizar un procedimiento público . . . . . . . . . . . . . . . . . . . . . 230Solución 1.3 Llamar a un procedimiento desde otro procedimiento . . . . . . . . . . . . 230Solución 1.4 Llamar a un procedimiento a partir de otro módulo . . . . . . . . . . . . . . 231Solución 1.5 Llamar a un procedimiento desde un control VBA . . . . . . . . . . . . . . . 231Solución 1.6 Utilizar un procedimiento desde una hoja de cálculo Excel . . . . . . . . . 232Solución 1.7 Utilizar un procedimiento a partir de un libro Excel . . . . . . . . . . . . . . 232Solución 1.8 Crear una función . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233Solución 1.9 Utilizar una función . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233Solución 1.10 Utilizar parámetros con nombre . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
10
Capítulo 2: Variables - Constantes - Tipos de datosRequisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235Solución 2.1 Declarar y utilizar una variable. . . . . . . . . . . . . . . . . . . . . . . . . . . . 236Solución 2.2 Declarar y utilizar una constante . . . . . . . . . . . . . . . . . . . . . . . . . . 237Solución 2.3 Utilizar la fecha del sistema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238Solución 2.4 Crear un tipo de datos "PezTropical" definido por el usuario. . . . . . . . 238Solución 2.5 Utilizar el tipo "PezTropical". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239Solución 2.6 Renombrar una hoja de cálculo Excel . . . . . . . . . . . . . . . . . . . . . . . 239
Capítulo 3: Funciones - OperadoresRequisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241Solución 3.1 Dividir dos números . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241Solución 3.2 Obtener el resto de una división entera . . . . . . . . . . . . . . . . . . . . . . 242Solución 3.3 Comparar números y buscar el más pequeño de ellos . . . . . . . . . . . . 242Solución 3.4 Dar el resultado de un número elevado a la potencia N. . . . . . . . . . . 243Solución 3.5 Comparar dos cadenas de caracteres . . . . . . . . . . . . . . . . . . . . . . . 244Solución 3.6 Realizar un cálculo factorial. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244Solución 3.7 Calcular el porcentaje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246Solución 3.8 Formatear una palabra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246Solución 3.9 Buscar una palabra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247Solución 3.10 Extraer información de una cadena de caracteres . . . . . . . . . . . . . . . 247
Capítulo 4: Estructuras de controlRequisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249Solución 4.1 Comprobar que se introduce un número . . . . . . . . . . . . . . . . . . . . . 249Solución 4.2 Despedida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250Solución 4.3 Controlar la introducción de una consonante o una vocal . . . . . . . . . 250Solución 4.4 Mostrar un mensaje según la edad y el sexo . . . . . . . . . . . . . . . . . . 251Solución 4.5 Mostrar buenos días N veces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252Solución 4.6 Contar de N en N hasta M. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253Solución 4.7 Hacer obligatoria la introducción de un dato y controlar la salida . . . . 254Solución 4.8 Invertir el orden de los caracteres . . . . . . . . . . . . . . . . . . . . . . . . . . 255Solución 4.9 Comprobar si un número es primo . . . . . . . . . . . . . . . . . . . . . . . . . 255Solución 4.10 Contar el número de ocurrencias de un número . . . . . . . . . . . . . . . . 256
11
Capítulo 5: TablasRequisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257Solución 5.1 Declarar una tabla accesible
por todos los procedimientos del proyecto . . . . . . . . . . . . . . . . . . . . 257Solución 5.2 Declarar una tabla accesible solo por los procedimientos del módulo. . 258Solución 5.3 Utilizar una tabla declarada en un procedimiento . . . . . . . . . . . . . . . 258Solución 5.4 Utilizar una tabla a nivel de módulo . . . . . . . . . . . . . . . . . . . . . . . . 259Solución 5.5 Inicializar una tabla con un bucle . . . . . . . . . . . . . . . . . . . . . . . . . . 260Solución 5.6 Declarar y utilizar una tabla de dos dimensiones. . . . . . . . . . . . . . . . 260Solución 5.7 Declarar y utilizar una tabla de más de dos dimensiones . . . . . . . . . . 261Solución 5.8 Declarar y utilizar una tabla dinámica . . . . . . . . . . . . . . . . . . . . . . . 262Solución 5.9 Hacer más grande una tabla dinámica
conservando los valores iniciales. . . . . . . . . . . . . . . . . . . . . . . . . . . 263Solución 5.10 Trabajar con una tabla mediante un bucle . . . . . . . . . . . . . . . . . . . . 264Solución 5.11 Mostrar una tabla en un formulario . . . . . . . . . . . . . . . . . . . . . . . . . 264
Capítulo 6: Introducción a la programación orientada a objetosRequisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265Solución 6.1 Acceder a un objeto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265Solución 6.2 Leer las propiedades de un objeto . . . . . . . . . . . . . . . . . . . . . . . . . . 267Solución 6.3 Modificar las propiedades de un objeto . . . . . . . . . . . . . . . . . . . . . . 267Solución 6.4 Utilizar los métodos de un objeto . . . . . . . . . . . . . . . . . . . . . . . . . . 269Solución 6.5 Gestionar las colecciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269Solución 6.6 Gestionar los eventos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270Solución 6.7 Administrar los errores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271Solución 6.8 Crear una clase. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272Solución 6.9 Utilizar la clase creada. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273Solución 6.10 Crear y utilizar una colección de objetos . . . . . . . . . . . . . . . . . . . . . 274
Capítulo 7: LibrosRequisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275Solución 7.1 Conocer el libro activo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275Solución 7.2 Mostrar el libro activo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275Solución 7.3 Cambiar el libro activo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276Solución 7.4 Grabar el libro activo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276Solución 7.5 Agregar un nuevo libro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276Solución 7.6 Grabar un libro especificando la carpeta de destino. . . . . . . . . . . . . . 277Solución 7.7 Obtener la ruta completa donde se encuentra el libro . . . . . . . . . . . . 277
12
Solución 7.8 Cerrar todos los libros ofreciendo la posibilidad de grabarlos . . . . . . . 277Solución 7.9 Dar la bienvenida al usuario con un mensaje cuando se abra el libro . 277Solución 7.10 Seleccionar la hoja de cálculo al abrir el fichero . . . . . . . . . . . . . . . . 278Solución 7.11 Actualizar todos los cálculos antes del cierre del libro . . . . . . . . . . . . 278Solución 7.12 Actualizar todos los cálculos antes de la impresión. . . . . . . . . . . . . . 278Solución 7.13 Consolidar datos a partir de varios libros . . . . . . . . . . . . . . . . . . . . . 279Solución 7.14 Actualizar datos consolidados al abrir el libro. . . . . . . . . . . . . . . . . . 279Solución 7.15 Actualizar los datos a partir de varios libros permanentemente . . . . . 280Solución 7.16 Crear una portada de acceso a varios libros . . . . . . . . . . . . . . . . . . . 280
Capítulo 8: Hojas de cálculoRequisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281Solución 8.1 Averiguar el nombre de la hoja activa . . . . . . . . . . . . . . . . . . . . . . . 281Solución 8.2 Renombrar la hoja activa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282Solución 8.3 Avisar al cambiar la hoja activa recordando
el nombre de la hoja activa anterior . . . . . . . . . . . . . . . . . . . . . . . . 282Solución 8.4 Realizar una vista previa de la hoja activa . . . . . . . . . . . . . . . . . . . . 282Solución 8.5 Desencadenar una acción cuando se active una hoja . . . . . . . . . . . . 282Solución 8.6 Desencadenar una acción cuando se activa
una celda de la hoja activa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283Solución 8.7 Desencadenar una acción cuando se modifica
una celda de la hoja activa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283Solución 8.8 Desencadenar una acción cuando se haga doble
clic en una celda de la hoja activa . . . . . . . . . . . . . . . . . . . . . . . . . 284Solución 8.9 Agregar una nueva hoja de cálculo . . . . . . . . . . . . . . . . . . . . . . . . . 284Solución 8.10 Eliminar una hoja de cálculo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284Solución 8.11 Copiar una hoja de cálculo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284Solución 8.12 Averiguar el número de hojas del libro . . . . . . . . . . . . . . . . . . . . . . 284Solución 8.13 Averiguar los nombres de todas las hojas de cálculo. . . . . . . . . . . . . 285Solución 8.14 Mostrar los nombres de todas las hojas de cálculo en forma de lista. . 285Solución 8.15 Buscar una hoja de cálculo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285Solución 8.16 Proteger todas las hojas de cálculo. . . . . . . . . . . . . . . . . . . . . . . . . 286Solución 8.17 Desproteger todas las hojas de cálculo . . . . . . . . . . . . . . . . . . . . . . 286
Capítulo 9: Celdas y rangosRequisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287Solución 9.1 Activar una celda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288Solución 9.2 Averiguar la dirección de la celda activa . . . . . . . . . . . . . . . . . . . . . 288Solución 9.3 Recuperar el valor de una celda . . . . . . . . . . . . . . . . . . . . . . . . . . . 288Solución 9.4 Recuperar la fórmula de una celda . . . . . . . . . . . . . . . . . . . . . . . . . 288
13
Solución 9.5 Modificar el contenido de una celda . . . . . . . . . . . . . . . . . . . . . . . . 289Solución 9.6 Modificar el formato de una celda . . . . . . . . . . . . . . . . . . . . . . . . . . 289Solución 9.7 Seleccionar la columna donde está la celda activa . . . . . . . . . . . . . . 289Solución 9.8 Seleccionar todas las celdas de una hoja de cálculo . . . . . . . . . . . . . 290Solución 9.9 Seleccionar todas las celdas de un rango definido . . . . . . . . . . . . . . . 290Solución 9.10 Seleccionar toda una tabla a partir de una de sus celdas . . . . . . . . . . 290Solución 9.11 Seleccionar una tabla o lista con nombre a partir de su nombre . . . . . 291Solución 9.12 Indicar la dirección de la celda bajo la celda activa y seleccionarla . . . 291Solución 9.13 Encontrar la última celda que contenga un valor de una columna . . . . 292Solución 9.14 Asignar la fórmula de una celda a otra celda . . . . . . . . . . . . . . . . . . 292Solución 9.15 Asignar una fórmula a una celda. . . . . . . . . . . . . . . . . . . . . . . . . . . 292Solución 9.16 Asignar la referencia absoluta de una celda a otra celda . . . . . . . . . . 293Solución 9.17 Asignar un valor a un rango de celdas . . . . . . . . . . . . . . . . . . . . . . . 293Solución 9.18 Agregar un comentario a una celda . . . . . . . . . . . . . . . . . . . . . . . . . 293Solución 9.19 Llenar una tabla con números. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294Solución 9.20 Mostrar el número de columnas, de líneas y de celdas de un rango . . 294Solución 9.21 Buscar un valor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295Solución 9.22 Crear una serie de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296Solución 9.23 Ordenar un rango de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296Solución 9.24 Copiar un rango de datos con vínculo a los datos origen . . . . . . . . . . 296Solución 9.25 Borrar los valores de un rango de datos pidiendo confirmación . . . . . . 297
Capítulo 10: GráficosRequisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299Solución 10.1 Crear un gráfico en una hoja aparte. . . . . . . . . . . . . . . . . . . . . . . . . 299Solución 10.2 Renombrar una hoja que contiene un gráfico . . . . . . . . . . . . . . . . . . 300Solución 10.3 Mover una hoja que contiene un gráfico. . . . . . . . . . . . . . . . . . . . . . 300Solución 10.4 Crear un gráfico incrustado en una hoja de cálculo . . . . . . . . . . . . . . 300Solución 10.5 Extender el origen de datos de un gráfico incrustado . . . . . . . . . . . . . 301Solución 10.6 Extender el origen de datos de un gráfico
implantado en una hoja gráfica. . . . . . . . . . . . . . . . . . . . . . . . . . . . 301Solución 10.7 Modificar el diseño de un gráfico. . . . . . . . . . . . . . . . . . . . . . . . . . . 301Solución 10.8 Exportar un gráfico a un fichero de imagen. . . . . . . . . . . . . . . . . . . . 301Solución 10.9 Desencadenar una acción cuando se seleccione el gráfico . . . . . . . . . 302Solución 10.10 Desencadenar una acción después de un clic en el gráfico . . . . . . . . . 302
14
Capítulo11: Intercambio de funciones entre Excel y VBARequisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303Solución 11.1 Calcular una comisión en una hoja de cálculo
Excel con una función VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303Solución 11.2 Calcular con una función VBA el precio sin IVA a partir del porcentaje
de IVA y del precio con IVA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304Solución 11.3 Calcular el valor acumulado de una inversión con una función VBA . . 304Solución 11.4 Buscar el valor más pequeño en un rango de
celdas con una función Excel en el código VBA . . . . . . . . . . . . . . . . 304Solución 11.5 Generar un número aleatorio a partir de código
VBA utilizando una fórmula Excel. . . . . . . . . . . . . . . . . . . . . . . . . . 305Solución 11.6 Calcular la anualidad constante con Excel
a partir de una función VBA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305Solución 11.7 Eliminar todos los espacios inútiles y redundantes de un rango
de celdas que contenga texto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
Capítulo 12: Cuadros de diálogo estándaresRequisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307Solución 12.1 Mostrar un mensaje simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307Solución 12.2 Pedir una introducción de datos sin ningún control en concreto . . . . . 307Solución 12.3 Llamar al cuadro de diálogo "Abrir" de Windows . . . . . . . . . . . . . . . 308Solución 12.4 Llamar al cuadro de diálogo "Colores" de Windows. . . . . . . . . . . . . . 308Solución 12.5 Seleccionar botones para los cuadros de diálogo . . . . . . . . . . . . . . . 309Solución 12.6 Determinar el botón predeterminado de entre los disponibles . . . . . . 310Solución 12.7 Elegir y agregar un icono a un cuadro de diálogo . . . . . . . . . . . . . . . 310Solución 12.8 Controlar la introducción de datos . . . . . . . . . . . . . . . . . . . . . . . . . 310Solución 12.9 Realizar una acción según la elección del usuario. . . . . . . . . . . . . . . 311Solución 12.10 Realizar un proceso mientras el usuario
introduzca los datos que se le piden . . . . . . . . . . . . . . . . . . . . . . . . 311Solución 12.11 Grabar un libro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312Solución 12.12 Modificar la fuente de la hoja de cálculo . . . . . . . . . . . . . . . . . . . . . 312Solución 12.13 Modificar el color de un rango de celdas . . . . . . . . . . . . . . . . . . . . . 312
Capítulo 13: FormulariosRequisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315Solución 13.1 Mostrar un formulario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315Solución 13.2 Mostrar un formulario en modo no modal . . . . . . . . . . . . . . . . . . . . 315Solución 13.3 Mostrar un formulario detallando su contenido. . . . . . . . . . . . . . . . . 316Solución 13.4 Cerrar un formulario y liberar la memoria . . . . . . . . . . . . . . . . . . . . 316
15
Solución 13.5 Gestionar el desplazamiento del ratón en el formulario . . . . . . . . . . . 317Solución 13.6 Gestionar el doble clic del ratón en el formulario . . . . . . . . . . . . . . . . 317Solución 13.7 Mostrar un formulario desde otro formulario . . . . . . . . . . . . . . . . . . . 317Solución 13.8 Modificar el formulario mediante código. . . . . . . . . . . . . . . . . . . . . . 317Solución 13.9 Desactivar la cruz de cierre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
Capítulo 14: ControlesRequisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319Solución 14.1 Agregar controles mediante programación . . . . . . . . . . . . . . . . . . . . 319Solución 14.2 Ocultar y volver a mostrar los controles . . . . . . . . . . . . . . . . . . . . . . 320Solución 14.3 Mover los controles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321Solución 14.4 Hacer que un control dependa de otro . . . . . . . . . . . . . . . . . . . . . . . 321Solución 14.5 Hacer que los controles respondan a las pulsaciones del teclado. . . . . 322Solución 14.6 Hacer que los controles respondan al ratón . . . . . . . . . . . . . . . . . . . 322Solución 14.7 Mostrar una columna de datos de Excel con el título
en el encabezado en un cuadro de lista . . . . . . . . . . . . . . . . . . . . . . 322Solución 14.8 Mostrar en Excel un dato seleccionado en un cuadro de lista . . . . . . . 323Solución 14.9 Informar varias líneas de un cuadro de lista en celdas Excel . . . . . . . . 323Solución 14.10 Asignar a una tabla Excel el dato introducido
en una lista desplegable modificable . . . . . . . . . . . . . . . . . . . . . . . . 324Solución 14.11 Ordenar una tabla Excel
desde una lista desplegable modificable. . . . . . . . . . . . . . . . . . . . . . 324Solución 14.12 Utilizar una lista desplegable con dos columnas
y asignar la selección a un rango Excel . . . . . . . . . . . . . . . . . . . . . . 325Solución 14.13 Utilizar botones de opción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325Solución 14.14 Utilizar casillas de verificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326Solución 14.15 Capturar una combinación de teclas . . . . . . . . . . . . . . . . . . . . . . . . 327Solución 14.16 Utilizar un botón interruptor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328Solución 14.17 Preparar un cuadro de texto con información
ya introducida y seleccionada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328Solución 14.18 Gestionar imágenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
Capítulo15: Agregar objetos vinculados e insertadosRequisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331Solución 15.1 Incrustar una imagen o una fotografía . . . . . . . . . . . . . . . . . . . . . . . 331Solución 15.2 Incrustar WordPad en Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332Solución 15.3 Incrustar un documento Word en Excel . . . . . . . . . . . . . . . . . . . . . . 332Solución 15.4 Vincular un documento externo a Excel . . . . . . . . . . . . . . . . . . . . . . 333Solución 15.5 Incrustar un vídeo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
16
Solución 15.6 Vincular un vídeo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334Solución 15.7 Crear un menú para los objetos vinculados o incrustados . . . . . . . . . 334
Capítulo 16: Colaboración con las aplicaciones Microsoft Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337Solución 16.1 Ejecutar Word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337Solución 16.2 Crear un documento Word. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338Solución 16.3 Abrir un documento Word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339Solución 16.4 Modificar un documento Word. . . . . . . . . . . . . . . . . . . . . . . . . . . . 339Solución 16.5 Ejecutar Outlook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339Solución 16.6 Enviar un mail con Outlook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340Solución 16.7 Ejecutar Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340Solución 16.8 Crear una base de datos Access . . . . . . . . . . . . . . . . . . . . . . . . . . . 341Solución 16.9 Importar una tabla entera Access (con QueryTables). . . . . . . . . . . . . 341Solución 16.10 Importar algunos campos de una tabla Access (con ADO) . . . . . . . . . 342Solución 16.11 Importar algunos registros de una tabla Access . . . . . . . . . . . . . . . . 343Solución 16.12 Importar algunos registros de varias tablas Access . . . . . . . . . . . . . . 343Solución 16.13 Importar los registros de una base de datos
utilizando un vínculo ODBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
Capítulo 17: Programación WebRequisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345Solución 17.1 Crear una página web estática desde un libro Excel . . . . . . . . . . . . . 345Solución 17.2 Crear una página web estática
desde un libro Excel cargado en memoria . . . . . . . . . . . . . . . . . . . . 346Solución 17.3 Mostrar el cuadro de diálogo “Publicar como página web” . . . . . . . . 347Solución 17.4 Publicar el libro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347Solución 17.5 Publicar una hoja del libro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347Solución 17.6 Publicar un rango de datos de una hoja del libro . . . . . . . . . . . . . . . 348Solución 17.7 Actualizar todas las páginas web . . . . . . . . . . . . . . . . . . . . . . . . . . 348Solución 17.8 Actualizar todas las páginas web según ciertos criterios . . . . . . . . . . 348Solución 17.9 Agregar un vínculo hipertexto a una celda . . . . . . . . . . . . . . . . . . . . 349
17
Capítulo 18: Programación del formato XMLRequisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351Solución 18.1 Guardar un libro Excel en formato XML . . . . . . . . . . . . . . . . . . . . . . 351Solución 18.2 Importar datos en formato XML . . . . . . . . . . . . . . . . . . . . . . . . . . . 352Solución 18.3 Exportar datos Excel al formato XML . . . . . . . . . . . . . . . . . . . . . . . . 352Solución 18.4 Abrir un fichero XML en Excel 2016 . . . . . . . . . . . . . . . . . . . . . . . . 353Solución 18.5 Crear un fichero GPX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353Solución 18.6 Leer directamente un fichero XML. . . . . . . . . . . . . . . . . . . . . . . . . . 354Solución 18.7 Realizar una consulta en un fichero XML . . . . . . . . . . . . . . . . . . . . . 355
Capítulo 19: Programación de sistema WindowsRequisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357Solución 19.1 Generar un sonido breve (bip). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357Solución 19.2 Conocer los tipos de las unidades lógicas. . . . . . . . . . . . . . . . . . . . . 358Solución 19.3 Ocultar la cruz de cierre de los formularios personalizados . . . . . . . . . 359Solución 19.4 Calcular el tiempo de ejecución de un procedimiento. . . . . . . . . . . . . 360Solución 19.5 Recuperar la carpeta temporal y la carpeta de sistema Windows . . . . 361
Capítulo 20: Matrices y tablas dinámicasRequisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363Solución 20.1 Buscar un dato en un rango de datos . . . . . . . . . . . . . . . . . . . . . . . 363Solución 20.2 Buscar un valor con duplicados en un rango de datos . . . . . . . . . . . . 363Solución 20.3 Establecer el volumen de negocio por representantes y por país . . . . . 364Solución 20.4 Crear una tabla dinámica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365Solución 20.5 Gestionar las etiquetas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366Solución 20.6 Administrar los campos de valores . . . . . . . . . . . . . . . . . . . . . . . . . 366Solución 20.7 Actualizar una tabla dinámica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
18
Capítulo 21: Herramienta Power QueryRequisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369Solución 21.1 Obtener datos a partir de la Web . . . . . . . . . . . . . . . . . . . . . . . . . . 369Solución 21.2 Crear una consulta simple sobre una página web . . . . . . . . . . . . . . . 370Solución 21.3 Crear una consulta con filtro sobre una página web . . . . . . . . . . . . . 371Solución 21.4 Generalizar una consulta con filtro sobre una página web . . . . . . . . . 372Solución 21.5 Crear una consulta Power Query sobre una base de datos Access . . . 373Solución 21.6 Fusionar dos consultas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
Índice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377