VBA Excel 2013 - m.ediciones-eni.com · Programación en Excel: macros y lenguaje VBA VBA Excel...

31
Ediciones ENI VBA Excel 2013 Programación en Excel: Macros y Lenguaje VBA Colección Recursos Informáticos Contenido

Transcript of VBA Excel 2013 - m.ediciones-eni.com · Programación en Excel: macros y lenguaje VBA VBA Excel...

Page 1: VBA Excel 2013 - m.ediciones-eni.com · Programación en Excel: macros y lenguaje VBA VBA Excel 2013 Capítulo 5 Cuadros de diálogo 1.

Ediciones ENI

VBA Excel 2013 Programación en Excel: Macros y Lenguaje VBA

Colección Recursos Informáticos

Contenido

Page 2: VBA Excel 2013 - m.ediciones-eni.com · Programación en Excel: macros y lenguaje VBA VBA Excel 2013 Capítulo 5 Cuadros de diálogo 1.

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 RIT13EXCV 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 ficha PROGRAMADOR en la cinta de opciones . . . 192.2 Descripción de la ficha PROGRAMADOR . . . . . . . . . . . . . . . . . 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 . . . . 282.4.3 Habilitar las macros cuando aparece la advertencia

de seguridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

Page 3: VBA Excel 2013 - m.ediciones-eni.com · Programación en Excel: macros y lenguaje VBA VBA Excel 2013 Capítulo 5 Cuadros de diálogo 1.

2Programación en Excel: macros y lenguaje VBA

VBA Excel 2013

2.4.4 Activar las macros en una ubicación dada . . . . . . . . . . . . 302.4.5 Firmas electrónicas de macros . . . . . . . . . . . . . . . . . . . . . . 30

2.5 Modificar el código de una macro . . . . . . . . . . . . . . . . . . . . . . . . 31

3. Asignar una macro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333.1 Acceso a una macro desde la cinta de opciones

de Office 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333.2 Asociar una macro a un icono de la barra de herramientas

de acceso rápido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363.3 Asociar una macro a un botón de comando . . . . . . . . . . . . . . . . 373.4 Asignar una macro a una imagen . . . . . . . . . . . . . . . . . . . . . . . . 383.5 Asociar una macro a una zona de un objeto gráfico. . . . . . . . . . 383.6 Asociar una macro a una imagen Control ActiveX . . . . . . . . . . 39

4. El entorno de desarrollo VBE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404.1 Acceso al entorno VBE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404.2 Cerrar el entorno VBE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404.3 Volver a Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404.4 Descripción del entorno VBE. . . . . . . . . . . . . . . . . . . . . . . . . . . . 414.5 Elegir las ventanas que hay que mostrar . . . . . . . . . . . . . . . . . . . 44

5. Configuración del editor VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445.1 Configuración de la tipografía . . . . . . . . . . . . . . . . . . . . . . . . . . . 445.2 Configuración de la introducción de código . . . . . . . . . . . . . . . . 455.3 Manejo de errores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465.4 Acoplar una ventana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

Capítulo 2El lenguaje VBA

1. Módulos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491.1 Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491.2 Acceso a los módulos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511.3 Importar y exportar código VBA . . . . . . . . . . . . . . . . . . . . . . . . . 51

Page 4: VBA Excel 2013 - m.ediciones-eni.com · Programación en Excel: macros y lenguaje VBA VBA Excel 2013 Capítulo 5 Cuadros de diálogo 1.

3Contenido

2. Procedimientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522.1 Definiciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522.2 Acceso a los procedimientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532.3 Procedimientos Sub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532.4 Procedimientos Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542.5 Declaración de procedimientos . . . . . . . . . . . . . . . . . . . . . . . . . . 552.6 Alcance de los procedimientos . . . . . . . . . . . . . . . . . . . . . . . . . . . 562.7 Argumentos de los procedimientos . . . . . . . . . . . . . . . . . . . . . . . 562.8 Argumentos con nombre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572.9 Llamar a un procedimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592.10 Llamar a una función VBA en una fórmula Excel . . . . . . . . . . . 592.11 Ejemplos de procedimientos y funciones . . . . . . . . . . . . . . . . . . 62

3. Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633.1 Tipos de variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633.2 Declaración de variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

3.2.1 Declaraciones implícitas. . . . . . . . . . . . . . . . . . . . . . . . . . . 683.2.2 Declaraciones explícitas . . . . . . . . . . . . . . . . . . . . . . . . . . . 693.2.3 Sintaxis de las instrucciones de declaración . . . . . . . . . . . 69

3.3 Declaración de los tipos de variables . . . . . . . . . . . . . . . . . . . . . . 703.3.1 Declaraciones explícitas del tipo . . . . . . . . . . . . . . . . . . . . 703.3.2 Declaraciones implícitas del tipo . . . . . . . . . . . . . . . . . . . . 71

3.4 Matrices. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733.5 Constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

3.5.1 Constantes personalizadas. . . . . . . . . . . . . . . . . . . . . . . . . 753.5.2 Constantes integradas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

4. Estructuras de decisión. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 774.1 Instrucción If . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 774.2 Instrucción Select Case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

5. Estructuras en ciclo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 825.1 Instrucción Do...Loop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 825.2 Instrucción While...Wend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 845.3 Instrucción For...Next . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

Page 5: VBA Excel 2013 - m.ediciones-eni.com · Programación en Excel: macros y lenguaje VBA VBA Excel 2013 Capítulo 5 Cuadros de diálogo 1.

4Programación en Excel: macros y lenguaje VBA

VBA Excel 2013

5.4 Instrucción For Each...Next . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 865.5 Salir de las estructuras de control . . . . . . . . . . . . . . . . . . . . . . . . 87

6. Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 886.1 Operadores aritméticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 886.2 Operadores de comparación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 896.3 Operadores lógicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 906.4 Operador de concatenación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 906.5 Prioridad de los operadores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

7. Reglas de escritura del código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 927.1 Comentarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 927.2 Carácter de continuación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 927.3 Sangrías . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 937.4 Nombres de los procedimientos, variables y constantes . . . . . . 93

Capítulo 3La programación de objetos en Excel

1. Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

2. El modelo de objetos de Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 962.1 Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 962.2 Objetos y colecciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

3. Principios de uso de los objetos y las colecciones . . . . . . . . . . . . . . . 1003.1 Propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1003.2 Propiedades que representan objetos. . . . . . . . . . . . . . . . . . . . . 1003.3 Métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1023.4 Eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1033.5 Colecciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1043.6 Redacción automática de instrucciones . . . . . . . . . . . . . . . . . . 106

4. Instrucciones usadas con los objetos. . . . . . . . . . . . . . . . . . . . . . . . . 1084.1 La instrucción With . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1084.2 La instrucción For Each...Next. . . . . . . . . . . . . . . . . . . . . . . . . . 1094.3 La instrucción If TypeOf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

Page 6: VBA Excel 2013 - m.ediciones-eni.com · Programación en Excel: macros y lenguaje VBA VBA Excel 2013 Capítulo 5 Cuadros de diálogo 1.

5Contenido

4.4 La instrucción Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110

5. El Examinador de objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1115.1 Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1115.2 Búsqueda en el Examinador de objetos . . . . . . . . . . . . . . . . . . . 113

Capítulo 4Objetos de Excel

1. El objeto Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1151.1 Propiedades que representan las opciones de Excel . . . . . . . . . 116

1.1.1 Opciones de la categoría General. . . . . . . . . . . . . . . . . . . 1161.1.2 Opciones de la categoría Fórmulas . . . . . . . . . . . . . . . . . 1171.1.3 Opciones de la categoría Revisión . . . . . . . . . . . . . . . . . . 1191.1.4 Opciones de la categoría Guardar . . . . . . . . . . . . . . . . . . 1211.1.5 Opciones de la categoría Avanzadas . . . . . . . . . . . . . . . . 122

1.2 Propiedades relativas a la presentación de la aplicación. . . . . . 1291.3 Propiedades varias. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1311.4 Métodos del objeto Application . . . . . . . . . . . . . . . . . . . . . . . . 135

1.4.1 Métodos que actúan sobre las fórmulas y cálculos . . . . 1351.4.2 Métodos que actúan sobre las celdas. . . . . . . . . . . . . . . . 1361.4.3 Métodos que actúan sobre las listas personalizadas. . . . 1361.4.4 Métodos que muestran los cuadros de diálogo. . . . . . . . 1361.4.5 Métodos relacionados con las acciones en Excel. . . . . . . 1371.4.6 Métodos relativos al correo . . . . . . . . . . . . . . . . . . . . . . . 1381.4.7 Otros métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138

1.5 Ejemplos de códigos que usan el objeto Application . . . . . . . . 1401.5.1 Modificación de la interfaz de Excel . . . . . . . . . . . . . . . . 1401.5.2 Creación de una lista personalizada . . . . . . . . . . . . . . . . 1401.5.3 Selección de columnas no consecutivas . . . . . . . . . . . . . 1411.5.4 Evaluación del resultado de una fórmula . . . . . . . . . . . . 141

Page 7: VBA Excel 2013 - m.ediciones-eni.com · Programación en Excel: macros y lenguaje VBA VBA Excel 2013 Capítulo 5 Cuadros de diálogo 1.

6Programación en Excel: macros y lenguaje VBA

VBA Excel 2013

2. Objeto Workbook. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1422.1 Objetos y colecciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1432.2 Propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145

2.2.1 Propiedades relativas a la actualización y registro de libros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145

2.2.2 Propiedades relativas a libros compartidos . . . . . . . . . . . 1462.2.3 Otras propiedades. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149

2.3 Lista de métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1512.3.1 Métodos que actúan directamente sobre los libros . . . . 1512.3.2 Métodos relativos a la seguridad . . . . . . . . . . . . . . . . . . . 1532.3.3 Métodos relativos a libros compartidos . . . . . . . . . . . . . 1532.3.4 Métodos relacionados con datos vinculados. . . . . . . . . . 1542.3.5 Métodos relativos al envío de libros . . . . . . . . . . . . . . . . 1552.3.6 Otros métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156

2.4 Ejemplos de códigos que usan el objeto Workbook . . . . . . . . . 1562.4.1 Creación de un libro Excel . . . . . . . . . . . . . . . . . . . . . . . . 1562.4.2 Importar una base de datos y exportarla

al formato HTML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1572.4.3 Mostrar las propiedades de un libro . . . . . . . . . . . . . . . . 1582.4.4 Exportar un libro al formato PDF . . . . . . . . . . . . . . . . . . 159

3. El objeto Worksheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1593.1 Lista de objetos y colecciones . . . . . . . . . . . . . . . . . . . . . . . . . . 1603.2 Objetos y colecciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1603.3 Propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1633.4 Métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1653.5 Ejemplos de códigos que usan el objeto Worksheet . . . . . . . . . 168

3.5.1 Ordenar las hojas de cálculo de un libro . . . . . . . . . . . . . 1683.5.2 Protección de las hojas de cálculo de un libro . . . . . . . . . 1693.5.3 Ordenar una tabla. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169

Page 8: VBA Excel 2013 - m.ediciones-eni.com · Programación en Excel: macros y lenguaje VBA VBA Excel 2013 Capítulo 5 Cuadros de diálogo 1.

7Contenido

4. El objeto Range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1704.1 Propiedades y métodos que devuelven un objeto Range . . . . . 1704.2 Sintaxis de las propiedades que devuelven un objeto Range1734.3 Lista de objetos y colecciones. . . . . . . . . . . . . . . . . . . . . . . . . . . 1774.4 Propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179

4.4.1 Propiedades relacionadas con la posición y el formato de las celdas . . . . . . . . . . . . . . . . . . . . . . . . . . 179

4.4.2 Propiedades que se relacionan con el contenido de celdas y con las fórmulas. . . . . . . . . . . . . . . . . . . . . . . 180

4.4.3 Otras propiedades. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1814.5 Métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182

4.5.1 Métodos que devuelven un objeto . . . . . . . . . . . . . . . . . 1824.5.2 Métodos que se relacionan con la presentación

de las celdas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1824.5.3 Métodos relacionados con el contenido de las celdas. . . 1844.5.4 Métodos relacionados con los nombres de celdas. . . . . . 1864.5.5 Métodos relacionados con los filtros . . . . . . . . . . . . . . . . 1864.5.6 Métodos relacionados con el modo esquema . . . . . . . . . 1874.5.7 Métodos que se relacionan con la herramienta

de Auditoría . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1874.5.8 Otros métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188

5. Ejemplos de uso de los objetos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1895.1 Cálculo del importe de un premio . . . . . . . . . . . . . . . . . . . . . . . 1895.2 Asignar comentarios a las celdas . . . . . . . . . . . . . . . . . . . . . . . . 1915.3 Creación de una tabla dinámica con mini gráficos. . . . . . . . . . 193

Page 9: VBA Excel 2013 - m.ediciones-eni.com · Programación en Excel: macros y lenguaje VBA VBA Excel 2013 Capítulo 5 Cuadros de diálogo 1.

8Programación en Excel: macros y lenguaje VBA

VBA Excel 2013

Capítulo 5Cuadros de diálogo

1. Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197

2. Cuadros de diálogo integrados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1982.1 El objeto Dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1982.2 Los métodos GetOpenFileName y GetSaveAsFileName . . . . . 199

3. Cuadros de diálogo predefinidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2013.1 La función InputBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2013.2 El método InputBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2023.3 La función MsgBox. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2033.4 Constantes usadas en los cuadros de diálogo . . . . . . . . . . . . . . 207

Capítulo 6Formularios

1. Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209

2. Crear un formulario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210

3. Personalizar un formulario. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2193.1 Escribir procedimientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2193.2 Lista de eventos asociados a los principales controles . . . . . . . 2203.3 Ejecutar y cerrar un formulario . . . . . . . . . . . . . . . . . . . . . . . . . 226

4. Ejemplo de formulario personalizado . . . . . . . . . . . . . . . . . . . . . . . . 2274.1 Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2274.2 Código asociado al botón macro de la ficha Empleados. . . . . . 2294.3 Código VBA asociado al formulario . . . . . . . . . . . . . . . . . . . . . 229

Page 10: VBA Excel 2013 - m.ediciones-eni.com · Programación en Excel: macros y lenguaje VBA VBA Excel 2013 Capítulo 5 Cuadros de diálogo 1.

9Contenido

Capítulo 7Mejoras en la interfaz de usuario

1. Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235

2. Personalización de la cinta con la utilidad Custom UI Editor . . . . . 2362.1 Presentación de la utilidad Custom UI Editor . . . . . . . . . . . . . 2362.2 Ejemplo de código XML de personalización . . . . . . . . . . . . . . . 2382.3 Etiquetas XML correspondientes a los distintos elementos

de la cinta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2412.3.1 Fichas y grupos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2412.3.2 Principales controles de la cinta de opciones . . . . . . . . . 2422.3.3 Atributos de los controles de la cinta de opciones . . . . . 2452.3.4 Resumen de los atributos para cada control . . . . . . . . . . 2472.3.5 Imágenes de la galería de iconos de Microsoft Office . . 2492.3.6 Funciones de llamadas Callbacks. . . . . . . . . . . . . . . . . . . 2492.3.7 Uso de las funciones de llamada Callbacks . . . . . . . . . . . 252

3. Ejemplo de cinta personalizada con el Custom UI Editor . . . . . . . . 2533.1 Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2533.2 Código XML de la cinta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2553.3 Código VBA de personalización de la cinta

(módulo "Cinta"). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257

4. Personalización de la cinta de opciones mediante la colección CommandBars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261

5. Ejemplos de barras de comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2625.1 Barras de herramientas personalizadas . . . . . . . . . . . . . . . . . . . 2625.2 Comandos de menús en formato Office 2013 . . . . . . . . . . . . . 2625.3 Agregar el grupo a la barra de herramientas de acceso rápido . 262

6. Barras de comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2646.1 Terminología. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264

6.1.1 Barra de comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2646.1.2 Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264

Page 11: VBA Excel 2013 - m.ediciones-eni.com · Programación en Excel: macros y lenguaje VBA VBA Excel 2013 Capítulo 5 Cuadros de diálogo 1.

10Programación en Excel: macros y lenguaje VBA

VBA Excel 2013

6.2 Crear una barra de comandos . . . . . . . . . . . . . . . . . . . . . . . . . . 2646.3 Eliminar una barra de comandos . . . . . . . . . . . . . . . . . . . . . . . . 2656.4 Mostrar una barra de comandos . . . . . . . . . . . . . . . . . . . . . . . . 266

7. Controles (opciones o botones de comando) de las barras de comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2677.1 Agregar un control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2677.2 Especificar el título de un control . . . . . . . . . . . . . . . . . . . . . . . 2687.3 Eliminar un control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2687.4 Asociar un procedimiento a un control. . . . . . . . . . . . . . . . . . . 2687.5 Otras propiedades. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2697.6 Lista de imágenes asociadas a los botones de comando . . . . . . 270

8. Ejemplos de menús personalizados . . . . . . . . . . . . . . . . . . . . . . . . . . 2728.1 Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2728.2 Código de los ejemplos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2738.3 Código del módulo de clase ThisWorkbook . . . . . . . . . . . . . . . 2748.4 Código de la hoja "Nota de Gastos" . . . . . . . . . . . . . . . . . . . . . . 2748.5 Código del módulo ProcMenus . . . . . . . . . . . . . . . . . . . . . . . . . 2758.6 Código del módulo ProcAction . . . . . . . . . . . . . . . . . . . . . . . . . 280

Capítulo 8Administración de eventos

1. Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283

2. Escritura de eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2842.1 Eventos de libro, de hoja o de formulario . . . . . . . . . . . . . . . . . 2842.2 Eventos del objeto Application . . . . . . . . . . . . . . . . . . . . . . . . . 2862.3 Evento asociado a un gráfico incrustado. . . . . . . . . . . . . . . . . . 289

3. Eventos del objeto Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291

4. Eventos del objeto Workbook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296

5. Eventos del objeto Worksheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299

6. Eventos del objeto Chart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301

Page 12: VBA Excel 2013 - m.ediciones-eni.com · Programación en Excel: macros y lenguaje VBA VBA Excel 2013 Capítulo 5 Cuadros de diálogo 1.

11Contenido

Capítulo 9Depuración y administración de errores

1. Diferentes tipos de error. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3031.1 Errores de sintaxis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3031.2 Errores de compilación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3041.3 Errores de ejecución . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3051.4 Errores de lógica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306

2. Depuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3072.1 Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3072.2 La barra de herramientas Depuración . . . . . . . . . . . . . . . . . . . . 3072.3 El objeto Debug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309

3. Administración de errores en VBA . . . . . . . . . . . . . . . . . . . . . . . . . . 3103.1 El objeto Err. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312

Capítulo 10Comunicación con las aplicaciones Office 2013

1. La tecnología Automation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3151.1 Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3151.2 Uso de la tecnología Automation . . . . . . . . . . . . . . . . . . . . . . . 317

2. Comunicación con Word desde Excel . . . . . . . . . . . . . . . . . . . . . . . . 3182.1 El modelo de objeto Word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3182.2 Principales colecciones del modelo de objetos Word . . . . . . . . 3192.3 Principales objetos del modelo de objetos Word. . . . . . . . . . . . 3202.4 La colección Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3222.5 Objetos Document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3222.6 Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325

3. Comunicación con Access desde Excel . . . . . . . . . . . . . . . . . . . . . . . 3273.1 El modelo de objeto Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3273.2 Principales colecciones del modelo de objeto Access . . . . . . . . 3283.3 Principales objetos del modelo de objeto Access. . . . . . . . . . . . 328

Page 13: VBA Excel 2013 - m.ediciones-eni.com · Programación en Excel: macros y lenguaje VBA VBA Excel 2013 Capítulo 5 Cuadros de diálogo 1.

12Programación en Excel: macros y lenguaje VBA

VBA Excel 2013

3.4 Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3303.4.1 Listar tablas de una base Access . . . . . . . . . . . . . . . . . . . 3303.4.2 Mostrar una tabla Access en Excel . . . . . . . . . . . . . . . . . 3313.4.3 Abrir una tabla o consulta Access en un nuevo libro . . . 332

4. Comunicación con Outlook desde Excel. . . . . . . . . . . . . . . . . . . . . . 3334.1 Objetos Outlook. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3334.2 Acceso a los objetos Outlook . . . . . . . . . . . . . . . . . . . . . . . . . . . 334

4.2.1 Creación de un objeto (e-mail, contacto...) en Outlook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334

4.2.2 Acceso a los objetos (contactos, citas…) de Outlook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335

4.3 Ejemplo de uso del objeto MailItem . . . . . . . . . . . . . . . . . . . . . 336

5. Objetos vinculados o incrustados . . . . . . . . . . . . . . . . . . . . . . . . . . . 3375.1 Métodos del objeto OLEObject . . . . . . . . . . . . . . . . . . . . . . . . . 3385.2 Propiedades del objeto OLEObject . . . . . . . . . . . . . . . . . . . . . . 338

6. Métodos y propiedades relativos a los vínculos con Excel . . . . . . . . 3396.1 Métodos y propiedades del objeto Workbook . . . . . . . . . . . . . 3396.2 Métodos y propiedades de otros objetos. . . . . . . . . . . . . . . . . . 341

Capítulo 11Internet

1. Consultas por Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343

2. El objeto QueryTable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3452.1 Propiedades del objeto QueryTable . . . . . . . . . . . . . . . . . . . . . . 3462.2 Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350

3. Publicación de páginas Web. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3523.1 Asociación de un elemento de libro a una página Web . . . . . . 3533.2 Publicación de la página Web. . . . . . . . . . . . . . . . . . . . . . . . . . . 3543.3 Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354

Page 14: VBA Excel 2013 - m.ediciones-eni.com · Programación en Excel: macros y lenguaje VBA VBA Excel 2013 Capítulo 5 Cuadros de diálogo 1.

13Contenido

4. Los objetos WebOptions y DefaultWebOptions . . . . . . . . . . . . . . . 3554.1 Propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356

4.1.1 Opciones de la ficha General . . . . . . . . . . . . . . . . . . . . . . 3564.1.2 Opciones de la ficha Exploradores . . . . . . . . . . . . . . . . . . 3574.1.3 Opciones de la ficha Archivos . . . . . . . . . . . . . . . . . . . . . 3584.1.4 Otras propiedades. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358

4.2 Método del objeto WebOptions . . . . . . . . . . . . . . . . . . . . . . . . 359

5. Importar, exportar y asignar archivos XML . . . . . . . . . . . . . . . . . . . 3595.1 Colecciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3605.2 Métodos del objeto Workbook . . . . . . . . . . . . . . . . . . . . . . . . . 3615.3 Eventos del objeto Workbook . . . . . . . . . . . . . . . . . . . . . . . . . . 3625.4 Métodos del objeto XmlMap . . . . . . . . . . . . . . . . . . . . . . . . . . . 363

6. El objeto HyperLink . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3636.1 Propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3636.2 Métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364

Capítulo 12Programación Windows

1. Presentación de las API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367

2. Llamar a una función de la API Windows. . . . . . . . . . . . . . . . . . . . . 3692.1 Sintaxis de la instrucción Declare . . . . . . . . . . . . . . . . . . . . . . . 3692.2 Paso de argumentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370

3. Lista de funciones API Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370

4. Ejemplos de uso de funciones API Windows . . . . . . . . . . . . . . . . . . 3714.1 Recuperar el directorio Windows . . . . . . . . . . . . . . . . . . . . . . . 3714.2 Abrir la calculadora de Windows. . . . . . . . . . . . . . . . . . . . . . . . 372

5. El objeto FileSystemObject . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3745.1 Métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3745.2 Propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3765.3 Ejemplo: copia de archivos Excel . . . . . . . . . . . . . . . . . . . . . . . . 376

Page 15: VBA Excel 2013 - m.ediciones-eni.com · Programación en Excel: macros y lenguaje VBA VBA Excel 2013 Capítulo 5 Cuadros de diálogo 1.

14Programación en Excel: macros y lenguaje VBA

VBA Excel 2013

Capítulo 13Código de una miniaplicación

1. Presentación general . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377

2. Descripción de la aplicación GestPresupuesto . . . . . . . . . . . . . . . . . 378

3. Cinta Office 2013 personalizada . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3803.1 Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3803.2 Código XML de la cinta personalizada . . . . . . . . . . . . . . . . . . . 381

4. Módulo ThisWorbook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3824.1 Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3824.2 Código VBA del módulo ThisWorkbook . . . . . . . . . . . . . . . . . 382

5. Formulario NuevoPresupuesto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3835.1 Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3835.2 Lista de controles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3835.3 Lista de celdas con nombre del modelo Presupuesto.xltx . . . . 3845.4 Código VBA del formulario NuevoPresupuesto . . . . . . . . . . . . 384

6. Formulario BuscarPresupuesto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3876.1 Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3876.2 Lista de controles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3876.3 Código VBA del formulario BuscarPresupuesto . . . . . . . . . . . . 388

7. Módulos ProcCinta y ProcGene. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3917.1 Código VBA del módulo ProcCinta. . . . . . . . . . . . . . . . . . . . . . 3917.2 Código VBA del módulo ProcGene . . . . . . . . . . . . . . . . . . . . . . 393

Page 16: VBA Excel 2013 - m.ediciones-eni.com · Programación en Excel: macros y lenguaje VBA VBA Excel 2013 Capítulo 5 Cuadros de diálogo 1.

15Contenido

Anexos1. Lista de instrucciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397

1.1 Cadenas de caracteres. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3971.2 Fecha Hora/Matemáticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3981.3 Declaración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3981.4 Error. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4001.5 Archivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4011.6 Estructuración. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4051.7 Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4061.8 Diversas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407

2. Lista de funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4082.1 Conversiones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4082.2 Cadenas de caracteres. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4102.3 Matemáticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4132.4 Financieras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4152.5 Fechas y horas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4172.6 Archivos, Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4202.7 Verificación de variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4222.8 Interacción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4232.9 Matrices. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4232.10 SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4242.11 Diversas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4252.12 Solver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426

3. Constantes VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4283.1 Constantes de color . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4283.2 Constantes de fecha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4283.3 Constantes de teclas correspondientes a letras y números . . . 4293.4 Constantes de teclas de función . . . . . . . . . . . . . . . . . . . . . . . . 4293.5 Constantes de teclas diversas. . . . . . . . . . . . . . . . . . . . . . . . . . . 430

Índice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433

Page 17: VBA Excel 2013 - m.ediciones-eni.com · Programación en Excel: macros y lenguaje VBA VBA Excel 2013 Capítulo 5 Cuadros de diálogo 1.

Ediciones ENI

VBA Access 2013 Programar en Access

Colección Recursos Informáticos

Contenido

Page 18: VBA Excel 2013 - m.ediciones-eni.com · Programación en Excel: macros y lenguaje VBA VBA Excel 2013 Capítulo 5 Cuadros de diálogo 1.

1Contenido

Introducción

1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

2. Objetivos del libro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

Capítulo 1Generalidades

1. Revisión de conceptos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

2. Principios fundamentales de VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

3. Conversión de macros a VBA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213.1 Conversión de las macros en un formulario o en un informe . . 223.2 Conversión de macros globales . . . . . . . . . . . . . . . . . . . . . . . . . . 23

4. Seguridad de la base de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234.1 Modificación de los parámetros de seguridad

de una base de datos Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234.2 Modificación de los parámetros de seguridad por defecto . . . . . 254.3 Descripción de las diferentes opciones de seguridad . . . . . . . . . 254.4 Documentos confiables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264.5 Ubicaciones de confianza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274.6 Editores de confianza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

5. Publicar una base de datos Access mediante un paquete firmado. . . 295.1 Obtener un certificado digital . . . . . . . . . . . . . . . . . . . . . . . . . . . 305.2 Crear y firmar un paquete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

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 RIT13ACCV en la zona de búsqueda y valide. Haga clic en el título y después en el botón de descarga.

Page 19: VBA Excel 2013 - m.ediciones-eni.com · Programación en Excel: macros y lenguaje VBA VBA Excel 2013 Capítulo 5 Cuadros de diálogo 1.

2Programar en Access

VBA Access 2013

6. El entorno de desarrollo IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316.1 Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316.2 Ventanas del entorno IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

7. Configuración del editor VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357.1 Configuración de los colores del editor . . . . . . . . . . . . . . . . . . . . 357.2 Configuración de la presentación del código . . . . . . . . . . . . . . . 36

8. Referencia a los objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

9. Creación de un procedimiento en VBA. . . . . . . . . . . . . . . . . . . . . . . . 37

10. Consejos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

Capítulo 2El lenguaje Visual Basic

1. Los módulos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

2. Los procedimientos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442.1 Los procedimientos Sub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452.2 Los procedimientos Function. . . . . . . . . . . . . . . . . . . . . . . . . . . . 472.3 Declaración de los procedimientos . . . . . . . . . . . . . . . . . . . . . . . 472.4 Alcance de los procedimientos. . . . . . . . . . . . . . . . . . . . . . . . . . . 482.5 Argumentos de los procedimientos . . . . . . . . . . . . . . . . . . . . . . . 492.6 Los argumentos con nombre . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502.7 Llamada a un procedimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512.8 Ejemplos de procedimientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512.9 La función MsgBox. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

3. Las variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563.1 Los tipos de variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563.2 Las declaraciones de variables . . . . . . . . . . . . . . . . . . . . . . . . . . . 593.3 El alcance de las variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613.4 Las matrices. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613.5 Las constantes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

Page 20: VBA Excel 2013 - m.ediciones-eni.com · Programación en Excel: macros y lenguaje VBA VBA Excel 2013 Capítulo 5 Cuadros de diálogo 1.

3Contenido

4. Las estructuras de decisión. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674.1 La instrucción IF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674.2 La instrucción Select Case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694.3 La función IIf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

5. Las estructuras en bucle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715.1 La instrucción Do...Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715.2 La instrucción While...Wend . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725.3 La instrucción For...Next . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 735.4 La instrucción For Each...Next. . . . . . . . . . . . . . . . . . . . . . . . . . . 74

6. Los operadores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756.1 Los operadores aritméticos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 766.2 Los operadores de comparación . . . . . . . . . . . . . . . . . . . . . . . . . . 766.3 Los operadores lógicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776.4 El operador de concatenación . . . . . . . . . . . . . . . . . . . . . . . . . . . 786.5 Prioridad de los operadores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

7. Las reglas de escritura del código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 797.1 Los comentarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 797.2 El carácter de continuación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 807.3 La indentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 807.4 Los nombres de procedimientos, variables y constantes . . . . . . 81

8. Las convenciones de llamada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 818.1 Convención de llamada de las variables . . . . . . . . . . . . . . . . . . . 818.2 Convención de llamada de los controles . . . . . . . . . . . . . . . . . . . 828.3 Convención de llamada de los objetos . . . . . . . . . . . . . . . . . . . . 83

Capítulo 3Objetos y colecciones

1. Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

2. El modelo de objetos de Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 872.1 Principales colecciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 882.2 Objetos del Modelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

Page 21: VBA Excel 2013 - m.ediciones-eni.com · Programación en Excel: macros y lenguaje VBA VBA Excel 2013 Capítulo 5 Cuadros de diálogo 1.

4Programar en Access

VBA Access 2013

3. Principios de utilización de los objetos y de las colecciones . . . . . . . 903.1 Las propiedades. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 903.2 Propiedades que representan objetos. . . . . . . . . . . . . . . . . . . . . . 903.3 Los métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 923.4 Los eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 933.5 Las colecciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 943.6 Presentación automática de instrucciones . . . . . . . . . . . . . . . . . 96

4. Instrucciones utilizadas con los objetos . . . . . . . . . . . . . . . . . . . . . . . 994.1 La instrucción With . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 994.2 La instrucción For each...Next . . . . . . . . . . . . . . . . . . . . . . . . . . 1004.3 La instrucción If TypeOf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1014.4 La instrucción Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

5. Las clases de objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1075.1 Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1075.2 Los módulos de clase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1075.3 Ejemplo de módulos de clase . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

6. El examinador de objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1126.1 Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1126.2 Búsqueda en el examinador de objetos . . . . . . . . . . . . . . . . . . . 114

7. Propiedades y métodos de objetos de Access . . . . . . . . . . . . . . . . . . 1157.1 El objeto Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1157.2 El objeto DoCmd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1237.3 El objeto Screen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1307.4 La colección References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1327.5 La colección Printers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134

Page 22: VBA Excel 2013 - m.ediciones-eni.com · Programación en Excel: macros y lenguaje VBA VBA Excel 2013 Capítulo 5 Cuadros de diálogo 1.

5Contenido

Capítulo 4Objetos de acceso a datos

1. Objetos de acceso a datos DAO y ADO . . . . . . . . . . . . . . . . . . . . . . 137

2. El modelo de acceso a datos DAO . . . . . . . . . . . . . . . . . . . . . . . . . . . 1382.1 Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1382.2 Jerarquía de los objetos DAO. . . . . . . . . . . . . . . . . . . . . . . . . . . 1392.3 Descripción de las colecciones . . . . . . . . . . . . . . . . . . . . . . . . . . 1402.4 El objeto DBEngine. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1422.5 Los objetos Workspace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1432.6 Les objetos Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1452.7 Los objetos Recordset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1472.8 Los objetos Tabledef . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1532.9 Los objetos Field e Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155

2.9.1 Field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1552.9.2 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156

2.10 Los objetos QueryDef y Parameter . . . . . . . . . . . . . . . . . . . . . . 1582.10.1QueryDef . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1582.10.2Parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160

2.11 Los objetos Relation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1612.12 Los objetos Container y Document . . . . . . . . . . . . . . . . . . . . . 163

2.12.1Container . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1632.12.2Document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164

2.13 Los objetos Group y User . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1652.13.1User . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1652.13.2Group. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166

2.14 El objeto Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1672.15 Los objetos Property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169

3. El modelo de acceso a datos ADO . . . . . . . . . . . . . . . . . . . . . . . . . . . 1703.1 Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1703.2 ADO y OLE DB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1703.3 Jerarquía de los objetos ADO. . . . . . . . . . . . . . . . . . . . . . . . . . . 1723.4 Modelo de base de programación ADO . . . . . . . . . . . . . . . . . . 173

Page 23: VBA Excel 2013 - m.ediciones-eni.com · Programación en Excel: macros y lenguaje VBA VBA Excel 2013 Capítulo 5 Cuadros de diálogo 1.

6Programar en Access

VBA Access 2013

3.5 Descripción de los objetos ADO . . . . . . . . . . . . . . . . . . . . . . . . 1743.6 Las colecciones ADO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1753.7 Los objetos Connection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1753.8 Los objetos Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1783.9 Los objetos Recordset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1793.10 La colección Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1853.11 Los objetos Field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1853.12 La colección Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1863.13 Los objetos Parameter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1873.14 La colección Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1883.15 Los objetos Property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1883.16 La colección Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1883.17 Los objetos Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189

Capítulo 5El lenguaje SQL

1. Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191

2. Lenguaje SQL y VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193

3. Descripción del lenguaje SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1943.1 La instrucción SELECT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1943.2 La cláusula FROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1953.3 La cláusula WHERE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1973.4 La cláusula GROUP BY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1973.5 La cláusula HAVING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1983.6 La cláusula ORDER BY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1983.7 La instrucción UPDATE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1993.8 La instrucción DELETE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1993.9 La instrucción INSERT INTO . . . . . . . . . . . . . . . . . . . . . . . . . . 2003.10 Otras instrucciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201

Page 24: VBA Excel 2013 - m.ediciones-eni.com · Programación en Excel: macros y lenguaje VBA VBA Excel 2013 Capítulo 5 Cuadros de diálogo 1.

7Contenido

4. Ejemplos de utilización de consultas SQL. . . . . . . . . . . . . . . . . . . . . 2024.1 Actualización de registros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2034.2 Carga de una lista desplegable . . . . . . . . . . . . . . . . . . . . . . . . . . 204

Capítulo 6Gestión de los eventos

1. Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2071.1 Definición . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2071.2 Asociación de código VBA a un evento . . . . . . . . . . . . . . . . . . . 208

2. Categorías de eventos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2092.1 Eventos de tipo Ventana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2092.2 Eventos de tipo Enfoque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2102.3 Eventos de tipo Datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2112.4 Eventos de tipo Ratón . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2132.5 Eventos de tipo Teclado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2132.6 Eventos de tipo Impresión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2152.7 Eventos de tipo Filtro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2162.8 Eventos de tipo Error y Cronómetro . . . . . . . . . . . . . . . . . . . . . 216

3. Cancelación de un evento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216

4. Secuencias de tipos de eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217

5. Los eventos de actualización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219

Capítulo 7Depuración y gestión de errores

1. Los distintos tipos de error. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2211.1 Los errores de sintaxis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2211.2 Los errores de compilación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2221.3 Los errores de ejecución . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2231.4 Los errores de lógica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224

Page 25: VBA Excel 2013 - m.ediciones-eni.com · Programación en Excel: macros y lenguaje VBA VBA Excel 2013 Capítulo 5 Cuadros de diálogo 1.

8Programar en Access

VBA Access 2013

2. Depuración con VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2252.1 Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2252.2 La barra de herramientas Depuración . . . . . . . . . . . . . . . . . . . . 2252.3 El objeto Debug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227

3. Gestión de errores con VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2273.1 Principios. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2273.2 El procedimiento de evento Error . . . . . . . . . . . . . . . . . . . . . . . 2283.3 La instrucción On Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2283.4 El objeto Err . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230

Capítulo 8Personalizar formularios e informes

1. Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233

2. Personalización de los formularios . . . . . . . . . . . . . . . . . . . . . . . . . . 2342.1 Sintaxis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2342.2 Propiedades disponibles en vista Diseño . . . . . . . . . . . . . . . . . . 235

2.2.1 Propiedades de la ficha Formato . . . . . . . . . . . . . . . . . . . 2362.2.2 Propiedades de la ficha Datos . . . . . . . . . . . . . . . . . . . . . 2392.2.3 Propiedades de la ficha Eventos . . . . . . . . . . . . . . . . . . . . 2412.2.4 Propiedades de la ficha Otras . . . . . . . . . . . . . . . . . . . . . . 245

2.3 Propiedades no disponibles en modo Diseño . . . . . . . . . . . . . . 2462.3.1 Propiedades relativas al modo de ver el formulario . . . . 2462.3.2 Propiedades relativas a los registros

y a su actualización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2462.3.3 Propiedades relativas a la presentación del formulario . 2472.3.4 Propiedades que devuelven un objeto . . . . . . . . . . . . . . . 2492.3.5 Propiedades relativas a la impresión del formulario . . . . 249

2.4 Métodos del objeto Form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250

Page 26: VBA Excel 2013 - m.ediciones-eni.com · Programación en Excel: macros y lenguaje VBA VBA Excel 2013 Capítulo 5 Cuadros de diálogo 1.

9Contenido

3. Personalización de los informes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2513.1 Sintaxis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2513.2 Propiedades disponibles en vista Diseño . . . . . . . . . . . . . . . . . . 252

3.2.1 Propiedades de la ficha Formato . . . . . . . . . . . . . . . . . . . 2523.2.2 Propiedades de la ficha Datos . . . . . . . . . . . . . . . . . . . . . 2553.2.3 Propiedades de la ficha Eventos . . . . . . . . . . . . . . . . . . . . 2563.2.4 Propiedades de la ficha Otras . . . . . . . . . . . . . . . . . . . . . . 258

3.3 Propiedades no disponibles en modo Diseño . . . . . . . . . . . . . . 2593.3.1 Propiedades relativas al modo de ver el informe. . . . . . . 2593.3.2 Propiedades relativas a los registros

y a su actualización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2593.3.3 Propiedades relativas a la presentación del informe . . . . 2603.3.4 Propiedades que devuelven un objeto . . . . . . . . . . . . . . . 2613.3.5 Propiedades relativas a la impresión del informe . . . . . . 2623.3.6 Otras propiedades. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263

3.4 Métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263

4. Los objetos Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2644.1 Sintaxis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2644.2 Propiedades comunes de la mayoría de los controles . . . . . . . . 265

4.2.1 Propiedades que devuelvan objetos . . . . . . . . . . . . . . . . . 2654.2.2 Otras propiedades. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265

4.3 Métodos comunes a la mayoría de los controles . . . . . . . . . . . 2654.4 El método Move . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266

5. Los controles de Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2665.1 Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2665.2 Lista de los controles Access . . . . . . . . . . . . . . . . . . . . . . . . . . . 267

Page 27: VBA Excel 2013 - m.ediciones-eni.com · Programación en Excel: macros y lenguaje VBA VBA Excel 2013 Capítulo 5 Cuadros de diálogo 1.

10Programar en Access

VBA Access 2013

Capítulo 9Mejoras de la interfaz de usuario

1. Las opciones de inicio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269

2. Personalización de la cinta de opciones. . . . . . . . . . . . . . . . . . . . . . . 2712.1 Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2712.2 Configuración de Access para la personalización

de la cinta de opciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2722.2.1 Mostrar las tablas del sistema

en el panel de navegación. . . . . . . . . . . . . . . . . . . . . . . . . 2722.2.2 Mostrar mensajes de error contenidos

en el código XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2722.3 Creación de una tabla del sistema USysRibbons . . . . . . . . . . . 2732.4 Adición de código XML de personalización

a la tabla USysRibbons. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2742.5 Asociación de la cinta de opciones a la aplicación activa . . . . . 2752.6 Asociación de la cinta de opciones a un formulario

o a un informe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276

3. Presentación del lenguaje XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2763.1 El lenguaje XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2763.2 Elementos XML utilizados para personalizar

la cinta de opciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2773.2.1 Principales marcas activas XML utilizadas

en el código XML de una cinta de opciones . . . . . . . . . . 2773.2.2 Propiedades asociadas a los objetos

de una cinta de opciones . . . . . . . . . . . . . . . . . . . . . . . . . 278

4. Ejemplo de cinta de opciones personalizada . . . . . . . . . . . . . . . . . . . 2794.1 Código XML de la cinta de opciones personalizada . . . . . . . . . 2794.2 Código VBA llamado por los comandos

de la cinta de opciones personalizada . . . . . . . . . . . . . . . . . . . . 283

5. Imágenes de la galería de iconos de Microsoft Office . . . . . . . . . . . 284

Page 28: VBA Excel 2013 - m.ediciones-eni.com · Programación en Excel: macros y lenguaje VBA VBA Excel 2013 Capítulo 5 Cuadros de diálogo 1.

11Contenido

Capítulo 10Comunicación con aplicaciones 2013

1. La tecnología Automatización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2871.1 Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2871.2 Utilización de la tecnología Automatización . . . . . . . . . . . . . . 289

2. Controlar Word desde Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2902.1 El modelo Objeto Word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2902.2 Principales colecciones del modelo de objetos Word . . . . . . . . 2912.3 Principales objetos del modelo objeto de Word . . . . . . . . . . . . 2922.4 La colección Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2932.5 Los objetos Document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294

3. Controlar Excel desde Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2973.1 El modelo Objeto Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2973.2 Principales colecciones de la aplicación Excel . . . . . . . . . . . . . . 2983.3 La colección Workbooks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2993.4 Los objetos Workbook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299

3.4.1 Principales métodos del objeto Workbook . . . . . . . . . . . 2993.4.2 Las principales colecciones asociadas

al objeto Workbook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3003.5 Escritura de datos en celdas Excel . . . . . . . . . . . . . . . . . . . . . . . 300

4. Controlar Outlook desde Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3024.1 El modelo Objeto Outlook. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3024.2 Ejemplo: mostrar los contactos de Outlook . . . . . . . . . . . . . . . 303

Capítulo 11Programación en Internet

1. Importación y exportación de datos en formato XML . . . . . . . . . . 3051.1 El método ExportXML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3061.2 El método ImportXML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3081.3 Ejemplo de importación/exportación XML . . . . . . . . . . . . . . . 308

2. Ejemplo de creación de un archivo HTML . . . . . . . . . . . . . . . . . . . . 312

Page 29: VBA Excel 2013 - m.ediciones-eni.com · Programación en Excel: macros y lenguaje VBA VBA Excel 2013 Capítulo 5 Cuadros de diálogo 1.

12Programar en Access

VBA Access 2013

Capítulo 12Programación en Windows

1. Presentación de las API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315

2. Llamada a una función de la API Windows . . . . . . . . . . . . . . . . . . . 3162.1 Sintaxis de la instrucción Declare . . . . . . . . . . . . . . . . . . . . . . . 3162.2 Paso de argumentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317

3. Lista de funciones de la API Windows . . . . . . . . . . . . . . . . . . . . . . . 319

4. Ejemplos de utilización de funciones de la API Windows . . . . . . . . 3204.1 Recuperación del directorio de Windows . . . . . . . . . . . . . . . . . 3204.2 Inicio de la aplicación Excel si no está activa . . . . . . . . . . . . . . 3214.3 Recuperación de un valor en un archivo .ini. . . . . . . . . . . . . . . 322

5. El objeto FileSystemObject . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3245.1 Métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3245.2 Propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3255.3 Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325

Capítulo 13Código de una mini-aplicación

1. Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3271.1 Enunciado del problema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3271.2 Base de datos Cursos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3281.3 Modelo relacional de la base . . . . . . . . . . . . . . . . . . . . . . . . . . . 328

2. Formulario "Cursos" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3292.1 Lista de controles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3302.2 Código VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3312.3 Subformulario "SF Participantes". . . . . . . . . . . . . . . . . . . . . . . . 3352.4 Código VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336

Page 30: VBA Excel 2013 - m.ediciones-eni.com · Programación en Excel: macros y lenguaje VBA VBA Excel 2013 Capítulo 5 Cuadros de diálogo 1.

13Contenido

3. Formulario "Buscar" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3373.1 Lista de controles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3383.2 Código VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3383.3 Subformulario "SF Cursos". . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3413.4 Informe "Cursos". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342

Anexos1. Funciones e instrucciones VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345

1.1 Manipulación de cadenas de caracteres. . . . . . . . . . . . . . . . . . . 3451.2 Control del funcionamiento del programa . . . . . . . . . . . . . . . . 3461.3 Conversión de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3481.4 Fecha y hora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3491.5 Declaración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3501.6 Dominio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3511.7 Intercambio dinámico de datos . . . . . . . . . . . . . . . . . . . . . . . . . 3511.8 Entrada y salida de archivos. . . . . . . . . . . . . . . . . . . . . . . . . . . . 3521.9 Financieras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3541.10 Gestión de errores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3551.11 Gráficos en los informes impresos . . . . . . . . . . . . . . . . . . . . . . . 3551.12 Vinculación e incrustación de objetos. . . . . . . . . . . . . . . . . . . . 3561.13 Manipulación de objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3561.14 Matemáticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3561.15 SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3571.16 Matrices. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3581.17 Control de variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3581.18 Funciones e instrucciones diversas . . . . . . . . . . . . . . . . . . . . . . 3591.19 Códigos de error interceptables . . . . . . . . . . . . . . . . . . . . . . . . . 360

Page 31: VBA Excel 2013 - m.ediciones-eni.com · Programación en Excel: macros y lenguaje VBA VBA Excel 2013 Capítulo 5 Cuadros de diálogo 1.

14Programar en Access

VBA Access 2013

2. Constantes VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3662.1 Constantes de color . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3662.2 Constantes de fecha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3662.3 Constantes de teclas teclado alfanumérico. . . . . . . . . . . . . . . . 3672.4 Constantes de teclas de función . . . . . . . . . . . . . . . . . . . . . . . . 3672.5 Constantes de teclas diversas. . . . . . . . . . . . . . . . . . . . . . . . . . . 368

3. Métodos abreviados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369

Índice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371