Guia Programacion Macros en Coreldraw
Guia Programacion Macros en Coreldraw
Guia Programacion Macros en Coreldraw
Guía traducida al español por el Corel-Experto: Felipe de Jesús Guzmán Llamas, Guadalajara, México.
Publicada con autorización en el WWW.CORELCLUB.ORG - Club Internacional de Usuarios de Corel.
Contenido
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Acerca de esta documentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Acerca de recursos adicionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Acerca de Corel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Entendiendo la automatización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
¿Qué es la automatización? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
¿Cuáles ambientes de automatización son soportados? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
¿Qué es VBA? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
¿Qué es VSTA? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
¿Cuáles son los elementos principales de automatización? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
¿Qué es un modelo de objeto? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
¿Qué es una clase? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
¿Qué es una colección? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
¿Qué es una propiedad? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
¿Qué es un método? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
¿Qué es un evento? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
¿Qué es una enumeración? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
¿Qué es una constante?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
¿Cómo está estructurada la automatización de la codificación? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
¿Cómo se declaran las variables? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
¿Cómo se construyen las funciones y subrutinas? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
¿Cómo se finalizan las líneas? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
¿Cómo se incluyen comentarios?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
¿Cómo se utilizan los indicadores de memoria y cómo está asignada la memoria? . . . . . . . . . . . . . . . . . . . . . 17
¿Cómo está definido el alcance? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
¿Cómo son utilizadas las comparaciones y las asignaciones Booleanas? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
¿Cómo son utilizados los operadores lógicos y “bitwise”?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
¿Cómo se proporcionan los cuadros de mensaje y los cuadros de entrada (input box)? . . . . . . . . . . . . . . . . . 19
¿Cómo son referenciados los objetos?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
¿Cómo son referenciadas las colecciones? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
¿Cómo se utilizan los atajos de objetos? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
¿Cómo se proporcionan los manejadores de evento? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Creación de macros. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Creación de proyectos de macro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Crear un proyecto de macro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Añadir un cuadro de diálogo a un proyecto de macro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Añadir un módulo de código a un proyecto de macro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Añadir un módulo de clase a un proyecto de macro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Escritura de macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Añadir una macro a un proyecto de macro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Editar una macro VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Eliminar una macro VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Grabación de macros. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Grabar y guardar una macro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Grabar una macro temporal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Ejecución de macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Ejecutar una macro grabada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Ejecutar una macro temporal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Depuración de macros. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Contenido ii
Activación de documentos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Configuración de las propiedades del documento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Presentación de documentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Modificación de documentos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Creación de grupos de comando para documentos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Guardado de documentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Exportación de archivos desde documentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Publicación de documentos como PDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Impresión de documentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Cierre de documentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Trabajo con páginas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Creación de páginas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Activación de páginas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Reordenamiento de páginas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Dimensionamiento de páginas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Modificación de páginas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Eliminación de páginas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Trabajo con capas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Creación de capas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Activación de capas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Bloqueo y ocultamiento de capas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Reordenamiento de capas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Renombramiento de capas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Importación de archivos dentro de capas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Eliminación de capas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
Trabajo con formas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
Creación de formas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Determinación del tipo de forma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
Selección de formas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
Duplicación de formas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Transformación de formas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Coloración de formas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Aplicación de efectos a formas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Búsqueda de formas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Eliminación de formas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Trabajo con filtros de importación y filtros de exportación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
Trabajo con filtros de importación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
Trabajo con filtros de exportación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
Glosario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
Índice. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Contenido iii
Introducción
Bienvenido a la Guía de Programación de Macros.
Este recurso puede ayudarlo a explorar las características y funciones relacionadas con las macros de CorelDRAW® y
TM
Corel® PHOTO-PAINT . La comprensión de estas características y funciones puede ayudarlo a automatizar
tareas o desarrollar soluciones comerciales que se integren con el producto.
También se incluye un glosario, el cual define muchos de los términos clave utilizados en esta documentación.
La mayoría de los ejemplos de código proporcionados en esta documentación están escritos en VBA.
La mayoría de los ejemplos de código proporcionados en esta documentación están escritos en VBA.
Las convenciones de documentación llevadas en esta guía son explicadas en la siguiente tabla:
<texto en cursiva y entre corchetes angulares> Un contenedor para información específica del usuario, tal como
una ruta o nombre de archivo.
Ayuda de Macros para CorelDRAW Proporciona información extensa acerca de los modelos de
objeto de CorelDRAW, así como características y funciones de
la aplicación relacionadas con macros.
draw_om.chm
Ayuda de Macros para Corel PHOTO-PAINT Proporciona información extensa acerca de los modelos de
objeto de Corel PHOTO-PAINT, así como características y
funciones de la aplicación relacionadas con macros.
pp_om.chm
Diagrama de modelos de objeto para CorelDRAW Proporciona una representación jerárquica de los modelos de
objeto en CorelDRAW.
CorelDRAW Object Model Diagram.pdf
Introducción 2
Recurso Descripción y nombre de archivo
Diagrama de modelos de objeto para Proporciona una representación jerárquica de los modelos de
Corel PHOTO-PAINT objeto en Corel PHOTO-PAINT.
Corel PHOTO-PAINT Object Model Diagram.pdf
Para una introducción más básica a las macros, por favor vea el tema “Operaciones con macros” en el archivo
principal de Ayuda de CorelDRAW o Corel PHOTO-PAINT. Puede acceder al archivo principal de ayuda
desde la aplicación haciendo click en Ayuda » Temas de Ayuda...
Puede proponer cualquier comentario o sugerencia acerca de la documentación de macros utilizando la información
de contacto localizada en www.corel.com/contact.
Sitio Web de CorelDRAW Graphics X5 Proporciona las últimas noticias, consejos y trucos, así como
información acerca de actualizaciones.
www.corel.com/coreldraw
Sitio Web de Servicios de Soporte de Corel Proporciona información dinámica y precisa acerca de las
características del producto, especificaciones, precios,
disponibilidad, servicios y soporte técnico.
www.corel.com/support
www.corel.com/knowledgebase
Introducción 3
Recurso Descripción y nombre de archivo
www.coreldraw.com
Puede proponer cualquier comentario o sugerencia acerca de la documentación de macros utilizando la información
de contacto localizada en www.corel.com/contact.
Acerca de Corel
Corel es una de las más sobresalientes compañías de software del mundo, con más de 100 millones de usuarios activos
en más de 75 países. Desarrollamos software que ayuda a la gente a expresar sus ideas y compartir sus historias de una
manera más excitante, creativa y convincente. A lo largo de los años, nos hemos forjado una reputación al entregar
productos verdaderamente innovadores y fáciles de aprender y utilizar, ayudando con esto a que la gente alcance
nuevos niveles de productividad. La industria nos ha respondido con cientos de premios por la innovación, diseño y
valor del software.
Nuestro catálogo de premios ganados por productos incluye algunas de las marcas más ampliamente reconocidas y
populares a nivel mundial, en las que se incluyen CorelDRAW® Graphics Suite, Corel® PainterTM, Corel
DESIGNER® Technical Suite, Corel® PaintShop PhotoTM Pro, Corel® VideoStudio®, Corel® WinDVD®,
Corel® WordPerfect® Office, WinZip®, así como el recientemente lanzado Corel® Digital StudioTM 2010.
Nuestro principal centro de operaciones está en Ottawa, Canadá, además de importantes oficinas en los Estados
Unidos, Reino Unido, Alemania, China, Taiwán y Japón.
Introducción 4
Entendiendo la automatización
Antes de comenzar a trabajar con macros, necesitará entender el concepto de automatización. Esta sección
proporciona información básica acerca de la automatización y acerca de los formatos de programación de macros que
son soportados por CorelDRAW y Corel PHOTO-PAINT.
¿Qué es la automatización?
Muchas acciones que usted ejecuta en CorelDRAW y Corel PHOTO-PAINT pueden estar combinadas con otras
acciones ligadas dentro de una simple solución automatizada. La automatización de tareas repetitivas ahorra tiempo,
reduce esfuerzo y le permite ejecutar operaciones que sería bastante complejo el ejecutarlas manualmente.
La automatización puede ser utilizada tanto por programadores como por no-programadores.
Esta documentación no enseña habilidades de programación a los no-programadores; más bien le ayuda a
programadores experimentados a desarrollar soluciones útiles dentro de CorelDRAW y Corel PHOTO-
PAINT. Si usted no es un programador, sería buena idea referirse a otros recursos relacionados con la
programación antes de continuar leyendo esta documentación.
La mayoría de las macros son creadas para automatizar una serie de tareas dentro de la aplicación. El significado más
simple del término “macro” es la grabación de un grupo de acciones relacionadas que pueden ser luego ejecutadas
automáticamente en secuencia en cualquier momento que se necesite. Las macros constan de instrucciones que son
escritas en un lenguaje de programación. Algunos lenguajes de programación proporcionan acceso a acciones
adicionales más avanzadas que no pueden ser grabadas.
Para propósitos de esta documentación, una macro se refiere a una solución codificada que ejecuta tareas en
la aplicación mediante funciones y subrutinas automatizadas (ver “¿Cómo se construyen las funciones y
subrutinas?” en la página 16).
CorelDRAW Graphics Suite X5 incluye muestras de macros VBA, las cuales proporcionan funcionalidad adicional,
demuestran la automatización en la suite y le proporcionan el ejemplo de código.
Las siguientes muestras de macros VBA están incluidas en CorelDRAW:
Ÿ Asistente de calendario (CalendarWizard.gms) — genera calendarios personalizados. Usted puede elegir el
rango de fecha, diseño, fuente, color, lenguaje y muchas otras opciones. También puede añadir días festivos y fases
lunares.
Ÿ Convertidor de archivos (FileConverter.gms) — convierte un vector o mapa de bits a un formato específico de
vector o mapa de bits. Usted puede elegir exportar parámetros al utilizar los cuadros de diálogo asociados con
filtros particulares. También puede guardar cada página como un archivo separado y ajustar varias propiedades de
página, tales como tamaño, orientación y color de fondo. Los siguientes formatos de archivo son soportados: AI,
BMP, CDR, CGM, CMX, CPT, DSF, EPS, GIF, JPEG, PCT, PNG, PPF, SVG, SWF, TIF, WMF y WPG.
Las siguientes muestras de macros VBA están incluidas en Corel PHOTO-PAINT:
Ÿ Creador de diapositivas HTML (Slideshow.gms) — genera una diapositiva HTML de las imágenes que usted
especifique. Abre archivos que pueden ser añadidos, ordenados y publicados como una serie de archivos HTML,
cada uno de los cuales muestra una imagen y proporciona botones de navegación. Usted también puede crear un
título, alternar texto y nombrar cada diapositiva. Además puede elegir una ruta y un nombre para la descripción
de la carpeta, seleccionar la imagen de la carpeta y especificar notas, un título, un URL y más.
Aunque CorelDRAW ya no incluye el editor Corel SCRIPT, todavía incluye el motor en tiempo de ejecución
Corel SCRIPT. Por consiguiente, usted fácilmente puede migrar scripts que fueron escritos en versiones
Entendiendo la automatización 6
anteriores de CorelDRAW a otras versiones más recientes del software. Para más información sobre el uso de
Corel SCRIPT con CorelDRAW vea “Trabajando con scripts” en el archivo principal de Ayuda de
CorelDRAW (draw.chm).
En Corel PHOTO-PAINT usted puede automatizar tareas utilizando VBA o VSTA para crear una macro, o
utilizando Corel SCRIPT para crear un script. Una macro es la mejor elección si usted quiere escribir el
código que sea requerido para llevar a cabo la tarea (utilizando VBA o VSTA), mientras un script es la mejor
elección si lo que usted quiere es grabar los pasos que se requieran para llevar a cabo la tarea (utilizando
Corel SCRIPT). Para más información sobre el uso de Corel SCRIPT en Corel PHOTO-PAINT vea
“Trabajando con scripts” en el archivo principal de Ayuda de Corel PHOTO-PAINT (corelpp.chm).
La combinación de VBA y VSTA con CorelDRAW Graphics Suite proporciona una plataforma para el desarrollo de
poderosas soluciones gráficas corporativas, tales como generadores automatizados de boletos, calendarios
personalizados y procesadores de archivos por lotes. Estas aplicaciones también pueden ser utilizadas para optimizar
el flujo de trabajo. Por ejemplo, cuando se crea la hoja membretada de una compañía, usted puede añadir una página-
esquema al vuelo. También puede personalizar alguna funcionalidad integrada del software, tal como la creación,
alineación o transformación de objetos.
VBA y VSTA proporcionan su propio ambiente de desarrollo totalmente integrado (IDE), con listas de mensajes
automáticos (pop-ups), sintaxis rasaltada, depuración línea por línea y ventanas visuales de diseñador. Estas
características son particularmente útiles para desarrolladores inexpertos.
Para más información sobre VBA y VSTA, vea las siguientes secciones:
Ÿ ¿Qué es VBA?
Ÿ ¿Qué es VSTA?
¿Qué es VBA?
Microsoft Visual Basic for Applications (VBA) es un ambiente de programación incorporado que se puede utilizar
para automatizar funciones repetitivas y crear soluciones inteligentes en CorelDRAW y Corel PHOTO-PAINT.
VBA es un subconjunto del ambiente de programación orientado a objetos de Microsoft Visual Basic (VB).
Comúnmente, VBA está integrado dentro de otra aplicación para personalizar la funcionalidad dentro de esa
aplicación.
VBA es tanto un lenguaje como un editor. El lenguaje VBA no puede ser utilizado sin su editor, y el editor VBA es la
única utilidad en la cual el código VBA puede ser editado o los programas VBA pueden ser ejecutados.
El lenguaje VBA es un lenguaje de programación orientado a eventos. En otras palabras, es utilizado para escribir
código que produzca una respuesta a determinada acción, tal como el hacer click sobre un botón o el elegir una opción
de un cuadro de lista. Cuando la acción ocurre, el evento apropiado es llamado, y el código para ese evento es
ejecutado. Los eventos pueden ser simples o complejos. Por ejemplo, se puede codificar una simple línea que muestre
una caja de mensaje o escribir un procedimiento entero que interactúe con una base de datos.
El editor VBA, llamado el “Editor de Macros” (formalmente el “Editor de Visual Basic”) en CorelDRAW y Corel
PHOTO-PAINT, es un ambiente de desarrollo integrado (IDE, por sus siglas en inglés) que le permite manipular los
objetos que están expuestos por el modelo de objeto de la aplicación. Para ayudarlo a codificar sus macros, el Editor de
Macros le proporciona Ayuda Sensible al Contexto para todos los elementos de modelo de objeto que estén
disponibles .
Entendiendo la automatización 7
VBA es un controlador de automatización en proceso. En otras palabras, VBA puede ser utilizado para controlar las
características de Corel DRAW y Corel PHOTO-PAINT que puedan ser automatizadas, y VBA se ejecuta
eficientemente bordeando los mecanismos de sincronización del interproceso. Sin embargo, la automatización en
proceso a la que VBA puede acceder también puede ser accesada por lo siguiente:
Ÿ Controladores de automatización externos fuera de proceso (clientes OLE).
Ÿ Aplicaciones que están desarrolladas en lenguajes de programación (tales como VB, Visual C++, Windows®
Script Host y C++) que pueden ser utilizados para desarrollar clientes OLE.
Ÿ El motor VBA de otras aplicaciones.
VBA proporciona un conjunto de herramientas para personalizar la interfaz gráfica del usuario de CorelDRAW y
Corel PHOTO-PAINT. Estas herramientas le permiten procesar y presentar datos eficiente y efectivamente. Las
ventajas del uso de VBA con CorelDRAW y Corel PHOTO-PAINT incluyen las siguientes:
Ÿ Familiaridad del lenguaje VB.
Ÿ Desarrollo de aplicaciones rápidas (RAD) IDE.
Ÿ Ejecución rápida del tiempo de ejecución en las soluciones integradas resultantes.
Ÿ Paquete de formas extendibles que soportan controles ActiveX® para la creación de interfaces de usuario.
Ÿ Acceso total a la Interfaz de Programación de la Aplicación (API) de Windows® y al archivo de sistema
subyacente.
Ÿ Conectividad con datos empresariales
Ÿ Integración con otro software que esté basado en modelos de componentes de objeto (COMs)
VBA le permite personalizar una aplicación a la medida de sus necesidades, o incluso integrarla con otra aplicación
habilitada para VBA al hacer referencia a los componentes del modelo de objeto de la segunda aplicación. Aunque
VBA fue desarrollado por Microsoft y está incorporado en casi todas sus aplicaciones de escritorio (incluyendo
Microsoft Office), Microsoft otorga licencias de esta tecnología a otras compañías, incluyendo Corel Corporation (en
CorelDRAW Graphics Suite, Corel DESIGNER® Technical Suite y Corel® WordPerfect® Office), Autodesk, Inc.
(en AutoCAD®), y el Consorcio en Tecnología IntelliCAD (en IntelliCAD®). Por esta razón, CorelDRAW Graphics
Suite es compatible con una amplia gama de aplicaciones que soportan VBA. Sin embargo, el motor de CorelDRAW
Graphics Suite también puede controlar aplicaciones que no soporten VBA. Consecuentemente, usted puede
construir soluciones en CorelDRAW y Corel PHOTO-PAINT que accedan a bases de datos, procesadores de texto,
editores de contenido especializado, documentos XML y más.
Para una lista completa de las aplicaciones que soportan VBA, vea el sitio Web de Microsoft.
Entendiendo la automatización 8
objetos da como resultado pequeños paquetes de procedimientos de código dentro de la aplicación. Estos
procedimientos de código y proyectos resultantes son llamados adiciones (“add-ins”).
VBScript (algunas veces referido como Microsoft Visual Basic, Scripting Edition) es también un subconjunto del
lenguaje de programación VB. VBScript es un lenguaje de programación basado en documentos Web HTML.
VBA es similar a Java y JavaScript® en que es un lenguaje de programación procesal de alto nivel, con total
eliminación de residuos e indicador de soporte de memoria muy baja. (Para más información, vea ¿Cómo se utilizan
los indicadores de memoria, y cómo está alojada la memoria?” en la página 17). Por otro lado, el código que es
desarrollado en VBA, así como el código desarrollado en Java y JavaScript, soportan compilación a petición y pueden
ser ejecutados sin ser compilados.
VBA es también similar a JavaScript en que no puede ser ejecutado como una aplicación independiente. JavaScript
está incorporado dentro de páginas web como un mecanismo para manipular el modelo de objeto del documento
(DOM) del explorador web. De igual forma, los programas VBA son ejecutados dentro de un ambiente anfitrión (en
este caso, CorelDRAW o Corel PHOTO-PAINT) para manipular el modelo de objeto del anfitrión.
La mayoría de las aplicaciones VBA pueden ser compiladas a código-p para hacerlas correr más rápidamente, aunque
la diferencia es apenas notable debido a la actual sofisticación del hardware de computadora. Una compilación
similar es posible en Java, pero no en JavaScript.
Finalmente, mientras que VBA utiliza sólo un signo de igual (=) tanto para comparación como para asignación, Java
y JavaScript utilizan un signo de igual (=) para asignación y dos signos de igual (==) para comparaciones
Booleanas. (Para más información, vea “¿Cómo se utilizan las comparaciones Booleanas y de asignación?” en la
página 18).
Windows Script Host (WHS) es un controlador de automatización “fuera de proceso” que le permite hacer
programación ocasional y automatización de las tareas de Windows y puede ser utilizado para controlar CorelDRAW
Graphics Suite. Aunque WSH es una útil extensión del sistema operativo Windows, los scripts de WSH tienden a ser
lentos porque deben correr fuera de proceso, y no pueden ser compilados (y deben ser interpretados así como son
ejecutados).
WSH es un anfitrión para varios lenguajes de programación, cada uno de los cuales tiene su propia sintaxis. Sin
embargo, el lenguaje estándar que utiliza WSH es un lenguaje de macro que se asemeja a VB, de modo que para
scripts estándar, la sintaxis es la misma que la de VBA.
Entendiendo la automatización 9
¿Qué es VSTA?
El sucesor de VBA, Microsoft Visual Studio Tools for Applications (VSTA) está basado en Microsoft Visual Studio
2008. En CorelDRAW Graphics Suite X5, la característica VSTA soporta la plataforma .NET y permite el desarrollo
en dos lenguajes de programación: Visual Basic .NET y Visual C#.
La mayor parte de los ejemplos de código proporcionados en esta documentación están escritos en VBA.
El editor VSTA en CorelDRAW y Corel PHOTO-PAINT es un ambiente de desarrollo integrado (IDE, por sus siglas
en inglés) que le permite crear soluciones VSTA para el software.
CorelDRAW Graphics Suite X5 incluye la versión 2.0 de VSTA.
Tanto VSTA como VBA le permiten crear potentes soluciones de macro. Con VSTA, se utiliza el Editor VSTA como
un IDE, y se utiliza Visual Basic .NET o Visual C# como un lenguaje de programación. Con VBA, se utiliza el Editor
de Macros como un IDE, y se utiliza VBA como un lenguaje de programación.
Si se quiere ejecutar alguna de las siguientes tareas, se puede utilizar ya sea VSTA o VBA:
Ÿ Personalizar o extender las características de CorelDRAW Graphics Suite X5.
Ÿ Interactuar con otras aplicaciones que utilicen Visual Basic 6 — o con otros componentes compatibles que son
externos a CorelDRAW Graphics Suite X5.
Ÿ Interactuar con servicios basados en Web.
Ÿ Personalizar el IDE con add-ins.
Ÿ Crear proyectos de macro — con soporte multi-enlazado, si se desea.
Ÿ Acceder al código de los proyectos de macro.
Ÿ Generar código de macro dinámicamente.
Ÿ Almacenar código de macro en formato pre-compilado.
Ÿ Ocultar código de macro de otros autores de macros.
Ÿ Depurar proyectos de macro.
Ÿ Crear interfaces de usuario personalizadas para proyectos de macro.
Sin embargo, si se quiere ejecutar alguna de las tareas siguientes, se debe utilizar VSTA:
Ÿ Acceder nativamente a la plataforma .NET — para dar soporte utilizando Managed Add-in Framework (MAF),
referenciando directamente ensamblajes .NET, ejecutando código personalizado de Common Language Runtime
(CLR), implementando políticas de seguridad .NET o creando interfaces de usuario al utilizar .NET WinForms.
Ÿ Personalizar totalmente el IDE.
Ÿ Crear proyectos de macro que estén certificados para correr en Windows Vista.
Ÿ Crear proyectos de macro que soporten procesadores de 64 bits.
Ÿ Crear proyectos de macro que soporten adecuaciones lado servidor.
Ÿ Crear proyectos de macro que soporten todo tipo de datos, incluyendo Int64 y BigDecimal.
Ÿ Crear proyectos de macro y ensamblajes que persistan sin el uso de almacén estructurado.
Ÿ Abrir y modificar proyectos de macro en Visual Studio.
Ÿ Compilar proyectos de macro para ensamblaje DLL.
Ÿ Ejecutar proyectos de macro fuera de proceso.
Entendiendo la automatización 10
Ÿ Ejecutar proyectos de macro sin ocasionar que la aplicación anfitrión detenga la ejecución por errores o puntos de
interrupción.
Ÿ Aislar proyectos de macro entre uno y otro; ejecutar independientemente proyectos de macro, y detenerlos
durante tiempo de ejecución sin afectar otros proyectos activos.
Ÿ Publicar macros dentro del código dirigido.
Ÿ Evitar que corran servidores de interfaces de usuario personalizadas para proyectos de macro.
Un modelo de objeto representa la jerarquía de elementos (u “objetos”) que forman una aplicación y define las
interrelaciones de dichos objetos dentro de esa jerarquía. En un modelo de objeto, cada objeto es un hijo de otro
objeto, el cual es, a su vez, hijo de otro objeto y así sucesivamente. Más aún, cada objeto en un modelo de objeto está
definido por una propiedad, un método o un evento, o una combinación de estos elementos.
Además de proporcionar un alto nivel de estructura, un modelo de objeto también le permite utilizar tipos de objetos
(o “clases”) de varias maneras. Por ejemplo, un objeto Shape de tipo “grupo” es utilizado para contener otros objetos
Shape, cada uno de los cuales es de tipo “grupo” o de algún otro tipo, tal como “rectángulo”, “curva” o “texto”.
Este alto nivel de organización hace que el modelo de objeto sea fácil de usar, a pesar de lo potente que es.
Entendiendo la automatización 11
Como en muchos lenguajes orientados a objetos, el ambiente de automatización de CorelDRAW y Corel PHOTO-
PAINT requiere el uso de un punto u “operador punto” ( . ) para indicar que el objeto sobre la derecha es un miembro
(o hijo) del objeto sobre la izquierda.
Application.Documents(1).Pages(1).Layers(1).Shapes(1).Name = “ABC”
Un objeto requiere su referencia jerárquica completa (es decir, que esté “totalmente titulado”) a menos que esté
disponible un atajo para él (o a menos que éste tenga un significado implícito o sobreentendido). Un atajo a un objeto
es meramente un reemplazo sintáctico de la versión extendida de un objeto. Por ejemplo, el atajo del Objeto
ActiveLayer reemplaza a la versión extendida Application.ActiveDocument.ActivePage.ActiveLayer,
mientras que el atajo del objeto ActiveSelection reemplaza a la versión extendida
Application.ActiveDocument.Selection
Para más información de atajos de objeto, vea “¿Cómo se utilizan los atajos de objeto?” en la página 22.
Entendiendo la automatización 12
¿Qué es una propiedad?
Una propiedad es como un adjetivo en el que se representa un atributo o característica de un objeto. Las propiedades
pueden ser devueltas o estar fijas, o pueden ser de sólo lectura.
La mayoría de las clases tienen propiedades. A manera de ilustración, las propiedades de la clase “carro” son que éste
es pequeño, que tiene un motor y cuatro ruedas. Cada instancia de la clase “carro” (es decir, cada objeto en esa clase)
tiene también propiedades tales como color, velocidad y número de asientos. Las propiedades de sólo lectura están
ajustadas por el diseño de la clase; por ejemplo, el número de ruedas o asientos no varía (normalmente) de carro a
carro. Sin embargo, otras propiedades pueden ser cambiadas luego de que el objeto ha sido creado; por ejemplo, la
velocidad del carro puede subir y bajar, y, con un poco de ayuda, su color puede ser cambiado.
En el contexto de CorelDRAW y Corel PHOTO-PAINT, los objetos Document tienen un nombre, una resolución y
unidades de medida horizontal y vertical; las formas individuales tienen propiedades de contorno y propiedades de
relleno, así como una posición y un factor de rotación; y los objetos de texto tienen propiedades de texto, las cuales
pueden incluir el texto en sí. Por ejemplo, ActiveDocument.Name representa la propiedad Name de un objeto
Document; es decir, especifica el nombre del documento activo.
¿Qué es un método?
Un método es como un verbo en el que se representa una acción que puede ser ejecutada por o sobre un objeto. En el
ejemplo de una clase “carro”, el carro puede ser hecho para ir más rápido y más lento, así que dos métodos para la clase
son “acelerar” y “desacelerar”.
En el contexto de CorelDRAW y Corel PHOTO-PAINT, los documentos tienen métodos para crear nuevas páginas,
las capas tienen métodos para crear nuevas formas, y las formas tienen métodos para aplicar transformaciones y
efectos. Por ejemplo, ActiveDocument.Close representa el método Close de un objeto Document; es decir, cierra
el documento activo.
¿Qué es un evento?
Un evento es como un sustantivo en el que se representa una acción que toma lugar dentro de un objeto. Un evento es
activado por una acción, tal como un click de ratón, una tecla presionada o un temporizador de sistema. Un evento
puede ser codificado para activar apropiadamente una respuesta en su objeto.
Por ejemplo, el evento ActiveDocument.AfterSave activa una acción en el objeto Document después de que éste
ha sido guardado.
Entendiendo la automatización 13
¿Cómo está estructurada la automatización de la codificación?
Sus conocimientos de programación deberán ayudarle a aprender a automatizar CorelDRAW y Corel PHOTO-
PAINT, independientemente de su nivel de experiencia con Microsoft Visual Basic for Applications (VBA) o
Microsoft Visual Studio Tools for Applications (VSTA).
Esta sección examina los siguientes temas sobre la estructura y sintaxis del lenguaje VBA:
Ÿ ¿Cómo se declaran las variables?
Ÿ ¿Cómo se construyen las funciones y subrutinas?
Ÿ ¿Cómo se finalizan las líneas?
Ÿ ¿Cómo se incluyen comentarios?
Ÿ ¿Cómo se utilizan los indicadores de memoria y cómo está asignada la memoria?
Ÿ ¿Cómo está definido el alcance?
Ÿ ¿Cómo son utilizadas las comparaciones y las asignaciones Booleanas ?
Ÿ ¿Cómo son utilizados los operadores lógicos y “bitwise”?
Ÿ ¿Cómo se proporcionan los cuadros de mensaje y los cuadros de entrada (input box)?
Ÿ ¿Cómo se establecen referencias a objetos?
Ÿ ¿Cómo se establecen referencias a colecciones?
Ÿ ¿Cómo se utilizan atajos a objetos?
Ÿ ¿Cómo se proporcionan los manejadores de eventos?
El Editor de Macros le da formato a todo el código VBA por usted (como se discute en “Formateando
automáticamente el código” en la página 32). La única forma de personalizar el formateo es cambiar el
tamaño de las sangrías.
VBA puede ser utilizado para crear clases orientadas a objetos. Sin embargo, esta función es una
característica del lenguaje de programación y por lo tanto no es discutida en detalle en esta documentación,
Los tipos de datos incorporados son Byte, Boolean, Integer, Long, Single, Double, String, Variant, y varios
otros tipos menos utilizados incluyendo Date, Decimal y Object.
Las variables pueden ser declaradas en cualquier lugar dentro del cuerpo de una función, o en la parte superior del
módulo actual. Sin embargo, generalmente es una buena idea declarar una variable antes de que ésta sea utilizada; de
lo contrario, el compilador la interpretará como un Variant, y pueden ocurrir deficiencias en tiempo de ejecución.
Los Booleanos toman False para ser 0 y True para ser cualquier otro valor, aunque la conversión de un
Boolean a un Long resulta en True siendo convertido a un valor de -1.
Para obtener más información acerca de alguno de los tipos de datos incorporados, tecléelo en la ventana
Código del Editor de Macros, selecciónelo y luego presione F1.
Entendiendo la automatización 14
Las estructuras de datos pueden ser construidas utilizando la siguiente sintaxis VBA:
Public Type fooType
item1 As Integer
item2 As String
End Type
Dim myTypedItem As fooType
Los elementos dentro de una variable declarada como tipo fooType son accesados al utilizar la notación punto:
myTypedItem.item1 = 5
El uso de cadenas es mucho más simple en VBA que en C. En VBA, las cadenas pueden ser sumadas, truncadas,
buscadas adelante y atrás, y pasadas como simples argumentos a funciones.
Para sumar dos cadenas en VBA, simplemente utilice el operador de concatenación ( & ) o el operador de adición ( + ):
Dim string1 As String, string2 As String
string2 = string1 & “ más texto” + “ incluso más texto”
En VBA hay muchas funciones para la manipulación de cadenas, incluyendo InStr(), Left(), Mid(), Right(),
Len() y Trim().
El valor define el índice del último elemento en el arreglo. Debido a que los índices son base-cero por defecto, hay
cinco elementos en la muestra de arreglo anterior (es decir, elementos desde el 0 hasta el 4, inclusive).
Los arreglos pueden ser redimensionados utilizando ReDim. Por ejemplo, el siguiente código VBA añade un
elemento extra a barArray, pero preserva el contenido existente de los cinco elementos originales:
ReDim Preserve barArray (6)
Los límites superior e inferior de un arreglo pueden ser determinados en tiempo de ejecución utilizando las funciones
Ubound() y LBound().
Entendiendo la automatización 15
Los arreglos multidimensionales pueden ser declarados separando los índices de dimensión con comas, como en el
siguiente ejemplo VBA:
Dim barArray (4, 3)
En VBA, sin embargo, las funciones están estructuradas como en el siguiente ejemplo:
Public Sub foo (stringItem As String)
´El cuerpo de la subrutina va aquí
End Sub
Public Function bar (numItem As Integer) As Double bar = 23.2
End Function
Para forzar a una función o a una sub a salir inmediatamente, se puede utilizar Exit Function o Exit Sub
(respectivamente).
Se pueden combinar varias declaraciones en una sola línea VBA al separarlas con dos puntos:
a=1:b=2:c=a+b
Una línea VBA no puede finalizar con dos puntos. Las líneas VBA que finalizan con dos puntos son
etiquetas utilizadas por la declaración Goto.
Entendiendo la automatización 16
Cada línea de un comentario multilínea debe iniciar con su propio apóstrofe en VBA:
a=b ' Esta es una pieza de código realmente interesante
' que requiere tanta explicación que se necesitará
' dividir el comentario en varias líneas
Para poner entre comentarios grandes secciones de código VBA, se utiliza la siguiente sintaxis (similarmente como en
C o C++):
#If 0 Then ' Esto es un cero, no es la letra O.
' Todo este código será ignorado
' por el compilador en tiempo de ejecución.
#End If
En el ejemplo VBA anterior, los argumentos long1 y long2 son ambos, por defecto, pasados por referencia. La
modificación de uno u otro argumento dentro del cuerpo de la función modifica la variable original; sin embargo, la
modificación de int1 no modifica el original porque éste es una copia del original.
Entendiendo la automatización 17
¿Cómo está definido el alcance?
Se puede definir el alcance de un tipo de datos o procedimiento (o incluso de un objeto). Los tipos de datos, las
funciones y las subrutinas (y los miembros de clases) que son declarados como private son visibles únicamente
dentro de ese módulo (o archivo). En cambio, las funciones que son declaradas como public son visibles
completamente en todos los módulos; sin embargo, puede ser necesario utilizar referencias tituladas totalmente si los
módulos están casi fuera de alcance — por ejemplo, si usted está referenciando una función en un proyecto diferente.
A diferencia de C, VBA no utiliza llaves — es decir, los símbolos { y } — para definir alcance local. El alcance local en
VBA está definido por una declaración de definición de apertura de función o subrutina (esto es, Function o Sub) y
una declaración End congruente (es decir, End Function o End Sub). Cualquier variable declarada dentro de la
función está disponible únicamente dentro del alcance de la función misma.
En cambio, muchos otros lenguajes utilizan un doble signo de igual para comparaciones Booleanas y un solo signo de
igual para asignaciones Booleanas:
if( a == b ) c = d:
Para otras comparaciones Booleanas, VBA utiliza los mismos operadores que otros lenguajes (excepto los operadores
para “es igual a” y “no es igual a”). Todos los operadores Booleanos de comparación se proporcionan en la siguiente
tabla:
Es igual a = ==
No es igual a <> !=
Entendiendo la automatización 18
¿Cómo son utilizados los operadores lógicos y “bitwise”?
En VBA, las operaciones lógicas son ejecutadas al utilizar las palabras clave And, Not, Or, Xor, Imp y Eqv, las cuales
ejecutan las operaciones lógicas AND, NOT, OR, Exclusive-OR, implicación lógica y equivalencia lógica
(respectivamente). Estos operadores también ejecutan comparaciones Booleanas.
El siguiente código muestra una comparación escrita en C o en un lenguaje similar:
if( ( a && b ) || ( c && d ) )
Alternativamente, el código VBA anterior podría ser escrito de la siguiente forma extendida:
If ( a And b = True ) Or ( c And d = True ) = True Then
La siguiente tabla proporciona una comparación de los cuatro operadores VBA lógicos y bitwise, y los operadores
lógicos y bitwise estilo C que son utilizados por C, C++, Java y JavaScript.
Not ~ !
Or | ||
Xor ^
¿Cómo se proporcionan los cuadros de mensaje y los cuadros de entrada (input box)?
En VBA, usted puede presentar al usuario mensajes simples utilizando la función MsgBox:
Dim retval As Long
retval = MsgBox("Click OK si está de acuerdo.", _
vbOKCancel, "Mensaje Sencillo")
If retval = vbOK Then
MsgBox "Ha hecho click en OK.", vbOK, "Afirmativo”
End If
Para más información sobre la creación de interfaces de usuario más complejas, vea “Construcción de
macros con interfaz amigable” en la página 55.
Entendiendo la automatización 19
¿Cómo son referenciados los objetos?
Si quiere crear una referencia a un objeto de modo que pueda tratar esa referencia como una variable (sh, en el
ejemplo VBA siguiente), usted puede utilizar la palabra clave Set.
Dim sh As Shape
Set sh = ActiveSelection.Shapes.Item(1)
Después de crear esta referencia, usted puede tratarla como si fuera el objeto mismo.
sh.Outline.Color.GrayAssign 35
Si la selección es cambiada mientras sh está aún al alcance, sh hace referencia a la forma original de la antigua
selección y no es afectada por la nueva selección. No se puede simplemente asignar el objeto a la variable como en el
siguiente ejemplo:
Dim sh As Shape
sh = ActiveSelection.Shapes.Item(1)
Para liberar un objeto, se debe ajustar su valor de referencia a Nothing.
Set sh = Nothing
También puede probar si una variable hace referencia a un objeto válido utilizando la palabra clave Nothing.
If sh Is Nothing Then MsgBox "sh está des-referenciado.”
Los objetos no necesitan ser explícitamente liberados. En la mayoría de los casos, VB libera el objeto al momento de la
eliminación de la variable cuando usted sale de la función o subrutina.
Para referenciar las formas en una capa, la colección de formas para esa capa es utilizada: ActiveLayer.Shapes.
Para referenciar formas individuales en la colección, se utiliza la propiedad Item(). Aquí está un ejemplo VBA para
CorelDRAW:
Dim sh As Shape
Set sh = ActiveLayer.Shapes.Item(1)
La mayoría de los elementos de una colección inician en 1 y se van incrementando. Para la colección CorelDRAW
ActiveLayer.Shapes, Item(1) es el elemento en la “cima” o “al frente” de la capa —en otras palabras, es el
elemento que está adelante de todas las otras formas. Además, puesto que cada elemento en la colección
ActiveLayer es un objeto de tipo Shape, se puede referenciar cualquier elemento en VBA simplemente por
incorporación del miembro apropiado con notación punto:
ActiveLayer.Shapes.Item(1).Outline.ConvertToObject
Entendiendo la automatización 20
Algunas veces, los elementos individuales tienen nombres. Si el elemento que está buscando tiene un nombre
asociado (y usted sabe qué nombre es y en cuál colección está el elemento), usted puede utilizar ese nombre para
referenciar el elemento directamente, como en el siguiente ejemplo VBA para CorelDRAW:
Dim sh1 As Shape, sh2 As Shape
Set sh1 = ActiveLayer.CreateRectangle(0, 5, 7, 0)
sh1.Name = "myShape"
Set sh2 = ActiveLayer.Shapes.Item("myShape")
Además, puesto que un elemento es usualmente el miembro implícito o por defecto de una colección, no es
estrictamente requerido. Por esta razón, la última línea del código VBA anterior puede ser reescrita como sigue:
Set sh2 = ActiveLayer.Shapes("myShape")
Todas las colecciones tienen una propiedad llamada Count. Esta propiedad de sólo lectura nos da el número de
miembros en la colección, como en el siguiente ejemplo VBA para CorelDRAW:
Dim count As Long
count = ActiveLayer.Shapes.Count
El valor devuelto no sólo es el número de elementos en la colección: Puesto que la colección inicia desde 1, éste es
también el índice del último elemento.
¿Cómo son analizados gramaticalmente los elementos en una colección?
Con frecuencia es necesario analizar gramaticalmente todos los miembros de una colección para verificar o cambiar
las propiedades de cada elemento.
Al utilizar los miembros Item() y Count, es sencillo recorrer una colección de elementos. Con cada iteración es
posible probar las propiedades del elemento actual, o llamar a sus métodos. El siguiente código VBA para
CorelDRAW restringe todas las formas en la capa a que no sean más anchas de diez unidades:
Dim I As Long, count As Long
count = ActiveLayer.Shapes.Count
For I = 1 to count
If ActiveLayer.Shapes.Item(i).SizeWidth > 10 Then
ActiveLayer.Shapes.Item(i).SizeWidth = 10
End If
Next I
Sin embargo, hay una forma más conveniente de analizar gramaticalmente una colección en VBA. En lugar de
utilizar la propiedad Count y un bucle For-Next, esta técnica utiliza un bucle For-Each-In:
Dim sh As Shape
For Each sh In ActiveLayer.Shapes
If sh.SizeWidth > 10 Then
sh.SizeWidth = 10
End If
Next sh
Entendiendo la automatización 21
Si quiere copiar la selección y luego analizarla gramaticalmente cuando ya no está seleccionada, copie la selección
dentro de un objeto ShapeRange:
Dim sr As ShapeRange
Dim sh As Shape
Set sr = ActiveSelectionRange
For Each sh In sr
' Hacer algo con cada forma
Next sh
ActiveLayer ActivePage.ActiveLayer
ActivePage ActiveDocument.ActivePage
ActiveSelection ActiveDocument.Selection
ActiveSelectionRange ActiveDocument.SelectionRange
ActiveShape ActiveDocument.Selection.Shapes(1)
ActiveView ActiveWindow.ActiveView
ActiveWindow ActiveDocument.ActiveWindow
Para Corel PHOTO-PAINT, un atajo puede ser utilizado por sí solo como una propiedad del objeto Application de
Corel PHOTO-PAINT. La siguiente tabla proporciona los atajos y sus formas largas para Corel PHOTO-PAINT.
(Para una descripción de cualquier elemento, por favor vea la sección “Referencia del Modelo de Objeto” del archivo
Ayuda de Macros de Corel PHOTO-PAINT [pp_om.chm].)
Atajo Forma larga
ActiveLayer ActivePage.ActiveLayer
ActiveWindow ActiveDocument.ActiveWindow
Para CorelDRAW, los siguientes atajos también pueden ser utilizados como miembros de un determinado objeto
Document:
• ActiveLayer
• ActivePage
• ActiveShape
• ActiveWindow
Entendiendo la automatización 22
Para Corel PHOTO-PAINT, los siguientes atajos también pueden ser utilizados como miembros de un determinado
objeto Document:
• ActiveLayer
• ActiveWindow
Para CorelDRAW, el objeto Document también tiene las propiedades Selection y SelectionRange, las cuales le
permiten obtener la selección y el rango de selección (respectivamente) de un documento específico
independientemente si ese documento está activo.
Entendiendo la automatización 23
Aquí está una pequeña muestra de los eventos disponibles en CorelDRAW:
Evento Descripción
Los manejadores de evento para eventos frecuentes — tales como eventos relacionados con la clase Shape
— deberán ser tan eficientes como sea posible, para mantener la aplicación en ejecución tan rápido como sea
posible.
Entendiendo la automatización 24
Iniciando con las macros
Ahora que entiende un poco acerca de la automatización, está listo para iniciar con las macros. Esta sección
proporciona un vistazo a las herramientas y funcionalidades de CorelDRAW y Corel PHOTO-PAINT relacionadas
con las macros.
Esta sección contiene los siguientes temas:
• Configurando las características de automatización.
• Utilizando las barra de herramientas Macros.
• Utilizando la ventana acoplable Administrador de Macros.
• Utilizando el Administrador de Adiciones.
• Utilizando el Editor de Macros.
• Utilizando el Editor VSTA.
La ventana acoplable Administrador de Macros en Corel PHOTO-PAINT, con una macro seleccionada
Para mostrar la ventana acoplable Administrador de Macros, opte por una de las siguientes opciones:
• Click en Herramientas » Macros » Administrador de macros.
• Click en el botón Administrador de macros de la barra de herramientas Macros.
Se puede utilizar un add-in registrado haciendo click en Herramientas » Macros » Adiciones y luego
eligiendo el add-in.
No se puede utilizar el Editor de Macros para compilar archivos de programas ejecutables (EXE).
1 5
6
2
7
3
El Editor de Macros presenta lo siguiente: 1) Explorador de Proyectos; 2) Ventana de Código; 3) Ventana Propiedades;
4) Barra de Herramientas Estándar; 5) Barra de Herramientas Depuración; 6) Barra de Herramientas Edición;
7) Barra de Herramientas UserForm
El Editor de Macros también le permite acceder al Explorador de Objetos, el cual muestra el modelo de objeto
completo de cada componente referenciado y de CorelDRAW o Corel PHOTO-PAINT. Para más información vea
“Utilizando el Explorador de Objetos” en la página 36.
Puede acceder al Editor de Macros desde Corel DRAW o Corel PHOTO-PAINT. Aunque el Editor de Macros se abre
en una ventana separada, éste corre dentro del proceso de su aplicación fuente. Para mostrar el Editor de Macros,
haga una de estas cosas:
• Click en Herramientas » Macros » Editor de Macros en el menú principal de la aplicación.
• Click en el botón Editor de Macros en la barra de herramientas Macros.
• Click derecho en Visual Basic para Aplicaciones en la ventana acoplable Administrador de Macros y luego
click en Mostrar IDE.
• Presionar Alt + F11.
Para alternar entre el Editor de Macros y la aplicación, utilice la barra de tareas de Windows o presione
Alt + F11 o Alt + Tab.
Para obtener información más detallada sobre la construcción de procedimientos de código, por favor vea el archivo
de Ayuda de Microsoft Visual Basic for Applications, el cual está disponible en el menú Ayuda del Editor de Macros.
Icono Elemento
proyecto de macro
carpeta
documento u objecto
(CorelDRAW)
documento u objecto
(Corel PHOTO-PAINT)
forma
módulo
Para mostrar u ocultar el Explorador de Proyectos, haga una de las siguientes cosas:
• Click en Ver » Explorador de Proyectos.
• Click en el botón Explorador de Proyectos en la barra de herramientas Estándar.
• Presione Ctrl + R.
La ventana Código
Para mostrar la ventana Código, haga una de las siguientes cosas:
• Click en Ver » Código.
• Presione F7.
Formateo automático de código
El Editor de Macros formatea automáticamente el código por usted. Incluso la capitalización de palabras clave,
funciones, subrutinas y variables es realizada por el Editor de Macros, independientemente de lo que usted escriba.
No se puede personalizar el formateo del código, aunque se puede ajustar el sangrado de cada línea, así como la
colocación de líneas de quiebre.
Si utiliza el valor devuelto cuando se llama a una función, los paréntesis alrededor de los parámetros son obligatorios
(igual que en la mayoría de los lenguajes de programación modernos):
a = fooFunc (b, c)
Sin embargo, si el valor devuelto de una llamada de función está siendo descartado, o si se llama a una subrutina, los
paréntesis deben descartarse (a diferencia de muchos otros lenguajes):
barFunc d, e
fooBarSub f
Si prefiere ver siempre los paréntesis, utilice la palabra clave Call antes de llamar a la función o a la subrutina:
Call barFunc (d, e)
Call fooBarSub (f)
Al escribir código en la ventana Código, el Editor de Macros colorea cada palabra de acuerdo a su clasificación.
Color de palabra Clasificación
Texto resaltado en amarillo Línea donde la ejecución está pausada para depuración
Texto blanco sobre fondo rojo y un punto rojo en Punto de ruptura establecido para propósitos de depuración
el margen izquierdo
Para más información, vea “Ajuste de puntos de
ruptura” en la página 53
Estas técnicas de colorización de sintaxis hacen que el código sea mucho más fácil de leer.
Los puntos de ruptura y los marcadores de libro se pierden cuando se sale de la aplicación.
El Editor de Macros le permite modificar los colores predeterminados para resaltar la sintaxis. Haga click en
Herramientas » Opciones y elija sus ajustes en la pestaña Formato del Editor.
Verificación automática de sintaxis
Cada vez que usted mueve el cursor fuera de una línea de código, el Editor de Macros verifica la sintaxis del código en
esa línea; si se encuentra algún error, la línea es coloreada y aparece un mensaje de advertencia. Esta comprobación en
Saltando a definiciones
El Editor de Macros le permite saltar directamente a la definición de una variable, función u objeto.
Definición deseada Procedimiento Destino
Para regresar a donde usted solicitó la definición, haga click derecho en cualquier parte de la ventana
Código y luego haga click en Última posición.
El Editor de Macros añade las funciones que usted escribe y las variables que usted define a una lista interna que
contiene todas las palabras clave incorporadas y los valores enumerados. Al escribir, el Editor de Macros muestra una
lista contextual de palabras que son candidatos válidos para insertar en la posición actual. Esta característica de auto-
completado hace más rápido y más conveniente el desarrollo del código.
La ventana Propiedades se actualiza automáticamente cuando se selecciona un objeto, o cuando se cambian las
propiedades del objeto seleccionado utilizando otros métodos (por ejemplo, utilizando el ratón para mover y
redimensionar controles de formulario).
Para mostrar u ocultar una barra de herramientas, haga click en Ver » Barras de herramientas y luego haga click en
el comando correspondiente. Una marca de verificación junto al comando indica que esa barra de herramientas ya
está siendo mostrada
Los componentes referenciados incluyen todos los objetos ActiveX u OLE (Object Linking and Embedding)
que son utilizados por el proyecto.
botón
lista Clase Copiar al
Portapapeles
lista Miembro
ventana
Información
La ventana Examinador de Objetos
Para abrir el Examinador de Objetos desde el Editor de Macros, opte por una de las siguientes opciones:
• Click en Ver » Examinador de Objetos.
• Click en el botón Examinador de Objetos en la barra de herramientas Estándar.
• Presione F2.
Para referenciar el modelo de objeto de otra aplicación, haga click en Herramientas » Referencias. Los
componentes referenciados pueden ser accesados por el código de macro.
Utilizando la lista Clases
Cada proyecto y biblioteca tiene un modelo de objeto que contiene los siguientes elementos relacionados con clases,
los cuales son mostrados en la lista Clase:
• Valores globales.
• Clases.
• Módulos.
• Tipos.
• Enumeraciones.
Los valores globales se aplican a un proyecto o biblioteca completos, e incluyen miembros individuales de
enumeraciones (tales como alineaciones de texto de párrafo, tipos de formas y filtros de importación y exportación).
Para documentación de todas las clases disponibles para CorelDRAW o Corel PHOTO-PAINT, vea la
sección “Referencia/Clases del Modelo de Objeto” del archivo de Ayuda de Macros para la aplicación.
Para documentación de todos los módulos disponibles para CorelDRAW, vea la sección
“Referencia/Módulos del Modelo de Objeto” del archivo de Ayuda de Macros para la aplicación.
Los Tipos son tipos de datos personalizados que complementan los tipos de datos incorporados que son
proporcionados por el ambiente de automatización (como se describe en “¿Cómo se declaran las variables?” en la
página 14.
Para documentación de todos los tipos disponibles para CorelDRAW, vea la sección “Referencia/Tipos del
Modelo de Objeto” del archivo de Ayuda de Macros para la aplicación.
Las Enumeraciones representan valores fijos en los procedimientos y funciones de la codificación para una macro. Para
más información, vea “¿Qué es una enumeración?” en la página 13.
Para documentación de todas las enumeraciones disponibles para CorelDRAW o Corel PHOTO-PAINT,
vea la sección “Referencia/Enumeraciones del Modelo de Objeto” del archivo de Ayuda de Macros para la
aplicación.
Cada tipo de elemento en la lista Clase tiene un icono asignado a él:
Icono Elemento
valor global
clase
módulo
tipo
enumeración
Para acceder al tema de Ayuda de un elemento seleccionado, haga click en el botón Ayuda o presione F1.
Para documentación de todas las propiedades disponibles para CorelDRAW o Corel PHOTO-PAINT, vea
la sección “Referencia/Propiedades del Modelo de Objeto” del archivo de Ayuda de Macros para la
aplicación.
Los Métodos son comúnmente conocidos como “funciones de miembro” — funciones que una clase puede ejecutar
sobre sí misma. Un buen ejemplo es el método Move de una clase Shape en CorelDRAW, el cual mueve una forma
utilizando un vector [x, y].
El siguiente código mueve las formas seleccionadas 2 unidades de medida hacia la derecha y 3 unidades de medida
hacia arriba:
ActiveSelection.Move 2, 3
Si el valor devuelto de una función no es utilizado, la llamada a la función no lleva paréntesis alrededor de la lista de
argumentos a menos que sea utilizada la palabra clave Call.
Para documentación de todos los métodos disponibles para CorelDRAW o Corel PHOTO-PAINT, vea la
sección “Referencia/Métodos del Modelo de Objeto” del archivo de Ayuda de Macros para la aplicación.
Los Eventos están asociados con algunas clases. Se puede configurar que un manejador de evento sea llamado cuando
el evento ocurra en la aplicación; esta funcionalidad le permite desarrollar sofisticadas aplicaciones que respondan
automáticamente a lo que está sucediendo dentro de la aplicación. Comúnmente, los manejadores de evento
incluyen los eventos BeforePrint, BeforeSave, PageActivate, SelectionChange y ShapeMove de la clase
Document.
Para documentación de todos los eventos disponibles para CorelDRAW o Corel PHOTO-PAINT, vea la
sección “Referencia/Eventos del Modelo de Objeto” del archivo de Ayuda de Macros para la aplicación.
Las constantes mostradas en la lista Miembro son miembros de enumeraciones o están definidas como públicas
(public) en un módulo. Las enumeraciones agrupan elementos relacionados de una lista cerrada — tal como los
tipos de formas CorelDRAW, filtros de importación/exportación y alineaciones — para utilizarse donde quiera que
un valor entero sea requerido.
Icono Elemento
propiedad
método
evento
constante
Para acceder al tema de Ayuda de un elemento seleccionado, haga click en el botón Ayuda o presione F1.
La ventana Información proporciona información acerca de la clase seleccionada o miembro clase. Esta información
incluye lo siguiente:
• un prototipo del elemento.
• una indicación de si el elemento es una propiedad de sólo lectura.
• el padre del elemento.
• una descripción corta del elemento.
Para buscar las clases y los miembros del modelo de objeto seleccionado, escriba algo dentro de la caja Búsqueda y
luego haga click en el botón Búsqueda . La ventana Resultados de la búsqueda muestra, en orden alfabético,
todas las correspondencias. Al hacer click en una de las correspondencias avanza la lista Clase y la lista Miembro a
ese elemento y muestra la ventana Información para ese elemento.
Los nombres de clases concordantes tienen una columna Miembro vacía en la ventana Resultados de la
búsqueda
Para ocultar la ventana Resultados de la búsqueda, haga click en el botón Ocultar resultados de la
búsqueda .
Por defecto, CorelDRAW Graphics Suite X5 crea carpetas VSTA en la siguiente ruta:
• para CorelDRAW: Mis Documentos\Corel\VSTA\CorelDRAW
• para Corel PHOTO-PAINT: Mis Documentos\Corel\VSTA\Corel PHOTO-PAINT
Asegúrese cargar las adiciones VSTA de la siguiente ubicación:
• para CorelDRAW: Mis Documentos\Corel\VSTA\CorelDRAW\Addins
• para Corel PHOTO-PAINT: Mis Documentos\Corel\VSTA\Corel PHOTO-PAINT\Addins
Se puede abrir el Editor VSTA desde CorelDRAW o Corel PHOTO-PAINT. Aunque el Editor VSTA se abre en una
ventana separada, éste se ejecuta dentro del proceso de su aplicación fuente. Para abrir el Editor VSTA, haga una de
las siguientes cosas:
• Click en Herramientas » Macros » Editor VSTA en el menú principal de la aplicación.
• Presione Alt + Shift + F12.
Para alternar entre el Editor VSTA y la aplicación, utilice la barra de tareas de Windows, o presione Alt +
Shift F12 o Alt + Tab.
Para información más detallada sobre VSTA y su ambiente de programación, consulte el menú Ayuda en el Editor
VSTA.
En el Editor de Macros no se puede mover un componente de una carpeta a otra dentro del mismo proyecto.
Sin embargo, se puede arrastrar un componente a otro proyecto para hacer una copia de él ahí.
Para procedimientos detallados sobre la creación de proyectos de macros, vea los siguientes temas:
• Crear un proyecto de macro.
• Añadir una cuadro de diálogo a un proyecto de macro.
• Añadir un módulo de código a un proyecto de macro.
• Añadir un módulo de Clase a un proyecto de macro.
Los nombres de los proyectos deben seguir las convenciones normales de nombramiento de variables:
Deben comenzar con un carácter alfabético y no deben contener espacios ni caracteres especiales, a menos
que sea un guión bajo ( _ ).
También se puede
Creación de macros 44
También se puede
Copiar un proyecto de macro basado en GMS. Click derecho en algún proyecto de la lista, click en Copiar
en... y luego elegir la ubicación destino para la copia.
NOTA: No se puede copiar un proyecto de macro basado en
documento. Tales proyectos son almacenados dentro de un
documento y no pueden ser administrados separadamente
de ese documento.
Descargar un proyecto de macro basado en GMS. Click derecho en algún proyecto de la lista y luego click en
Descargar proyecto de macro.
NOTA: No se puede cerrar un proyecto de macro basado en
documento simplemente cerrando el documento en el cual
está almacenado.
Para más información, vea “Proporcionando cuadros de diálogo para macros” en la página 57.
Mostrar u ocultar todos los módulos de código en la En la ventana acoplable Administrador de Macros, hacer
ventana acoplable Administrador de Macros. click en el botón Modo sencillo .
Creación de macros 45
También se puede
Eliminar un módulo de código En la ventana acoplable Administrador de Macros, hacer
una de las siguientes cosas:
•Click en algún módulo de la lista y luego click en el
Botón Eliminar .
•Click derecho en algún módulo de la lista y luego click
en Eliminar.
Escritura de macros
Se puede codificar manualmente una macro escribiéndola en el Editor de Macros o en el Editor VSTA.
(Alternativamente, en CorelDRAW, se puede crear una macro VBA grabándola. Para más información, vea
“Grabación de macros” en la página 47). Las macros que son desarrolladas en el Editor de Macros o en el Editor VSTA
pueden beneficiarse del control total de programación, incluyendo ejecución de condicionales, bucles y
bifurcaciones. De hecho, se pueden escribir macros que son programas en toda la extensión de la palabra.
En esta documentación, todo el código de macro es referido como una macro, aún cuando, en algunos
contextos, una macro es sólo aquella parte de código que puede ser ejecutada por CorelDRAW o Corel
PHOTO-PAINT.
Para escribir una macro, primero debe añadírse ésta a un módulo de código para el proyecto de macro deseado. Se
pueden editar, renombrar o incluso eliminar macros.
Creación de macros 46
Editar una macro VBA
• En la ventana acoplable Administrador de Macros, haga una de las siguientes cosas:
• Click en alguna macro de la lista y luego click en el botón Editar .
• Click derecho en una macro de la lista y luego click en Editar.
La macro se abre en el Editor de Macros.
Para información detallada acerca de codificación manual de macros, vea “¿Cómo está estructurada la
automatización del código?” en la página 14.
Grabación de macros
CorelDRAW ofrece una característica de grabación que le permite crear una macro sin necesidad de codificarla
manualmente. Para muchas tareas simples y repetitivas, las macros grabadas son una rápida y eficiente solución:
Estas almacenan la secuencia de teclas que usted presiona y las acciones del ratón que usted ejecuta dentro de la
aplicación. Tal vez prefiera crear macros grabándolas si no está familiarizado con el modelo de objeto para la
aplicación, o si no está seguro cuáles objetos y métodos utilizar.
En Corel PHOTO-PAINT, las acciones pueden ser grabadas como scripts de Corel SCRIPT pero no como
macros VBA o VSTA. Para más información sobre grabación de scripts, vea “Trabajando con scripts” en el
archivo principal de Ayuda de Corel PHOTO-PAINT (corelpp.chm).
Si quiere almacenar una macro grabada para uso futuro, puede guardarla utilizando el cuadro de diálogo Grabación
de Macros. Guardar una macro grabada es particularmente útil si usted quiere extender o personalizar su
funcionalidad al editarla en el Editor de Macros.
Creación de macros 47
El cuadro de diálogo Grabar Macro
Sin embargo, si quiere utilizar una macro grabada sólo durante la sesión actual, se puede grabar una macro temporal.
Para procedimientos detallados, vea los siguientes temas:
• Grabar y guardar una macro.
• Grabar una macro temporal.
Creación de macros 48
5 Para detener la grabación, haga una de las siguientes cosas:
• Click en Herramientas » Macros » Detener grabación.
• Click en el botón Detener grabación en la barra de herramientas Macros o en la ventana acoplable
Administrador de macros.
• Presionar Ctrl + Shift + O.
No se puede grabar una macro si todos los proyectos de macro disponibles están bloqueados.
No todas las acciones pueden ser grabadas — algunas debido a su complejidad (aunque muchas de esas
acciones pueden ser codificadas manualmente en el Editor de Macros). Cuando una acción no puede ser
grabada, aparece un comentario en el código de la macro (“La grabación de este comando no está
soportada.”), pero el proceso de grabación continúa hasta detenerse. Se puede ver cualquier comentario
en código abriendo la macro en el Editor de Macros.
Se puede especificar el proyecto de macro predeterminado para grabación haciendo click derecho en el
proyecto de la ventana acoplable Administrador de macros y luego haciendo click en Establecer como
proyecto de grabación. Sin embargo, no se puede especificar un proyecto de macro bloqueado.
Se puede cancelar la grabación de una macro y descartar cualquier comando grabado hasta entonces
haciendo click en Herramientas » Macros » Cancelar grabación.
También se puede
Grabar las acciones de la lista Deshacer como Hacer click en Herramientas » Deshacer, ejecutar las
una macro VBA acciones que quiere grabar y luego hacer click en el botón
Guardar lista en una macro de VBA de la ventana
acoplable Deshacer.
Creación de macros 49
No se puede grabar una macro si todos los proyectos de macro disponibles están bloqueados.
No todas las acciones pueden ser grabadas .
Se puede especificar el proyecto de grabación de macro predeterminado haciendo click derecho en la ventana
acoplable Administrador de Macros y luego clickeando en Establecer como proyecto de grabación. Sin
embargo, no se puede especificar un proyecto de macro bloqueado.
Se puede cancelar la grabación de una macro y descartar los comandos grabados hasta entonces haciendo
click en Herramientas » Macros » Cancelar grabación.
Ejecución de macros
Usted puede ejecutar las macros guardadas ya sea directamente desde dentro de CorelDRAW o Corel PHOTO-
PAINT o desde el Editor de Macros.
Creación de macros 50
Ejecutar una macro temporal
• Hacer una de las siguientes cosas:
• Click en Herramientas » Macros » Ejecutar macro temporal.
• Presionar Ctrl + Shift + P.
Esta opción está habilitada sólo después de que ha grabado una macro temporal.
Si ha creado múltiples macros temporales, debe especificar cuál proyecto de macro contiene el que quiere
ejecutar. Haga click derecho en el proyecto desde la ventana acoplable Administrador de Macros y luego
click en Establecer como proyecto de grabación.
Depuración de macros
Para asegurarse que sus macros se ejecuten como lo espera, es importante depurarlas.
El Editor de Macros proporciona cuatro ventanas para depuración de código VBA. El Editor de Macros también
cuenta con dos potentes prestaciones de depuramiento que son comunes a los editores de lenguaje: ajuste de puntos
de interrupción y transferencia de código paso a paso.
El Editor de Macros también soporta dos técnicas avanzadas de depuración que no se discuten en esta
documentación: Hacer cambios al código mientras se está ejecutando, y observación y cambio de variables.
El Editor de Macros proporciona cuatro ventanas para depuración de código VBA: la ventana Pila de llamadas, la
ventana Inmediato, la ventana Locales y la ventana Inspección. Todas estas ventanas proporcionan información
importante acerca del estado de las funciones y variables mientras una aplicación se ejecuta.
La ventana Pila de llamadas es un cuadro de diálogo modal que enlista cuál función llama a cual función. En
aplicaciones grandes y complicadas, esta información es útil para trazar los pasos de una función particular que está
siendo llamada. Para visitar una función listada en la ventana, seleccione el nombre de la función y luego haga click en
Mostrar, o si no cierre la ventana.
Para mostrar la ventana Pila de llamadas, haga click en Ver » Pila de llamadas.
Creación de macros 51
La ventana Inmediato le permite escribir y ejecutar líneas arbitrarias de código mientras una macro está pausada.
Esta funcionalidad es útil para obtener o ajustar la propiedad de un objeto en un documento, o para ajustar el valor de
una variable en el código. Para ejecutar una pieza de código, escríbala en la ventana Inmediato y luego presione
Enter; el código se ejecutará inmediatamente.
La ventana Inmediato
La ventana Locales muestra todas las variables y objetos que existen dentro del campo de acción actual. El tipo y
valor para cada variable está enlistado en las columnas junto al nombre de la variable. Algunas variables y objetos
tienen varios hijos, los cuales pueden ser mostrados haciendo click en el botón junto al padre. Muchas variables le
permiten editar su valor haciendo click en ellas.
La ventana Locales
La ventana Inspección es utilizada para observar variables específicas o propiedades de objetos. Esta funcionalidad
es útil para observación de sólo uno o dos valores con preferencia de búsqueda entre todos los valores en la ventana
Locales.
Creación de macros 52
La ventana Inspección
Para añadir un valor a la ventana Inspección, haga una de las siguientes cosas:
• Seleccione la variable u objeto y su propiedad y luego arrastre la selección hacia la ventana Inspección.
• Haga click en el elemento y luego click en Depuración » Inspección rápida.
Aparece el cuadro de diálogo Añadir Inspección.
Seleccione el elemento que quiere inspeccionar, seleccione alguna condición para esta inspección y luego haga click
en Aceptar. Si la condición pasa a ser verdadera, la aplicación se pausa para permitirle examinar el código.
Ajuste de puntos de interrupción
Un punto de interrupción es un marcador en una línea de código que provoca una pausa. Para continuar, se debe o
bien reiniciar la ejecución o bien dar un paso a través de líneas de código subsecuentes.
Para ajustar o quitar un punto de interrupción, haga click en la línea y luego click en Depuración » Alternar punto
de interrupción. Por defecto, la línea está resaltada en rojo y un punto rojo se coloca en el margen.
Para restablecer el código después de pausarlo en un punto de interrupción, haga click en Ejecutar » Continuar.
Para pausar la ejecución del código (inmediatamente saliendo de todas las funciones y descartando todos los valores
de retorno), haga click en Ejecutar » Restablecer.
También puede “ejecutar hasta el cursor” — es decir, ejecutar el código hasta que éste llegue a la línea en donde está el
cursor, y luego pausarlo en esa línea. Para hacer esto, haga click en la línea en donde quiere que se pause la ejecución y
luego haga click en Depuración » Ejecutar hasta el cursor.
Creación de macros 53
Para limpiar todos los puntos de interrupción, haga click en Depuración » Borrar todos los puntos de interrupción.
Si la línea con el punto de interrupción (o el cursor, cuando se activa “Ejecutar hasta el cursor”) no es
ejecutada porque está en un bloque condicional (if-then-else), el código no se detiene en esa línea.
Los puntos de interrupción no se guardan. Estos se pierden cuando se cierra el Editor de Macros.
Cuando la ejecución se pausa en un punto de interrupción, se puede continuar a través del código una línea a la vez.
Esta funcionalidad, llamada “paso a paso a través del código”, le permite hacer lo siguiente:
• Examinar los valores de variables individuales después de cada línea.
• Determinar cómo afecta el código a los valores.
• Determinar cómo afectan los valores al código.
Para pasear a través del código, haga click en Depuración » Paso a paso por instrucciones. La ejecución avanza a
cada línea en todas la llamadas de función y subrutinas.
Para ir paso a paso a través de cada línea de la función o subrutina actual pero no a través de las líneas de cada llamada
de función o subrutina, haga click en Depuración » Paso a paso por procedimientos. Las llamadas de funciones y
subrutinas son ejecutadas, pero no línea por línea.
Para ejecutar el resto de la función o subrutina actual pero pausar cuando la función o subrutina regresa al punto
donde fue llamada, haga click en Depuración » Paso a paso para salir. Esta técnica es una forma rápida de regresar
al punto de entrada de una función, para continuar paso a paso a través del código de la llamada de función.
Creación de macros 54
Construcción de macros con interfaz amigable
Una parte importante de muchas soluciones de macro es la interfaz de usuario. Una interfaz bien diseñada mejora la
facilidad de uso, poder y aceptación de una solución de macro. Interfaces de usuario simples pueden ser creadas con
barras de herramientas, mientras que interfaces más complejas pueden ser creadas con cuadros de diálogo o ventanas
acoplables — y pueden incluso permitir al usuario interactuar con el ratón.
Sin embargo, para algunas soluciones de macro, una interfaz de usuario aislada no es suficiente. Para hacer una
solución de macro tan amigable al usuario como sea posible, usted puede proporcionar documentación para ello.
Esta sección contiene los siguientes temas:
• Proporcionar barras de herramientas a las macros.
• Proporcionar cuadros de diálogo a las macros.
• Proporcionar interacción con el usuario a las macros.
• Proporcionar documentación a las macros.
El cuadro de herramientas Diseñador de Formas le permite añadir los siguientes controles a los cuadros de diálogo:
Frame Agrupa elementos de tal manera que éstos se muevan junto con el marco.
CommandButton Proporciona un botón que puede ser clickeado para realizar una acción asignada.
Para información sobre la codificación de este control, vea “Proporcionando
botones en cuadros de diálogo” en la página 62.
SpinButton Realza otro control (tal como un control TextBox), de tal manera que el valor para
ese control pueda ser ajustado más rápidamente.
Image Proporciona una imagen. Para información sobre la codificación de este control,
vea “Proporcionando imágenes en cuadros de diálogo” en la página 64.
El cuadro de herramientas Diseñador de Formas también presenta una herramienta Selección , la cual
le permite seleccionar y mover los controles del cuadro de diálogo.
Para mostrar un tema de Ayuda que contenga información acerca de un control seleccionado del cuadro de
diálogo en el Diseñador de Formas, presione F1.
El Diseñador de Formas también proporciona acceso a la barra de herramientas UserForm, la cual puede ser
utilizada cuando se diseña un cuadro de diálogo. Para información sobre esta barra de herramientas, vea “Utilizando
las barras de herramientas del Editor de Macros” en la página 35.
Para mejor comprensión, se le puede dar a cada cuadro de diálogo un nombre único y descriptivo utilizando
la ventana Propiedades. Sin embargo, recuerde seguir las convenciones estándar de programación para
nombramiento de variables.
Por otro lado, el método Show proporciona un parámetro Modal, el cual le permite especificar si el cuadro de diálogo
es modal o no modal. Un valor de vbModal (o 1) para este parámetro crea un cuadro de diálogo modal, mientras que
un valor de vbModeless (o 0) crea un cuadro de diálogo no modal. El siguiente ejemplo VBA crea un cuadro de
diálogo no modal:
frmFooForm.Show vbModeless
Para abrir un cuadro de diálogo de una macro que esté disponible dentro de la aplicación misma, se debe crear una
subrutina pública dentro del módulo de código. Sin embargo, una subrutina no puede ser facilitada desde el interior
de la aplicación si la subrutina existe ya sea dentro del código de un cuadro de diálogo o ya sea dentro de un módulo de
clase. Además, la subrutina no puede tomar ningún parámetro.
El siguiente ejemplo de subrutina VBA abre frmFooForm como un cuadro de diálogo no modal:
Public Sub showFooForm()
frmFooForm.Show vbModeless
End Sub
Cuando se carga un cuadro de diálogo, éste activa su propio evento UserForm_Initialize. Desde este
manejador de evento, usted debe inicializar todos los controles relevantes en el cuadro de diálogo. Para más
información, vea “¿Cómo se proporcionan los manejadores de evento?” en la página 23.
Por último, también se puede utilizar el método Show para abrir cuadros de diálogo adicionales desde dentro del
actual, como en el siguiente ejemplo VBA:
UserForm2.Show vbModal
Sin embargo, el control no es regresado a usted hasta que todos los cuadros de diálogo estén cerrados.
Exposición de cuadros de texto en cuadros de diálogo
Los cuadros de texto (es decir, los controles TextBox) son el soporte principal de ingreso de datos del usuario. Son
fáciles de utilizar y rápidos de programar y son apropiados para un buena cantidad de propósitos.
Para ajustar el texto en un cuadro de texto cuando éste se inicialice, configure la propiedad Text (por defecto o
implícita) para el control TextBox como en el siguiente ejemplo VBA:
txtWidth.Text = "3"
txtHeight = "1"
Para obtener el valor de un control TextBox, obtenga su propiedad Text en la ventana Propiedades, como en el
siguiente ejemplo VBA:
Call SetSize(txtWidth.Text, txtHeight.Text)
Para verificar cuál elemento está seleccionado cuando se haga click en el botón Aceptar, pruebe la propiedad
ListIndex de la lista.
Para obtener el valor del título de un cuadro combinado o un cuadro de lista seleccionado, pruebe la propiedad Text
del elemento, como en el siguiente código VBA:
Dim retList As String
retList = ComboBox1.Text
La mayoría de los cuadros de diálogo tienen un botón Aceptar y un botón Cancelar. Sin embargo, ningún botón
funciona hasta que su cuadro de diálogo tiene código para manejar el evento click del botón. (Esto se debe a que los
cuadros de diálogo en VBA y VSTA son eventos dados).
Para un botón Aceptar, se puede ajustar su propiedad Default a True de modo que el manejador de evento para el
botón sea llamado cuando el usuario presione la tecla Enter para activar el cuadro de diálogo. De este modo, el
manejador de evento click para el botón ejecuta la funcionalidad del cuadro de diálogo y luego descarga (cierra) ese
cuadro de diálogo.
Si el cuadro de diálogo es utilizado para configurar el tamaño de las formas CorelDRAW seleccionadas para ajustar su
anchura y altura, entonces el manejador de evento click para el botón Aceptar podría ser parecido a la siguiente
muestra de código VBA (la cual asume que usted ya ha creado dos cuadros de texto llamados txtWidth y
txtHeight):
Private Sub buttonOK_Click()
Me.Hide
Call SetSize(txtWidth.Text, txtHeight.Text)
Unload Me
End Sub
Desde el interior del módulo de código del cuadro de diálogo, el objeto cuadro de diálogo está implícito, de modo que
todos los controles pueden ser accesados simplemente por nombre. Desde otros módulos, los controles deben ser
accesados a través de sus nombres completos (como en UserForm1.buttonOK).
Si usted continúa y configura la propiedad Cancel del cuadro de diálogo a True, entonces cuando el usuario presione
la tecla Escape, el evento cmdCancel_Click es accionado y el código proporcionado descarga (cierra) la forma.
Las coordenadas devueltas son relativas al origen de la página y, a menos que se especifique explícitamente,
están en las mismas unidades que las del documento.
Para obtener las formas bajo el punto de click devuelto, se puede utilizar el método SelectShapesAtPoint (el cual es
un miembro de Page), como en el siguiente ejemplo VBA:
doc.ActivePage.SelectShapesAtPoint x, y, True
Un valor de True selecciona objetos sin relleno, mientras que un valor False no selecciona objetos sin relleno.
Los siguientes parámetros para el método Document.GetUserArea están codificados dentro del ejemplo anterior:
• Las variables x1 y y1 devuelven las posiciones horizontal y vertical (respectivamente) de la esquina superior
izquierda del área.
• Las variables x2 y y2 devuelven las posiciones horizontal y vertical (respectivamente) de la esquina inferior derecha
del área.
• El parámetro shift devuelve la combinación de las teclas Shift, Ctrl y Alt que se mantengan presionadas por el
usuario cuando se arrastra el ratón. Las teclas Shift, Ctrl y Alt tienen valores asignados de 1, 2 y 4
(respectivamente), la suma de los cuales es el valor devuelto.
• El valor 10 especifica el número de segundos para que el usuario haga click en el documento.
• El valor True especifica que el parámetro SnapToObjects está habilitado.
• El valor cdrCursorExtPick especifica el icono a utilizar para el cursor.
En el ejemplo anterior, el código finaliza al seleccionar las formas que caigan completamente dentro del área al utilizar
el método Page.SelectShapesFromRectangle.
Uno de los siguientes valores es devuelto:
• 0 — El usuario completó con éxito la selección.
• 1 — El usuario canceló al presionar la tecla Escape.
• 2 — La operación demoró y se agotó el tiempo.
Este método devuelve dos puntos que son interpretados como las esquinas de un rectángulo. Sin embargo,
los dos puntos pueden también ser utilizados como el punto inicial y el punto final de un arrastre de ratón.
Las coordenadas devueltas son relativas al origen de la página y, a menos que sea explícitamente
especificado, están en las mismas unidades que las del documento.
Captura de coordenadas
Cuando se capturan acciones de ratón, o cuando se desarrolla una compleja solución de macro, tal vez quiera
transmutar entre coordenadas de pantalla y coordenadas del documento. Esta conversión se hace con los métodos
ScreenToDocument y DocumentToScreen de la clase Window.
El siguiente ejemplo VBA devuelve las coordenadas de pantalla de un punto en el documento como si éste apareciera
en la pantalla:
Dim screenX As Long, screenY As Long
ActiveDocument.Unit = cdrMillimeter
ActiveWindow.DocumentToScreen 40, 60, screenX, screenY
En ambos ejemplos, las coordenadas convertidas son devueltas en los últimos dos parámetros.
Las coordenadas de pantalla inician en la esquina superior izquierda de la pantalla, de modo que los valores
positivos de y están pantalla abajo, mientras que los valores negativos de y están pantalla arriba.
Se puede probar si un conjunto de coordenadas (es decir, un punto) está dentro, fuera o sobre el contorno de una curva
al utilizar el método Shape.IsOnShape. Para un conjunto de coordenadas de documento, este método devuelve una
de las siguientes cosas:
• cdrInsideShape — si la coordenada está dentro de la forma.
• cdrOutsideShape — si la coordenada está fuera de la forma.
• cdrOnMarginOfShape — si la coordenada está sobre o junto al contorno de la forma.
Por ejemplo, el siguiente código VBA prueba dónde está el punto (4, 6) en relación a la forma activa:
Dim onShape As Long
ActiveDocument.Unit = cdrInch
onShape = ActiveShape.IsOnShape(4, 6)
Organización de Macros
Para hacer que sus soluciones de macro sean fáciles de utilizar, usted puede organizarlas. Aquí tiene algunos consejos:
• Para ordenar sus macros, utilice un módulo de código separado para cada macro y luego agrupe las macros
relacionadas dentro de un solo archivo GMS.
• Para ayudar a los usuarios a encontrar el punto de entrada a una macro, coloque todas las subrutinas públicas
dentro de un solo módulo de código de modo que la macro pueda ser llamada desde el interior de CorelDRAW o
Corel PHOTO-PAINT.
Si lo desea, puede exportar cada característica de espacio de trabajo a un archivo separado. Simplemente
exporte un elemento a la vez para crear series de archivos XSLT.
Cuando exporta atajos de teclado, se exportan todos los atajos de teclado. Si quiere distribuir sólo unos
cuantos atajos, cree un nuevo espacio de trabajo, elimine todos los atajos de teclado en él y luego agregue
solamente los atajos deseados.
Si el nombre de una barra de herramientas entrante es el mismo que el de una barra de herramientas
existente, la barra de herramientas entrante es renombrada.
Si un comando importado llama a una macro desinstalada, ésta no funcionará.
Si lo desea, puede evitar utilizar la palabra clave CreateObject en el ejemplo anterior al importar el tipo de
biblioteca a enfocar y utilizando directamente los tipos de datos.
El objeto Application contiene una colección Documents de todos los objetos abiertos Document (o
“documentos”) en la aplicación. Cuando un documento CorelDRAW es creado o abierto, un objeto correspondiente
Document se añade a la colección Documents para el objeto Application. Cada objeto Document contiene una
colección Pages de todos los objetos Page (o “páginas”) en ese documento. Cada objeto Page contiene una colección
Layers de todos los objetos Layer (o “capas”) sobre esa página. Finalmente, cada objeto Layer contiene una colección
Shapes de todos los objetos Shape (o “formas”) sobre esa capa.
Por otro lado, el modelo de objeto contiene un conjunto de objetos filtro, los cuales proporcionan soporte para
archivos de otras aplicaciones gráficas técnicas. Los filtros de importación están gobernados por la clase Layer,
mientras que los filtros de exportación están gobernados por la clase Document.
Los documentos, páginas, capas, formas y filtros están entre los objetos más importantes en el modelo de objeto
CorelDRAW. El entendimiento de estos objetos — y sus relaciones entre sí — es la clave para la comprensión del
modelo de objeto CorelDRAW.
Esta sección contiene los siguientes temas:
• Trabajo con documentos.
• Trabajo con páginas.
• Trabajo con capas.
• Trabajo con formas.
• Trabajo con filtros de importación y filtros de exportación.
Para una representación visual del modelo de objeto CorelDRAW completo, por favor vea el diagrama del
modelo de objeto CorelDRAW en la siguiente ubicación (donde X: es la unidad donde se instaló el
programa):
• X:\Archivos de programa \Corel\CorelDRAW Graphics Suite X5\
Data\CorelDRAW Object Model Diagram.pdf
Document Método BeginCommandGroup Se combina para crear un “grupo comando” que reduce
y una serie de acciones programadas relacionadas con el
Método EndCommandGroup documento, a un simple paso que se pueda deshacer.
Document Método GetUserClick Devuelve información acerca de una posición del do-
cumento en la que el usuario hace click con el ratón.
View Método Activate Aplica una vista guardada en la ventana del documento.
Para más información, vea “Trabajo con vistas”
en la página 84.
Para información detallada sobre cualquier propiedad, método o evento, vea la sección “Referencia del
Modelo de Objeto” en el archivo de Ayuda de Macros de CorelDRAW.
Para más información sobre actividades relacionadas con documentos, vea los siguientes temas:
• Creación de documentos.
• Apertura de documentos.
• Activación de documentos.
• Ajuste de las propiedades en documentos.
• Presentación de documentos.
• Modificación de documentos.
• Creación de grupos de comando para documentos.
• Guardado de documentos.
• Exportación de archivos desde documentos.
• Publicación de documentos como PDF.
• Impresión de documentos.
• Cierre de documentos.
Archivos de todos los formatos soportados pueden ser importados a CorelDRAW. Los archivos importados
son colocados en capas del documento, así que la información sobre archivos importados es proporcionada
en la sección sobre trabajo con capas (ver “Importación de archivos dentro de capas” en la página 101) en
lugar de estar en esta sección de Trabajo con documentos.
Ambas funciones devuelven una referencia al nuevo documento, de modo que son normalmente utilizadas de la
siguiente manera:
Dim newDoc as Document
Set newDoc = CreateDocument
El nuevo documento se convierte inmediatamente en el documento activo y puede ser referenciado utilizando la
propiedad Application.ActiveDocument. Para más información sobre esta propiedad, vea “Activación de
documentos” en la página 81.
Si lo desea, puede utilizar manejadores de evento para responder a eventos que sean activados al crear un documento:
• AddinHook.New
• Application.DocumentNew
• GlobalMacroStorage.DocumentNew
Apertura de documentos
Para abrir un documento se puede utilizar el método Application.OpenDocument:
Dim doc As Document
Set doc = OpenDocument("C:\graphic1.cdr")
Si lo desea, puede utilizar manejadores de evento para responder a eventos que sean activados al crear un documento:
• AddinHook.New
• Application.DocumentNew
• GlobalMacroStorage.DocumentNew
Activación de documentos
Cada documento abierto en CorelDRAW es un miembro de la colección Application.Documents. Los documentos
en esa colección aparecen en el orden en el cual fueron creados o abiertos.
Para reflejar el orden actual de apilamiento de los documentos en CorelDRAW, se debe utilizar la colección
Application.Windows.
El método Document.Activate activa un documento de modo que éste puede ser referenciado por
ActiveDocument . El siguiente código VBA activa el tercer documento abierto (si tres o más documentos están
abiertos en CorelDRAW):
Documents(3).Activate
Estas propiedades afectan a todos los elementos en su documento, tal como los objetos que usted dibuje.
Para resultados óptimos, elija los ajustes que mejor se adapten a su solución de macro.
Presentación de documentos
CorelDRAW le permite mostrar simultáneamente múltiples ventanas en un solo documento. Por ejemplo, un
documento grande puede ser mostrado con una ventana “zoomeada” en la esquina superior derecha del documento y
otra “zoomeada” en la esquina inferior derecha. Aunque las ventanas individuales pueden ser “zoomeadas” y
paneadas independientemente, el poner la página en una ventana afecta a todas las ventanas.
Al utilizar el Administrador de Vistas, se pueden crear vistas que tengan ajustes individuales de presentación. Al
elegir una vista guardada se muestra la página que concuerde con los ajustes de esa vista.
En VBA, el objeto Window proporciona acceso a las ventanas que contienen cada objeto View (o vista de)
para un documento dado. El objeto Window representa un bastidor, mientras que el objeto View muestra
el documento en el interior de ese bastidor.
Además, al permitirle trabajar con ventanas y vistas, CorelDRAW le permite mostrar documentos al “zoomearlos” y
panearlos.
Trabajando con ventanas
Cada objeto Document tiene una colección Windows para mostrar ese documento. Para alternar entre ventanas,
utilice el método Window.Activate:
ActiveDocument.Windows(2).Activate
La propiedad Document.ActiveWindow proporciona acceso directo a la ventana activa — es decir, la ventana del
documento que está al frente de todas las otras ventanas en CorelDRAW.
La ventana siguiente y la ventana previa para el documento activo son referenciadas en las propiedades
Window.Next y Window.Preview:
ActiveWindow.Next.Activate
Para crear una nueva ventana, utilice el método Window.NewWindow:
ActiveWindow.NewWindow
Para cerrar una ventana (y el documento, si éste tiene sólo una ventana abierta), utilice el método Window.Close:
ActiveWindow.Close
Si lo desea, puede utilizar manejadores de evento para responder a eventos que sean accionados al activar una
ventana:
• Application.WindowActivate
• GlobalMacroStorage.WindowActivate
También puede utilizar manejadores de evento para responder a eventos que sean accionados por la desactivación de
una ventana:
• Application.WindowDeactivate
• GlobalMacroStorage.WindowDeactivate
También se puede crear una vista con ajustes específicos utilizando el método Document.CreateView. El siguiente
código VBA crea un nuevo objeto View que accede a la posición (3, 4) en pulgadas, utiliza un factor de zoom del 95%
y muestra la página 6:
ActiveDocument.Unit = cdrInch
ActiveDocument.CreateView "New View 2", 3, 4, 95, 6
Para aplicar una vista guardada a la ventana activa, se llama al método View.Activate:
ActiveDocument.Views("New View").Activate
Zooming
Para “zoomear” un objeto ActiveView a una cantidad fija, ajuste la propiedad ActiveView.Zoom especificando un
valor doble en porcentaje. Por ejemplo, el siguiente código VBA ajusta el factor de zoom a 200%:
ActiveWindow.ActiveView.Zoom = 200.0
Modificación de documentos
Se puede modificar un documento independientemente si está activo o no.
El modificar un documento inactivo no activa ese documento. Para activar un documento, se debe utilizar
su método Activate, como se explica en “Activación de documentos” en la página 81.
El siguiente código VBA añade una capa llamada “fooLayer” al tercer documento abierto:
Dim doc As Document
Set doc = Documents(3)
doc.ActivePage.CreateLayer "fooLayer”
El siguiente código VBA utiliza la función findDocument() para añadir una capa llamada “fooLayer” al documento
inactivo llamado barDoc.cdr:
Dim doc As Document
Set doc = findDocument("barDoc.cdr")
If Not doc Is Nothing Then doc.ActivePage.CreateLayer "fooLayer"
Guardado de documentos
CorelDRAW ofrece dos métodos para guardar documentos: Document.SaveAs y Document.Save.
El método Document.SaveAs guarda un documento utilizando la ruta y nombre de archivo especificados. Se puede
utilizar este método para guardar un documento no guardado anteriormente o para guardar un documento existente
en un archivo diferente.
Los archivos son exportados en el nivel Document porque el rango de objetos exportados puede extenderse
sobre múltiples capas y múltiples páginas. Sin embargo, los archivos son importados en el nivel Layer
porque cada objeto importado es asignado a una capa específica (vea “Importación de archivos dentro de
capas” en la página 101).
La clase Document tiene tres métodos de exportación de archivos — Export, ExportEx y ExportBitmap — cada
uno de los cuales puede exportar a formatos de bitmap y de vector.
Sin embargo, el código anterior otorga poco control sobre la salida de la imagen. Se obtiene más control al incluir el
objeto StructExportOptions, como en el siguiente código VBA:
Dim expOpts As New StructExportOptions
expOpts.ImageType = cdrCMYKColorImage
expOpts.AntiAliasingType = cdrNormalAntiAliasing
expOpts.AntiAliasingType = cdrNormalAntiAliasing
expOpts.ResolutionX = 72
expOpts.ResolutionY = 72
expOpts.SizeX = 210
expOpts.SizeY = 297
ActiveDocument.Export "C:\ThisPage.eps", cdrTIFF, cdrCurrentPage, expOpts
Un objeto StructPaletteOptions también puede ser incluido en la llamada de la función para formatos de
imagen basados en paleta si usted quiere proporcionar la configuración para generar automáticamente la
paleta.
El siguiente ejemplo VBA otorga más control al usuario al mostrar el cuadro de diálogo Configuración para
Publicar como PDF:
Dim doc As Document
Set doc = ActiveDocument
If doc.PDFSettings.ShowDialog = True Then
doc.PublishToPDF "C:\MyPDF.pdf”
End If
Los perfiles de configuración de PDF pueden ser guardados y cargados utilizando el método
PDFVBASettings.Save y el método PDFVBASettings.Load (respectivamente)
Impresión de documentos
El uso de VBA para imprimir documentos es simple: casi todas las configuraciones que están disponibles en el cuadro
de diálogo Imprimir de CorelDRAW están disponibles en la propiedad Document.PrintSettings. Cuando estas
propiedades son ajustadas, la impresión del documento es simplemente cuestión de llamar al método
Document.PrintOut.
Cada página en el cuadro de diálogo Imprimir tiene una clase correspondiente de modelo de objeto que contiene
todas las configuraciones para esa página. La siguiente tabla enlista estas clases.
General PrintSettings
Preimpresión PrintPrepress
PostScript PrintPostScript
Compuesta PrintOptions
No se pueden ajustar las opciones de diseño de página en VBA. Sin embargo, de ser necesario, se puede abrir
el cuadro de diálogo Imprimir utilizando el método PrintSettings.ShowDialog.
Cierre de documentos
Se puede cerrar un documento llamando al método Document.Close.
El siguiente código VBA cierra el documento activo y activa el documento detrás de él en CorelDRAW:
ActiveDocument.Close
Si el código cierra un documento que no esté activo, el documento referenciado por la propiedad
Application.ActiveDocument no cambia.
Se debe probar explícitamente la propiedad Dirty para un documento y tomar una acción apropiada si ese
documento ha sido modificado.
También se puede cerrar un documento utilizando el método Close del objeto Document en sí (como en
doc.Close).
Si lo desea, puede utilizar manejadores de evento para responder a eventos que sean activados al cerrar un
documento:
• Application.DocumentClose
• Document.Close
• GlobalMacroStorage.DocumentClose
También puede utilizar manejadores de evento para responder a eventos que sean activados cuando el usuario
responda a la solicitud para cerrar un documento:
• Document.QueryClose
• GlobalMacroStorage.QueryDocumentClose
• GlobalMacroStorage.QueryDocumentClose
Application Propiedad ActivePage Proporciona acceso directo a la página activa del documento activo.
Para más información, vea “Activando páginas” en la página 94.
Application Propiedad PageSizes Contiene la colección de tamaños de página definidos para la aplicación.
Para más información, vea “Uso de los tamaños de página definidos”
en la página 96.
Para información detallada sobre cualquier propiedad, método o evento, vea la sección “Referencia del
Modelo de Objeto” en el archivo de Ayuda de Macros en CorelDRAW.
Para más información sobre actividades relacionadas con páginas, vea los siguientes temas:
• Creación de páginas
• Activación de páginas
• Reordenamiento de páginas
• Asignación de tamaño de páginas
• Modificación de páginas
• Eliminación de páginas
Activación de páginas
Cada página es un miembro de la colección Document.Pages para el documento en el cual ésta aparece. Las páginas
en una colección Document.Pages aparecen en el mismo orden en el que aparecen en ese documento — por
ejemplo, la quinta página en el documento activo es ActiveDocument.Pages.Item(5). Si se añaden, reordenan o
borran página, la colección Pages afectada es actualizada inmediatamente para reflejar el nuevo orden de páginas en
ese documento.
Se puede acceder a la página activa de un documento, independientemente si ese documento está activo o no,
utilizando la propiedad ActivePage para ese documento:
Public Function getDocsActivePage(doc As Document) As Page
Set getDocsActivePage = doc.ActivePage
End Function
Se pueden conmutar páginas encontrando la página deseada y luego invocando su método Activate. El siguiente
código VBA activa la página 3 en un documento CorelDRAW:
ActiveDocument.Pages(3).Activate
Si lo desea, puede utilizar manejadores de evento para responder a eventos que sean accionados al activar una página
• Document.PageActivate
También puede utilizar manejadores de evento para responder a eventos que sean accionados al desactivar una
página.
• Document.PageChange
Reordenamiento de páginas
Una página puede ser movida a otra localización en un documento utilizando su método MoveTo. El siguiente
código VBA mueve la página 2 a la posición de la página 4:
ActiveDocument.Pages(2).MoveTo 4
La activación de una página en un documento inactivo no activa ese documento. Para activar un
documento, se debe utilizar su método Activate, como se explica en “Activación de documentos” en la
página 81.
Dimensionamiento de páginas
Se puede especificar el tamaño y orientación de las páginas al especificar el tamaño de página por defecto, y así utilizar
tamaños de página definidos.
Se puede dimensionar una página utilizando su método SetSize, el cual aplica dos valores de tamaño (anchura y
altura) a la página. El siguiente código VBA cambia el tamaño de la página activa en el documento activo a A4:
ActiveDocument.Unit = cdrMillimeter
ActivePage.SetSize 210, 297
ActivePage.Orientation = cdrLandscape
Para el método SetSize, el primer número es siempre la anchura de la página y el segundo número es siempre la
altura. Al cambiar el orden de los dos números se alterna la orientación de la página.
Alternativamente, se puede utilizar la propiedad Document.MasterPage para especificar el tamaño de página por
defecto:
Dim doc As Document
Set doc = ActiveDocument
doc.Unit = cdrMillimeter
doc.MasterPage.SetSize 297, 210
Los tamaños de página pueden ser especificados por nombre. Por ejemplo, el siguiente código VBA obtiene el objeto
PageName llamado “Business Card”:
Dim thisSize As PageSize
Set thisSize = Application.PageSizes("Business Card")
Se pueden obtener las dimensiones actuales de un objeto PageSize utilizando sus propiedades Width y Height. El
siguiente código VBA recupera la anchura y altura (en milímetros) del tercer objeto PageSize:
Dim pageWidth As Double, pageHeight As Double
Application.Unit = cdrMillimeter
pageWidth = Application.PageSizes(3).Width
pageHeight = Application.PageSizes(3).Height
Aunque cada objeto PageSize proporciona un método Delete, este método puede ser utilizado sólo en tamaños de
página definidos por el usuario. Se puede determinar si un objeto PageSize está definido por el usuario probando su
propiedad Booleana BuiltIn:
Public Sub deletePageSize(thisSize As PageSize)
If Not thisSize.BuiltIn Then thisSize.Delete
End Sub
Se puede especificar una unidad de medida particular para un tamaño de página al ajustar las unidades del
documento antes de obtener su anchura y altura.
La activación de una página en un documento inactivo no activa ese documento. Para activar un
documento, se debe utilizar su método Activate, como se explica en “Activación de documentos” en la
página 81.
Al referenciar explícitamente la página que se quiera modificar, se pueden hacer esos cambios sin activar la página. El
siguiente código VBA elimina todas las formas de la página 3 del documento activo sin activar esa página:
Public Sub DeleteShapesFromPage3()
Dim doc As Document
Set doc = ActiveDocument
doc.Pages(3).Shapes.All.Delete
End Sub
Eliminación de páginas
Se puede eliminar una página utilizando su método Delete, como en el siguiente ejemplo VBA:
ActivePage.Delete
El método Page.Delete elimina todas las formas de esa página, elimina la página de la colección Pages para ese
documento y luego actualiza esa colección para reflejar el cambio.
Si se quiere eliminar más de una página, se debe utilizar el método Delete para cada página no deseada. Sin embargo,
no se pueden borrar todas las páginas en un documento. Se puede evitar tratar de borrar la última página restante en
un documento utilizando el siguiente código VBA:
If ActiveDocument.Pages.Count > 1 Then ActivePage.Delete
Si lo desea, puede utilizar manejadores de evento para responder a eventos que sean activados al borrar una página:
• Document.PageDelete
Document Propiedad ActiveLayer Proporciona acceso directo a la capa activa del documento.
Para más información, vea “Activación de capas” en la página 99.
Page Propiedad ActiveLayer Proporciona acceso directo a la capa activa de una página.
Para más información, vea “Activación de capas” en la página 99.
Page Método CreateLayer Inserta una nueva capa en la parte superior de la lista de capas no maestras.
Para más información, vea “Creación de capas” en la página 99.
Para información detallada sobre cualquier propiedad, método o evento, vea la sección “Referencia del
Modelo de Objeto” en el archivo de Ayuda de Macros en CorelDRAW.
Para más información sobre actividades relacionadas con capas, vea los siguientes temas:
• Creación de capas.
• Activación de capas.
• Bloqueo y ocultamiento de capas.
• Reordenamiento de capas.
• Renombramiento de capas.
• Importación de archivos dentro de capas.
• Eliminación de capas.
Creación de capas
Se puede crear una capa utilizando el método Page.CreateLayer. Al crear una capa se inserta una nueva capa en la
parte superior de la lista de capas no maestras.
El siguiente código VBA crea una nueva capa llamada “My New Layer”:
ActivePage.CreateLayer "My New Layer”
Si lo desea, puede utilizar manejadores de evento para responder a eventos que sean accionados al activar una capa:
• Document.LayerCreate
Activación de capas
Cada capa es un miembro de la colección Page.Layers para la página en la cual aparece. Las capas en una colección
Page.Layers aparecen en el mismo orden en el que aparecen en esa página — la primer capa es la que está en la cima
de la “pila”, y la última capa es la que está en el fondo. Si se añaden, reordenan o eliminan capas, la colección
Page.Layers afectada se actualiza inmediatamente para reflejar el nuevo orden de capas en esa página.
La propiedad Document.ActiveLayer proporciona acceso directo a la capa activa de un documento, mientras que la
propiedad Page.ActiveLayer proporciona acceso directo a la capa activa de una página.
Se puede activar una capa utilizando el método Layer.Activate:
ActivePage.Layers("Layer 1").Activate
El activar una capa bloqueada no la desbloquea. Similarmente, si se activa una capa oculta, ésta no se hace
visible. Para más información sobre desbloqueo y exposición de capas, vea “Bloqueo y ocultamiento de
capas” en la página 100.
El resultado de cualquier cambio para estas propiedades se muestra inmediatamente en el Administrador de Objetos.
El ejemplo anterior afecta sólo a la capa activa. Se puede acceder a las configuraciones de capa para una página dada al
especificar una página de la colección Document.Pages, o al hacer referencia a la propiedad
Document.ActivePage. Para hacer los cambios en todas las páginas de un documento, se utiliza la propiedad
Document.MasterPage:
ActiveDocument.MasterPage.Layers("Layer 1").Visible = True
Para más información sobre trabajo con páginas, vea “Trabajando con páginas” en la página 92.
Reordenamiento de capas
Se pueden reordenar las capas utilizando los siguientes dos métodos de la clase Layer: MoveAbove y MoveBelow.
Ambos métodos mueven la capa especificada hacia arriba o hacia abajo de la capa que esté referenciada como un
parámetro.
El siguiente código VBA mueve la capa llamada “Layer 1” hacia abajo de la capa “Guides”:
Dim pageLayers As Layers
Set pageLayers = ActivePage.Layers
pageLayers("Layer 1").MoveBelow pageLayers("Guides")
El cambio se refleja inmediatamente en el Administrador de Objetos (aunque puede estar aparentemente sólo en el
Administrador de Capas).
Renombramiento de capas
Se puede renombrar una capa al editar su propiedad Name.
El siguiente código VBA renombra “Layer 1" como “Layer with a New Name”:
ActivePage.Layers("Layer 1").Name = "Layer with a New Name"
Los archivos son importados en el nivel Layer porque cada objeto importado es asignado a una capa
especificada de una página especificada. Sin embargo, los archivos son exportados en el nivel Document
porque el rango de objetos exportados puede extenderse sobre múltiples capas y múltiples páginas (vea
“Exportación de archivos desde documentos” en la página 86).
La clase Layer tiene dos métodos para importar archivos: Import e ImportEx.
La amplia selección de formatos de archivo que son soportados por CorelDRAW se debe al vasto número de
filtros que están disponibles para la aplicación. Cada filtro le permite trabajar con los archivos de otras
aplicaciones gráficas. Para aprender más sobre el trabajo con estos filtros, vea “Trabajo con filtros de
importación y exportación” en la página 138.
Además, cada página del documento tiene una colección Shapes, la cual contiene todas las colecciones
Layer.Shapes para esa página. La primer forma en la colección Page.Shapes es la que está hasta el tope de
esa página, y la última forma es la que está hasta el fondo.
CorelDRAW proporciona un número de propiedades, métodos y eventos para trabajar con formas, entre los cuales se
enlistan los más útiles en la siguiente tabla:
Application Método CreateCurve Crea una línea o una curva “en memoria”.
Para más información vea “Creación de líneas y
curvas” en la página 114.
Color Método CopyAssign Copia un color del relleno o contorno de una forma
a otra.
Document Método Selection Devuelve, como un solo objeto Shape, todos los
objetos seleccionados en un documento.
Fill Propiedad Fountain Especifica las propiedades de relleno degradado de una forma.
Para más información vea “Aplicación de rellenos
degradados” en la página 130.
Fill Propiedad Hatch Especifica las propiedades de relleno de malla de una forma.
Para más información vea “Aplicación de rellenos
de malla” en la página 132.
Fill Propiedad Pattern Especifica las propiedades de relleno de patrón de una forma.
Para más información vea “Aplicación de rellenos
de patrón” en la página 131.
Fill Propiedad PostScriptFill Especifica las propiedades de relleno PostScript de una forma.
Para más información vea “Aplicación de rellenos
PostScript” en la página 132.
Fill Propiedad Texture Especifica las propiedades de relleno de textura de una forma.
Para más información vea “Aplicación de rellenos
de textura” en la página 132.
Fill Propiedad Type Especifica el tipo de relleno que se aplica a una forma.
Para más información vea “Coloreando formas”
en la página 129.
Fill Propiedad UniformColor Especifica las propiedades de relleno uniforme de una forma.
Para más información vea “Aplicación de rellenos
uniformes” en la página 130.
Layer Método CreateCurve Crea, en la capa especificada, una línea o una curva
que es creada “en memoria” utilizando el método
Application.CreateCurve
Shapes Método FindShape Devuelve una sola forma que tiene las propiedades
especificadas.
Shapes Método FindShapes Devuelve, como un rango de formas, todas las formas
que tienen las propiedades especificadas.
Para información detallada sobre cualquier propiedad, método o evento, vea la sección “Referencia del
Modelo de Objeto” en el archivo de Ayuda de Macros en CorelDRAW.
Para más información sobre actividades relacionadas con formas, vea los siguientes temas:
• Creación de formas.
• Determinación del tipo de forma.
• Selección de formas.
• Duplicación de formas.
• Transformación de formas.
• Coloración de formas.
• Aplicación de efectos a formas.
• Búsqueda de formas.
• Eliminación de formas.
CorelDRAW soporta formas adicionales que no se discuten en esta sección, tales como polígonos (u objetos
Polygon) y formas personalizadas (u objetos CustomShape).
Las formas personalizadas que están soportadas en CorelDRAW incluyen tablas (u objetos TableShape).
Las formas se miden en unidades del documento. Se puede especificar la unidad de medida de un
documento utilizando la propiedad Document.Unit, como se explica en “Configuración de las
propiedades del documento” en la página 82.
Si lo desea, puede utilizar manejadores de evento para responder a eventos que sean activados al crear una forma:
• AddinHook.ShapeCreated
• Document.ShapeCreate
Creación de rectángulos
Se pueden añadir rectángulos (u objetos Rectangle) a sus documentos. CorelDRAW ofrece tres métodos para crear
rectángulos — Layer.CreateRectangle, Layer.CreateRectangle2 y Layer.CreateRectangleRect — cada uno de
los cuales devuelve una referencia al nuevo objeto Shape. Estos métodos difieren únicamente en los parámetros que
toman, de modo que se puede elegir el método que mejor se ajuste a la solución de macro.
También se pueden utilizar estos métodos de creación de rectángulos para crear cuadrados.
El método CreateRectangle crea un rectángulo utilizando cuatro parámetros que especifican lo siguiente:
• La distancia entre los lados izquierdo, superior, derecho e inferior del rectángulo (en ese orden).
• Los bordes correspondientes del marco de la página.
El siguiente ejemplo VBA utiliza el método CreateRectangle para crear un rectángulo de 2" × 1" que está
posicionado 6" arriba del fondo de la página y 3" a la derecha del lado izquierdo de la página:
Dim sh As Shape
ActiveDocument.Unit = cdrInch
Set sh = ActiveLayer.CreateRectangle(3, 7, 6, 5)
El método CreateRectangle2 crea un rectángulo basado en las coordenadas de su esquina inferior izquierda, su
anchura y su altura.
Finalmente, el método CreateRectangleRect crea un rectángulo basado en su caja delimitadora (u objeto Rect).
Estos tres métodos de creación de rectángulos proporcionan parámetros opcionales para especificar la redondez de
esquinas.
El método CreateRectangle especifica la redondez de esquinas utilizando parámetros para las esquinas superior
izquierda, superior derecha, inferior izquierda e inferior derecha (en ese orden). Estos parámetros toman valores
enteros (los cuales por defecto van desde 0 hasta 100) que definen el radio de las cuatro esquinas como un porcentaje
del número total de la mitad de la longitud del lado más corto.
El siguiente ejemplo VBA recrea el rectángulo de 2" × 1" de los ejemplos previos. Sin embargo, esta vez, el radio de
las cuatro esquinas está ajustado a 100%, 75%, 50% y 0% de la mitad de la longitud del lado más corto (es decir, a
0.5", 0.375", 0.25" y 0", y un vértice):
Dim sh As Shape
ActiveDocument.Unit = cdrInch
Set sh = ActiveLayer.CreateRectangle(3, 7, 6, 5, 100, 75, 50, 0)
El método CreateRectangle2 y el método CreateRectangleRect definen el radio de las esquinas en el mismo orden
que el método CreateRectangle (es decir, superior izquierda, superior derecha, inferior izquierda e inferior derecha).
Sin embargo, CreateRectangle2 y CreateRectangleRect toman valores dobles (de punto flotante) que miden el
radio de las esquinas en unidades del documento.
Cuando se utilice CreateRectangle2 o CreateRectangle, se debe limitar el tamaño del radio de la esquina
a menos de la mitad de la longitud del lado más corto del rectángulo.
El siguiente ejemplo VBA utiliza el método CreateRectangle2 para crear el mismo rectángulo de esquinas
redondeadas del ejemplo anterior:
Dim sh As Shape
ActiveDocument.Unit = cdrInch
ActiveDocument.ReferencePoint = cdrBottomLeft
Set sh = ActiveLayer.CreateRectangle2(3, 6, 2, 1, 0.5, 0.375, 0.25, _
0)
Creación de elipses
Se pueden añadir elipses (u objetos Ellipse) a sus documentos. CorelDRAW ofrece tres métodos para la creación de
elipses — Layer.CreateEllipse, Layer.CreateEllipse2 y Layer.CreateEllipseRect — cada uno de los cuales
devuelve una referencia al nuevo objeto Shape. Estos métodos difieren únicamente en los parámetros que toman, de
modo que se puede elegir el método que mejor se ajuste a la solución de macro.
También se pueden utilizar estos métodos de creación de elipses para crear círculos, arcos y rebanadas de
pastel.
El método CreateEllipse2 crea una elipse basada en su punto central, su radio horizontal y su radio vertical. (Si sólo
se especifica un radio, se crea un círculo).
El siguiente ejemplo VBA utiliza el método CreateEllipse2 para crear una elipse:
Dim sh As Shape
ActiveDocument.Unit = cdrMillimeter
Set sh = ActiveLayer.CreateEllipse2(100, 125, 50, 25)
El siguiente ejemplo VBA utiliza el método CreateEllipse2 para crear el mismo círculo de 50 milímetros que el
ejemplo CreateEllipse:
Dim sh As Shape
ActiveDocument.Unit = cdrMillimeter
Set sh = ActiveLayer.CreateEllipse2(100, 125, 25)
Finalmente, el método CreateEllipseRect crea una elipse basada en su caja delimitadora (u objeto Rect).
Estos tres métodos para la creación de elipses proporcionan parámetros opcionales para crear arcos o rebanadas de
pastel. Los parámetros StartAngle y EndAngle — los cuales son valores dobles que se miden con cero estando
horizontalmente a la derecha de la página y con valores positivos siendo graduados desde cero y moviéndose en
contra del sentido del reloj — son utilizados para definir el ángulo inicial y el ángulo final de la forma
(respectivamente). Por otro lado, el parámetro Pie — el cual es un valor Booleano — define si la forma es un arco
(False) o una rebanada de pastel (True).
El siguiente código VBA utiliza el método CreateEllipse para crear una figura en forma de “C”:
Dim sh As Shape
ActiveDocument.Unit = cdrMillimeter
Set sh = ActiveLayer.CreateEllipse(75, 150, 125, 100, 60, 290, False)
La clase Layer proporciona tres métodos adicionales que actúan como atajos para crear una línea básica o una curva
básica que tenga un solo segmento o un solo subtrayecto.
• Layer.CreateLineSegment — crea una línea básica basada en el punto inicial y el punto final dados.
• Layer.CreateCurveSegment — crea una línea básica basada en el punto inicial y el punto final dados y,
opcionalmente, en las longitudes y ángulos de los manejadores de control inicial y final de la curva.
• Layer.CreateCurveSegment2 — crea una curva básica basada en el punto inicial y el punto final dados y en las
posiciones dadas inicial y final de los manejadores de control de la curva.
Ambos métodos requieren especificar la posición y el contenido del objeto de texto artístico.
Opcionalmente, ambos métodos le permiten ajustar ciertos atributos de texto tales como estilo de fuente,
tamaño de fuente, formato y alineación. Además, ambos métodos devuelven una referencia al nuevo objeto
Shape.
El siguiente código VBA utiliza el método CreateArtisticText para crear un objeto básico de texto artístico que
coloca las palabras “Hola Mundo” en la posición especificada:
Dim sh As Shape
ActiveDocument.Unit = cdrInch
Set sh = ActiveLayer.CreateArtisticText(1, 4, "Hola Mundo")
Se puede ajustar el texto artístico a un trayecto utilizando el método Text.FitTextToPath, el cual simplemente
adhiere el texto al contorno de la forma de manera que el texto fluye a lo largo del trayecto de esa forma.
El siguiente código VBA crea un nuevo objeto de texto artístico y lo adhiere a la forma seleccionada:
Dim sh As Shape, sPath As Shape
ActiveDocument.Unit = cdrInch
Set sPath = ActiveShape
Set sh = ActiveLayer.CreateArtisticText(1, 4, “Hola Mundo")
sh.Text.FitToPath sPath
Para crear un objeto de texto de párrafo, se puede utilizar uno de los siguientes métodos:
• Layer.CreateParagraphText — crea texto de párrafo básico.
• Layer.CreateParagraphTextWide — crea texto de párrafo que está en formato Unicode.
Ambos métodos requieren especificar el tamaño del marco de texto de párrafo ajustando la posición de sus
lados izquierdo, superior, derecho e inferior (en ese orden) con respecto al borde de la página.
Opcionalmente, ambos métodos le permiten especificar el texto deseado y ajustar ciertos atributos de texto
tales como estilo de fuente, tamaño de fuente, formato y alineación. Además, ambos métodos devuelven
una referencia al nuevo objeto Shape.
Se puede dar formato a texto de párrafo existente utilizando rangos de texto (u objetos TextRange). CorelDRAW
manipula los rangos de texto en dos formas, en las cuales se involucran marcos (u objetos TextFrame):
• Método “marcos” — La propiedad TextFrames representa una serie de marcos de texto, cada uno de los cuales
tiene su propio rango de texto.
• Método “historia” — La propiedad Text.Story representa un rango de texto que incluye todo el texto en una serie
de marcos de texto.
Un rango de texto puede ser tratado como un único bloque de texto, de tal manera que cualquier cambio a las
propiedades de texto (tal como estilo de fuente y tamaño de fuente) son aplicadas a todo el texto en ese rango de texto.
Alternativamente, un rango de texto puede ser descompuesto en los siguientes rangos de texto más pequeños:
• Columnas (u objetos TextColumns).
• Párrafos (u objetos TextParagraphs).
Líneas (u objetos TextLines).
• Palabras (u objetos TextWords).
• Caracteres (u objetos TextCharacters).
El modelo de objeto CorelDRAW soporta todas las opciones de formato de párrafo y formato de caracteres
que se proporcionan con la aplicación.
El siguiente código VBA da formato al rango de texto especificado utilizando la propiedad TextStory. El primer
párrafo de la historia es cambiado a un estilo “título” y el segundo y tercer párrafos a un estilo “cuerpo del texto”:
Dim txt As TextRange
' Dar formato al primer párrafo
Set txt = ActiveShape.Text.Story.Paragraphs(1)
txt.ChangeCase cdrTextUpperCase
txt.Font = "Verdana”
txt.Size = 18
txt.Bold = True
' Dar formato al segundo y tercer párrafos
Set txt = ActiveShape.Text.Story.Paragraphs(2, 2)
txt.Font = "Times New Roman”
txt.Size = 12
txt.Style = cdrNormalFontStyle
Se puede colocar el texto seleccionado dentro de formas cerradas utilizando el método Shape.PlaceTextInside.
Creación de símbolos
Un símbolo (u objeto Symbol) es un elemento gráfico reutilizable que está definido en una biblioteca de símbolos. El
uso de símbolos en los documentos proporciona los siguientes beneficios:
• Tamaño de archivo más pequeño — Cada símbolo se define sólo una vez, independientemente de cuántas
instancias actuales de ese símbolo aparezcan en el documento.
• Incremento de la productividad — Cualquier cambio hecho a la definición de un símbolo se propaga
automáticamente a todas las instancias de ese símbolo en el documento.
• Mejoramiento del flujo de trabajo — Las bibliotecas de símbolos son una manera conveniente de almacenar y
reutilizar elementos gráficos comunes.
Las bibliotecas de símbolos vienen en dos variedades: externas e internas.
Las bibliotecas externas de símbolos utilizan la extensión de nombre de archivo CSL y contienen definiciones de
símbolos que deben ser añadidas manualmente al espacio de trabajo en el nivel de la aplicación. No se puede
modificar un símbolo que está definido en una biblioteca externa a menos que se abra el archivo de la biblioteca
externa asociada (CSL); no es suficiente importar el archivo como una biblioteca para poder permitirle modificar su
contenido
Las bibliotecas externas de símbolos deben ser publicadas en una ubicación en la que todos los usuarios
puedan acceder. Una unidad vinculada en común es una buena solución, pero una red interna empresarial es
aún mejor. Sin embargo, si la seguridad de los símbolos no es importante, la mejor solución es un sitio de
Internet de la empresa.
Las bibliotecas externas de símbolos existen en el nivel documento. La definición de un nuevo símbolo en un
documento — o la adición de una instancia de un símbolo de biblioteca externa al documento — automáticamente
agrega ese símbolo a la biblioteca interna de ese documento. Por esta razón, cada documento tiene su propia
biblioteca interna de símbolos única.
Al insertar una instancia de un símbolo desde una biblioteca externa de símbolos se crea un vínculo a la
definición de ese símbolo en la biblioteca externa de símbolos. Si, en cualquier punto, el documento no
puede tener acceso a la biblioteca externa de símbolos, la definición del símbolo en la biblioteca interna de
símbolos para ese documento es utilizada en su lugar.
La propiedad Application.SymbolLibraries contiene la colección de todas las bibliotecas externas de símbolos (u
objetos SymbolLibrary) que están disponibles para la aplicación; la propiedad DocumentSymbolLibrary
devuelve sólo la biblioteca interna de símbolos para ese documento. La propiedad SymbolLibrary.Symbols
contiene la colección de todas las definiciones de símbolo (u objetos SymbolDefinition) en esa biblioteca de
símbolos. Un objeto SymbolDefinition es también devuelto por la propiedad Symbol.Definition; por ello, se
puede modificar la definición de un símbolo utilizando las variadas propiedades y métodos de la clase
SymbolDefinition.
Para eliminar una definición de símbolo de la biblioteca interna de símbolos de un documento, se deben
eliminar todas las instancias del símbolo desde el documento y luego ejecutar el método
SymbolLibrary.PurgeUnusedSymbols. El simple hecho de eliminar todas las instancias de un símbolo de
un documento no implica que se elimine automáticamente su definición de símbolo de la biblioteca interna
de símbolos de ese documento.
Un símbolo puede contener (o “anidar”) otros símbolos. Un símbolo en la cima del nivel puede contener símbolos, y
cada uno de esos símbolos pueden contener un símbolo, y así sucesivamente. En el modelo de objeto CorelDRAW, la
propiedad SymbolDefinition.NestedSymbols devuelve (como un objeto SymbolDefinitions) la colección de
símbolos anidados de una definición de símbolo. Mientras que no haya restricción de cuántos niveles de anidación
puedan ser creados, el símbolo no puede ser suministrado sin acceder a su definición de símbolo (ya sea externo o
interno). Por otro lado, incluso si el primer y segundo niveles de anidación de un símbolo están suministrados
correctamente, un símbolo en el tercer nivel de anidación puede no ser suministrado correctamente sin acceder a su
definición de símbolo requerida.
Selección de formas
En CorelDRAW, cada forma es un miembro de la colección Layer.Shapes de la capa en la que aparece. Las formas en
una colección Layer.Shapes aparecen en el mismo orden en el que aparecen sobre la capa — la primer forma es la que
está en la cima de la “pila”, y la última forma es la que está en el fondo. Si se añaden, reordenan o eliminan formas, la
colección Layer.Shapes afectada se actualiza inmediatamente para reflejar el nuevo orden de formas de esa capa.
Además, cada página del documento tiene una colección Shapes, la cual contiene todas las colecciones
Layer.Shapes de esa página. La primer forma en una colección Page.Shapes es la que está hasta la cima de
esa página, y la última forma en la que está hasta el fondo.
Si se desea acceder a formas individuales, pueden seleccionarse. Cuando se seleccionan formas, se crea una “selección”
que contiene sólo esas formas.
La propiedad Shape.Selected toma un valor Booleano que indica si está seleccionada una forma: True si la forma
está seleccionada, False si no lo está. Se puede seleccionar una forma cambiando el valor de su propiedad Selected a
True; esta técnica agrega la forma a la selección actual — es decir, en lugar de que se cree una nueva selección que
contenga sólo esa forma.
Si desea crear una nueva selección de una forma — es decir, seleccionando una forma especificada y deseleccionando
cualquier otra forma(s) seleccionada(s) — se puede utilizar el método Shape.CreateSelection, como el en siguiente
ejemplo VBA:
Dim sh As Shape
Set sh = ActivePage.Shapes(1)
If sh.Selected = False Then sh.CreateSelection
Después de que se utilice el comando ActiveSelectionRange para crear una copia de la selección del documento
actual, se puede acceder subsecuentemente al objeto ShapeRange devuelto para acceder a cualquiera de sus formas.
Incluso se pueden agregar formas a o eliminar formas del objeto ShapeRange devuelto. Luego se puede utilizar el
método ShapeRange.CreateSelection si se desea reemplazar la selección actual con el objeto ShapeRange
modificado.
El siguiente código VBA crea un objeto ShapeRange de la selección del documento actual, elimina la primera y
segunda formas de ese rango de formas y luego reemplaza la selección original con este objeto ShapeRange
modificado:
Dim shRange As ShapeRange
Set shRange = ActiveSelectionRange
shRange.Remove 1
shRange.Remove 2
shRange.CreateSelection
Si se quiere agregar un objeto ShapeRange especificado a la selección actual (en lugar de utilizarlo para
reemplazar la selección actual), se puede utilizar el método ShapeRange.AddToSelection.
Aquí tenemos una muestra de código VBA para acceder a las formas en un rango de selección:
Dim sRange As ShapeRange, sh As Shape
Set sRange = ActiveSelectionRange
For Each sh In sRange
' Hacer algo con la forma, sh
Next sh
Deseleccionando formas
Se puede deseleccionar cualquier forma cambiando el valor de su propiedad Shape.Selected a False.
Se pueden deseleccionar todas las formas utilizando el método Document.ClearSelection. El siguiente código VBA
utiliza el método ClearSelection para deseleccionar todas las formas en el documento activo:
ActiveDocument.ClearSelection
Si lo desea, puede utilizar manejadores de evento para responder a eventos que sea accionados al deseleccionar una
forma:
• Document.ShapeChange
También puede utilizar manejadores de evento para responder a eventos que sea accionados al desactivar una
selección:
• Application.SelectionChange
• Document.SelectionChange
• GlobalMacroStorage.SelectionChange
El método Duplicate proporciona dos parámetros opcionales, OffsetX y OffsetY, los cuales contrabalancean al
duplicado del original (horizontal y verticalmente, respectivamente). El siguiente código VBA posiciona el duplicado
dos pulgadas a la derecha y una pulgada hacia abajo del original:
ActiveDocument.Unit = cdrInch
ActiveSelection.Duplicate 2, 1
Transformación de formas
Se pueden transformar formas de diversas maneras, tal como se explica en los siguientes temas:
• Dimensionamiento de formas.
• Estiramiento de formas.
• Sesgamiento de formas.
• Rotación de formas.
• Posicionamiento de formas.
Si lo desea, puede utilizar manejadores de evento para responder a eventos que sean accionados al transformar una
forma:
• Document.ShapeTransform
Dimensionamiento de formas
Se puede devolver la anchura y altura de una forma (en unidades del documento) utilizando las propiedades
Shape.SizeWidth y Shape.SizeHeight, como en el siguiente ejemplo VBA:
Dim width As Double, height As Double
ActiveDocument.Unit = cdrMillimeter
width = ActiveShape.SizeWidth
height = ActiveShape.SizeHeight
También se pueden utilizar las propiedades Shape.SizeWidth y Shape.SizeHeight para redimensionar una forma
existente especificando nuevos valores para esas propiedades. El siguiente ejemplo VBA utiliza estas propiedades
para ajustar el tamaño de la forma activa a una anchura de 50 milímetros y a una altura de 70 milímetros:
ActiveDocument.Unit = cdrMillimeter
ActiveShape.SizeWidth = 50
ActiveShape.SizeHeight = 70
Se puede devolver tanto la anchura como la altura de una forma (en unidades del documento) utilizando el método
Shape.GetSize, como en el siguiente ejemplo VBA:
Dim width As Double, height As Double
ActiveDocument.Unit = cdrMillimeter
ActiveShape.GetSize width, height
También se puede redimensionar una forma utilizando el método Shape.SetSizeEx. Además de la nueva anchura y
la nueva altura de la forma, este método toma un punto de referencia para el redimensionamiento (en lugar de utilizar
el punto central de la forma). El siguiente código VBA utiliza el método SetSizeEx para redimensionar la selección
actual a 10 pulgadas de ancho por 8 pulgadas de alto tomando como referencia el punto (6, 5) en el documento:
ActiveDocument.Unit = cdrInch
ActiveSelection.SetSizeEx 6, 5, 10, 8
Si desea considerar el contorno de una forma dentro de la cantidad cuando se devuelva el tamaño de esa forma, se
debe utilizar el método Shape.GetBoundingBox. La caja delimitadora de una forma circunda tanto a la forma
como a su contorno: sin embargo, las dimensiones actuales de una forma especifican su anchura y altura
independientemente del tamaño de su contorno. El siguiente ejemplo VBA utiliza el método GetBoundingBox
para devolver el tamaño de la forma activa:
Dim width As Double, height As Double
Dim posX As Double, posY As Double
ActiveDocument.Unit = cdrInch
ActiveDocument.ReferencePoint = cdrBottomLeft
ActiveShape.GetBoundingBox posX, posY, width, height, True
El método Shape.GetBoundingBox toma parámetros que especifican la posición de la esquina inferior izquierda de
la forma, la anchura de la forma y la altura de la forma. El parámetro final es un valor Booleano que indica si se incluye
(True) o se excluye (False) el contorno de la forma. El método Shape.SetBoundingBox le permite ajustar el tamaño
de una forma especificando el tamaño de su caja delimitadora; sin embargo, este método carece del parámetro para
especificar si se incluye el contorno en el nuevo tamaño.
Estiramiento de formas
Se puede estirar una forma (o escalarla estirándola proporcionalmente) al utilizar el método Shape.Stretch o el
método Shape.StretchEx. Ambos métodos toman un valor decimal del estiramiento, donde 1 es 100% (o sin
cambio); no se puede utilizar cero, más bien se debe utilizar un valor muy pequeño en su lugar.
El siguiente código VBA utiliza el método Shape.Stretch para estirar la selección a la mitad de su altura actual y el
doble de su anchura, alrededor del centro del borde inferior de su caja delimitadora:
ActiveDocument.ReferencePoint = cdrBottomMiddle
ActiveSelection.Stretch 2, 0.5
Si desea especificar el punto de referencia en torno al cual se ejecute el estiramiento, se puede utilizar el método
Shape.StretchEx. El siguiente código VBA ejecuta el mismo estiramiento que el código anterior, pero en torno al
punto (4, 5) de la página (en pulgadas):
ActiveDocument.Unit = cdrInch
ActiveSelection.StretchEx 4, 5, 2, 0.5
Se puede determinar el centro de rotación de una forma devolviendo los valores de sus propiedades
Shape.RotationCenterX y Shape.RotationCenterY. Al cambiar estos valores se mueve el centro de
rotación de esa forma.
El siguiente código VBA utiliza el método Shape.Skew para sesgar la selección (en torno a su centro de rotación) 30°
horizontalmente y 15° verticalmente:
ActiveSelection.Skew 30, 15
Rotación de formas
Se puede rotar una forma utilizando el método Shape.Rotate o el método Shape.RotateEx. Estos métodos rotan la
forma de acuerdo al ángulo dado (en grados). Sin embargo, la diferencia entre estos métodos es el punto en torno al
cual se ejecuta la rotación: Rotate utiliza el centro de rotación de la forma, mientras que RotateEx utiliza un punto
de referencia especificado.
Se puede determinar el centro de rotación de una forma devolviendo los valores de sus propiedades
Shape.RotationCenterX y Shape.RotationCenterY. Al cambiar estos valores se mueve el centro de
rotación de esa forma.
El siguiente código VBA utiliza el método Shape.Rotate para rotar la selección (en torno a su centro de rotación)
30°:
ActiveSelection.Rotate 30
El siguiente código VBA utiliza el método Shape.RotateEx para rotar cada forma seleccionada 15° en sentido de las
manecillas del reloj en torno a su esquina inferior derecha:
Dim sh As Shape
ActiveDocument.ReferencePoint = cdrBottomRight
For Each sh In ActiveSelection.Shapes
sh.RotateEx -15, sh.PositionX, sh.PositionY
Next sh
También se pueden utilizar las propiedades Shape.PositionX y Shape.PositionY para ajustar la posición horizontal
y vertical de una forma (respectivamente), en consecuencia moviendo esa forma a la posición especificada.
Alternativamente, se puede utilizar el método Shape.SetPosition para mover una forma a la posición horizontal y
vertical específica, o se puede utilizar el método Shape.SetPositionEx para mover la forma a un punto especificado.
Se pueden utilizar los métodos Shape.SetSizeEx y Shape.SetBoundingBox para ajustar la posición de una
forma. Para más información sobre estos métodos, vea “Dimensionamiento de formas” en la página 125.
El siguiente código VBA utiliza el método Shape.SetPosition para ajustar la posición de la esquina inferior derecha
de cada forma seleccionada en el documento activo a (3, 2) en pulgadas:
Dim sh As Shape
ActiveDocument.Unit = cdrInch
ActiveDocument.ReferencePoint = cdrBottomRight
For Each sh In ActiveSelection.Shapes
sh.SetPosition 3, 2
Next sh
Si lo desea, puede utilizar manejadores de evento para responder a eventos que sean accionados al posicionar una forma:
• Document.ShapeMove
Coloración de formas
Se le puede añadir color a una forma aplicándole un relleno (u objeto Fill). El tipo relleno de una forma es registrado
por la propiedad Fill.Type como una de las siguientes constantes para la enumeración cdrFillType:
• cdrUniformFill — relleno uniforme.
• cdrFountainFill — relleno degradado.
• cdrPatternFill — relleno de patrón.
• cdrTextureFill — relleno de textura.
• cdrPostScriptFill — relleno PostScript.
• cdrHatchFill — relleno de malla.
• cdrNoFill — sin relleno
No se puede cambiar el tipo de relleno de una forma modificando su propiedad Fill.Type. En vez de eso, se
debe utilizar el método Fill.Apply...Fill apropiado, como se describe en las subsecciones siguientes.
También se le puede añadir color a una forma aplicándole un contorno (u objeto Outline).
Por otro lado, el modelo de objeto CorelDRAW proporciona una variedad de propiedades y métodos para trabajar
con los colores (u objetos Color) que se aplican a las formas.
Para información sobre aplicación de rellenos y contornos y sobre el trabajo con colores, vea las siguientes subsecciones:
• Aplicación de rellenos uniformes.
• Aplicación de rellenos degradados.
• Aplicación de rellenos de patrón.
• Aplicación de rellenos de textura.
• Aplicación de rellenos PostScript.
• Aplicación de rellenos de malla.
• Aplicación de contornos.
• Trabajo con color.
En sus macros CorelDRAW, usted puede incluir rastreos que busquen formas que tengan propiedades de
relleno, contorno o color especificas. Para información, vea “Incluyendo rastreos en macros” en el archivo de
Ayuda de Macros de CorelDRAW.
Se le puede añadir un color a un relleno degradado utilizando el método FountainColors.Add. Las posiciones del
color son valores enteros en porcentaje, donde 0% es la posición del color inicial y 100% es la posición del color final.
El siguiente ejemplo VBA agrega un color verde al relleno degradado en la posición cercana a un tercio (33%) desde
el color rojo ya existente:
Dim fFill As FountainFill
Set fFill = ActiveShape.Fill.Fountain
fFill.Colors.Add CreateRGBColor(0, 102, 0), 33
Es posible mover un color en un relleno degradado utilizando el método FountainColor.Move. El siguiente código
VBA mueve el color verde del ejemplo anterior a una posición que está a 60% desde el rojo (es decir, más hacia el
amarillo):
ActiveShape.Fill.Fountain.Colors(1).Move 60
Se puede utilizar la propiedad FountainColors.Count para determinar el número de colores entre el color inicial y el
color final de un relleno degradado. (Para el ejemplo anterior, este valor es 1). El primer color en la colección es el color
inicial, y su número de índice es 0; este color no puede ser movido, pero su color puede ser cambiado. El último color
en la colección es el color final, y su número de índice es (Count + 1); este color no puede ser movido, pero su color
puede ser cambiado. El siguiente código VBA cambia el color final de amarillo a azul:
Dim cols As FountainColors
Set cols = ActiveShape.Fill.Fountain.Colors
cols(cols.Count + 1).Color.RGBAssign 0, 0, 102
Aplicación de contornos
Se pueden utilizar las distintas propiedades y métodos de la clase Outline para definir el contorno de una forma.
La propiedad Outline.Type utiliza las siguientes constantes de la enumeración cdrOutlineType para registrar si la
forma especificada tiene un contorno:
• cdrOutline — indica que la forma tiene un contorno.
• cdrNoOutline — indica que la forma no tiene un contorno.
Si una forma no tiene contorno, al ajustar su propiedad Outline.Type a cdrOutline se aplica el estilo de
contorno por defecto del documento.
Si una forma tiene contorno, al ajustar su propiedad Outline.Type a cdrNoOutline se elimina ese contorno.
Si una forma no tiene contorno, su valor Outline.Width es 0. El cambio de este valor aplica un contorno y
automáticamente cambia el valor de la propiedad Outline.Type de cdrNoOutline a cdrOutline.
De manera similar, si una forma tiene contorno, su valor Outline.Width es más grande que 0. El cambio de
este valor a 0 elimina el contorno y automáticamente cambia el valor de la propiedad Outline.Type de
cdrOutline a cdrNoOutline.
La propiedad Outline.Color para un contorno define su color, como en el siguiente ejemplo VBA:
ActiveSelection.Outline.Color.GrayAssign 0 ' Se ajusta a negro
Los objetos Outline tienen muchas otras propiedades, incluyendo las siguientes:
• StartArrow y EndArrow — especifica la punta de flecha de cada final e inicio de curva.
• LineCaps y LineJoin — respectivamente, especifica el tipo de finales de línea (cabezada,
redondeada o cuadrada) y uniones de línea (biselada, mitrada o redondeada).
• NibAngle y NibStretch — especifica la forma de la punta utilizada para dibujar el contorno.
• BehindFill y ScaleWithShape — respectivamente, dibuja la línea detrás del relleno y escala el
contorno con la forma.
Los objetos Outline también tienen métodos, incluyendo los siguientes:
• ConvertToObject — convierte el contorno en un objeto.
• SetProperties — ajusta la mayoría de las propiedades de contorno disponibles en una sola llamada.
Los componentes de color de cada modelo de color soportado están definidos por propiedades adicionales de
la clase Color, como se demuestra en los siguientes ejemplos VBA:
• Modelo de color CMYK — está definido por las propiedades Color.CMYKCyan,
Color.CMYKMagenta, Color.CMYKYellow y Color.CMYKBlack.
• Modelo de color RGB — está definido por las propiedades Color.RGBRed, Color.RGB y
Color.RGBBlue.
• Modelo de color de escala de grises — está definido por la propiedad Color.Gray.
El rango de valores que están soportados por un componente de color depende del modelo de color de ese
componente.
Para crear un color, se puede utilizar la palabra clave de automatización New, como en Dim col As New
Color.
Para asignarle un modelo de color a un nuevo color, se puede utilizar el método deseado ...Assign (tal como
Color.CMYKAssign, Color.RGBAssign o Color.GrayAssign). Cada uno de estos métodos proporciona
un parámetro para cada componente de color en su respectivo modelo de color. Por ejemplo,
col.RGBAssign 0, 0, 102 asigna un color azul profundo RGB al nuevo color que fue creado en el consejo
anterior.
Para utilizar los ajustes de administración de color de CorelDRAW para cambiar el modelo de color que está
asignado a un color, se puede emplear el método deseado ConvertTo... (tal como
Color.ConvertToCMYK, Color.ConvertToRGB o Color.ConvertToGray). Por ejemplo,
ActiveShape.Fill.UniformColor.ConvertToRGB convierte el relleno de la forma activa al modelo de
color RGB.
Se pueden copiar las propiedades de un color a otro utilizando el método Color.CopyAssign, como en el siguiente
ejemplo VBA:
Dim sh As Shape
Set sh = ActiveShape
sh.Outline.Color.CopyAssign sh.Fill.UniformColor
El color “ninguno” no existe. Para ajustar un color de relleno o de contorno a “ninguno”, se debe ajustar más
bien el tipo de relleno o el tipo de contorno a “ninguno”.
La aplicación de un efecto devuelve un objeto Effect, el cual le permite acceder a distintas propiedades y
métodos para el efecto creado. Por ejemplo, se puede utilizar el método Effect.Separate para separar las
formas que sean generadas por un efecto de la forma en la cual ese efecto es aplicado. Además, se puede
utilizar el método Effect.Clear para eliminar un efecto de una forma.
Aplicación de mezclas
El método Shape.CreateBlend crea una mezcla entre la forma actual y la forma que se especifique como un
parámetro. Este método proporciona parámetros opcionales para varios ajustes de mezcla, tales como la aceleración
de la mezcla y la trayectoria a lo largo de la cual la mezcla es creada.
El siguiente código VBA crea una mezcla básica de 10 etapas:
Dim sh As Shapes, eff As Effect
Set sh = ActiveSelection.Shapes
Set eff = sh(1).CreateBlend(sh(2), 10)
En el ejemplo anterior, el número de formas en la mezcla es doce: las formas inicial y final, más las diez
etapas de mezcla que son creadas.
Los métodos de creación de envolturas devuelven un objeto Effect, en el que la propiedad Effect.Envelope
se puede utilizar para modificar las envolturas creadas.
Aplicación de extrusiones
El método Shape.CreateExtrude le aplica una extrusión a una forma. Este método proporciona parámetros para
varios ajustes de extrusión, tales como el ángulo y el color de la extrusión.
Búsqueda de formas
En sus macros CorelDRAW, usted puede incluir rastreos que busquen las formas que tengan propiedades específicas
de forma, tales como propiedades de relleno, de contorno o de color. Para hacer esto, utilice Corel Query Language
(CQI) junto con uno de los siguientes métodos:
• Shape.Evaluate — devuelve el resultado de una expresión dada que evalúa las propiedades de la forma actual.
• Shape.FindShape — devuelve una única forma que tenga las propiedades especificadas.
• Shape.FindShapes — devuelve, como un rango de formas, todas las formas que tengan las propiedades
especificadas.
Se pueden especificar las propiedades de las formas que sean buscadas. Por ejemplo, la expresión
ActiveShape.Evaluate("@name") busca la propiedad Name de todas las formas seleccionadas.
Considere el siguiente ejemplo VBA, en el cual la propiedad Type y la propiedad Width son utilizadas para
seleccionar todos los rectángulos que sean más anchos de dos pulgadas:
ActivePage.Shapes.FindShapes(Query := "@type = 'rectangle' and _
@width > {2 in}").CreateSelection
Para información extensa sobre el uso de CQL, vea “Incluyendo rastreos en macros” en el archivo de Ayuda de Macros
de CorelDRAW.
Eliminación de formas
Si lo desea, puede utilizar manejadores de evento que respondan a eventos que sean accionados al eliminar una forma:
• Document.ShapeDelete
Estos métodos de importación y exportación de archivos también pueden ser utilizados para ejecutar
conversiones en lote o para modificar archivos depositarios.
La amplia selección de formatos de archivo que soporta CorelDRAW se debe al vasto número de filtros que están
disponibles en la aplicación. Cada filtro le permite trabajar con archivos de otras aplicaciones gráficas. Para aprender
más acerca del trabajo con estos filtros, vea los siguientes temas:
• Trabajo con filtros de importación.
• Trabajo con filtros de exportación.
Para mejores resultados, utilice el objeto DSFImport del filtro específico sólo para aprender las interfaces específicas
que estén soportadas por un filtro. Por ejemplo, la siguiente captura de pantalla ilustra que el objeto ImportFilter
expone sólo interfaces genéricas en Microsoft® IntelliSense® debido a que la interfaz ImportFilter es genérica (y no
un filtro específico).
Para acceder al modelo de objeto de un filtro, haga click en Herramientas » Referencias desde el Editor de macros.
En el cuadro de diálogo Referencias que aparezca, haga click en Examinar... y navegue a la carpeta Filters de la ruta
de instalación de CorelDRAW Graphics Suite X5. Seleccione el archivo de enlace dinámico de biblioteca (DLL) del
filtro deseado y luego haga click en Aceptar. Cuando vuelva a aparecer el cuadro de diálogo Referencias, habilite la
casilla de verificación que corresponda al filtro deseado y luego haga click en Aceptar. Ahora puede acceder al
modelo de objeto del filtro, como en el siguiente ejemplo VBA:
Sub OpenRectangleDSF()
Dim FilterObject As DSFImport
Dim Style As DsfLinestyle
'Inicializa FilterObject
Set FilterObject = ActiveLayer.ImportEx("C:\devo\rect.dsf", cdrDSF)
'Ajusta las características avanzadas del filtro
Style = dsfDashed
FilterObject.DefaultLinestyle = Style
FilterObject.DeleteInvisibleObjects = True
'Invoca al filtro
FilterObject.Finish
End Sub
El ejemplo anterior requiere que se verifiquen los valores devueltos del cuadro de diálogo y que se invoque al método
Finish para cuando el usuario haga click en Aceptar.
enumeración
También llamada un “tipo enumerado”, un tipo de datos que lista todos los valores posibles de las variables que lo
utilizan.
A diferencia de una variable, la cual temporalmente almacena un valor cambiante de datos, una enumeración
almacena valores fijos.
Una constante es una instancia de una enumeración.
espacio intermedio
Un espacio entre guiones en un estilo de contorno.
evento
Una acción que se lleva a cabo en un objeto y que se reconoce por una forma o control.
Cada objeto dentro de un modelo de objeto está definido por una propiedad, método o evento, o una combinación de
ellos. Un evento es activado por una acción — tal como un click de ratón, una tecla presionada o un temporizador de
sistema — y se puede escribir código que provoque que un objeto responda a ese evento.
forma
Un tipo de módulo que se utiliza para cuadros de diálogo e interfaces de usuario personalizadas, y que incluye el
código que los controla.
función
Un procedimiento que ejecuta una tarea dada en una macro y que se puede utilizar para devolver un valor.
Un procedimiento de función inicia con una declaración Function y finaliza con una declaración End Function. En
VBA y VSTA, las funciones no necesitan ser declaradas antes de utilizarse, ni antes de definirse.
macro
Un conjunto de tareas grabadas o escritas que se pueden invocar repetidamente dentro de una aplicación.
Una macro es un símbolo, nombre o clave que representa una lista de comandos.
manejador de evento
Una subrutina que se programa para provocar que la aplicación responda a un evento específico.
método
Una operación que un objeto puede haber ejecutado sobre sí mismo.
Glosario 143
mezcla de colores
El proceso de simulación de color al colocar muy cercanos los puntos de otro color.
El sistema operativo Windows utiliza mezcla de colores para mostrar los colores que la tarjeta gráfica no puede
mostrar.
modelo de objeto
Una estructura de alto nivel de las relaciones entre los objetos padre y los objetos hijo en una aplicación.
Por ejemplo, el objeto Application representa el inicio en la jerarquía de objetos. A partir del objeto Application, se
puede “escudriñar hasta el fondo” y navegar a través del modelo de objeto hasta encontrar el objeto deseado. Para
referenciar un objeto con código Visual Basic, se separa cada nivel de la jerarquía del objeto con el operador punto ( . ).
módulo
Un contenedor que es utilizado por un archivo GMS para almacenar componentes del proyecto.
Los módulos genéricos son utilizados por código general y por macros. Otros tipos de módulos incluyen módulos de
formas y de clase.
módulo de clase
Un tipo de módulo que contiene la definición de una clase Visual Basic orientada a objetos, incluyendo las
definiciones de las propiedades y métodos de esa clase.
número indicativo
Una referencia a un objeto en una colección que contiene más de un objeto.
Un número indicativo se utiliza para identificar cada objeto en una colección. El número indicativo puede extenderse
desde 1 hasta el número de objetos disponibles dentro de la colección.
objeto
Cuando se hace referencia a un modelo de objeto, una instancia de una clase.
parámetro
Sinónimo de “argumento”, un valor que es pasado a una rutina y que define una característica de un objeto en el
ambiente de programación Visual Basic.
Los parámetros son atributos que aparecen después de un comando grabado en la ventana acoplable Recorder. Por
ejemplo, las opciones de cuadro de diálogo no son grabadas como comandos separados en la ventana acoplable
Recorder, éstas se graban como atributos del comando que inicialmente invocó al cuadro de diálogo.
Glosario 144
programación de evento dado
Un estilo de programación, a diferencia de un procedimiento tradicional de programación (en el cual los programas
inician en la línea 1 y se ejecutan línea por línea), que ejecuta código en respuesta a eventos.
Visual Basic for Applications es un lenguaje de programación de evento dado. La mayoría de los códigos que se crean
son escritos para responder a un evento.
Compare con “programación orientada a objetos”.
propiedad
Una característica de una clase.
Las propiedades pueden ser devueltas o establecidas. Además, las propiedades pueden ser designadas como de sólo
lectura (para indicar que están fijadas por el diseño de la clase).
rango
Una serie de objetos similares.
String (cadena)
Un tipo de dato que consiste en una secuencia de caracteres contiguos que representan los caracteres mismos en lugar
de sus valores numéricos.
Una cadena puede incluir letras, números, espacios y puntuaciones. El tipo de dato String puede almacenar cadenas
de longitud fija que van en un rango de caracteres de 0 a 63K y cadenas dinámicas que van en un rango de 0 a 2
billones de caracteres aproximadamente. El carácter de signo de dólar ( $ ) de tipo declaración representa una cadena
en Visual Basic.
sub
Vea “subrutina”.
subrutina
Algunas veces llamada una “sub”, un procedimiento que ejecuta una tarea dada en una macro pero que no puede ser
utilizada para devolver un valor.
Un procedimiento de subrutina inicia con una declaración Sub y finaliza con una declaración End Sub. En VBA y
VSTA, las subrutinas no necesitan ser declaras antes de utilizarse, ni antes de ser definidas.
tipo enumerado
Vea “enumeración”.
valor global
Un valor que se aplica a un proyecto dado en su totalidad.
Glosario 145
variable
Un elemento que puede ser creado (o “declarado”) para los propósitos de almacenamiento de datos.
Los tipos de datos incorporados son Boolean, Double, Integer, Long, Single, String, Variant y varios otros
tipos menos utilizados incluyendo Date, Decimal y Object. Si una variable no es declarada antes de ser utilizada, el
compilador la interpreta como de tipo Variant.
Variant
El tipo de dato para todas las variables que no son declaradas como otro tipo, tal como Dim, Private, Public o
Static.
El tipo de dato Variant no tiene carácter de tipo de declaración.
VBA
Un lenguaje de programación incorporado que puede automatizar funciones repetitivas y crear soluciones
inteligentes en CorelDRAW y Corel PHOTO-PAINT.
VBA es un subconjunto del ambiente de programación Microsoft Visual Basic (VB) orientado a objetos, pero es
considerado “para aplicaciones” porque está con más frecuencia integrado dentro de otra aplicación para personalizar
la funcionalidad de esa aplicación.
VSTA
El sucesor de VBA.
VSTA está basado en Microsoft Visual Studio 2008. El ambiente de desarrollo integrado (IDE, por sus siglas en
inglés) para VSTA se puede utilizar con CorelDRAW y Corel PHOTO-PAINT para soportar dos lenguajes de
programación adicionales (Visual Basic.NET y C#) y sacar ventaja de la plataforma .NET nativamente.
Glosario 146
Indice
A automatización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
activación ambientes soportados . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
capas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 configuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
documentos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 estructura de codificación . . . . . . . . . . . . . . . . . . . . . . 14
formas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 uso de los modelos de objeto . . . . . . . . . . . . . . . . . . . . 11
páginas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 automatización de elementos . . . . . . . . . . . . . . . . . . . . . . 11
adiciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Administrador de adiciones . . . . . . . . . . . . . . . . . . . . . . . . 28
ajuste de puntos de interrupción . . . . . . . . . . . . . . . . . . . 53 B
alcance, definición . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 barras de herramientas
ambientes de automatización soportados . . . . . . . . . . . . . 6 Depuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
análisis gramatical de argumentos. . . . . . . . . . . . . . . . . . . 17 Edición . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
por referencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Estándar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
por valor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
UserForm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
análisis gramatical de elementos en una colección . . . . . 21
barra de herramientas Macros. . . . . . . . . . . . . . . . . . . . . . 27
apertura
Corel PHOTO-PAINT . . . . . . . . . . . . . . . . . . . . . . . . 27
documentos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
CorelDRAW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
proyectos de macro . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
barras de herramientas, macro . . . . . . . . . . . . . . . . . . . . . 55
archivos
adición de botones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
exportación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
creación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
importación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
bloqueo de capas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
archivos de proyecto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
exportación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 botones
importación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 adición a barras de herramientas de macro . . . . . . . . 56
suministración en cuadros de diálogo . . . . . . . . . . . . 62
archivos GMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
exportación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 búsqueda
importación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 formas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
arcos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
argumentos, pasada. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
C
arreglos
C y C++
declaración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
vs VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
asignación de memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
cadena Deshacer
asignaciones, Booleanas . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 configuración para documentos . . . . . . . . . . . . . . . . . 85
atajos cadenas
utilización en macros . . . . . . . . . . . . . . . . . . . . . . . . . . 22 declaración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Indice 148
D Editor de Macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
declaración barras de herramientas . . . . . . . . . . . . . . . . . . . . . . . . . 35
arreglos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Examinador de Objetos . . . . . . . . . . . . . . . . . . . . . . . . 36
cadenas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Explorador de Proyectos . . . . . . . . . . . . . . . . . . . . . . . 30
ventana Código. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
enumeraciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
ventana Depuración . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
ventana Propiedades. . . . . . . . . . . . . . . . . . . . . . . . . . . 35
definiciones, saltar a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
efecto perspectiva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
definiendo el alcance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
efectos, formas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
depuración de macros. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
efectos personalizados . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
ventanas de . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
ejecución de macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
desbloqueo de capas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 guardadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
descarga de proyectos de macro . . . . . . . . . . . . . . . . . . . 45 temporales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
deselección de formas. . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 elementos, automatización . . . . . . . . . . . . . . . . . . . . . . . . 11
dimensionamiento elipses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
formas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 enumeraciones
páginas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 declaración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Diseñador de Formas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 definición de . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
diseño de cuadros de diálogo. . . . . . . . . . . . . . . . . . . . . . . 59 envolturas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
distorsiones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 escalamiento de formas . . . . . . . . . . . . . . . . . . . . . . . . . . 128
documentación, macro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 escalas de dibujo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
suministro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 escritura de macros. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
documentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 espacios de trabajo
activación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 exportación de características . . . . . . . . . . . . . . . . . . . 70
ajuste de propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . 82 importación de características . . . . . . . . . . . . . . . . . . . 71
apertura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 utilización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
cierre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 estiramiento de formas. . . . . . . . . . . . . . . . . . . . . . . . . . . 127
creación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 estructuración del código . . . . . . . . . . . . . . . . . . . . . . . . . . 14
creación de grupos de comando . . . . . . . . . . . . . . . . . 85
eventos
exhibición . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
definición de . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
exportación de archivos . . . . . . . . . . . . . . . . . . . . . . . . 86
Examinador de Objetos en el Editor de Macros. . . . . . . 36
guardado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
controles de búsqueda . . . . . . . . . . . . . . . . . . . . . . . . . 41
impresión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
lista Clase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
modificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
lista Miembro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
publicación como PDF . . . . . . . . . . . . . . . . . . . . . . . . 88
ventana Información . . . . . . . . . . . . . . . . . . . . . . . . . . 40
duplicación de formas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
exhibición
capas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
documentos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
E Explorador de Proyectos en el Editor de Macros. . . . . . 30
edición exportación
macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
módulos de código . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 archivos GMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
características de espacios de trabajo. . . . . . . . . . . . . . 70
documentos como PDF . . . . . . . . . . . . . . . . . . . . . . . . 88
extrusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
Indice 149
F I
filtros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 iconos, macro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
filtros de exportación . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 imágenes
trabajo con. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 asociación con macros . . . . . . . . . . . . . . . . . . . . . . . . . 56
filtros de importación . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 suministro en cuadros de diálogo . . . . . . . . . . . . . . . . 64
trabajo con. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 importación
finalización de líneas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
archivos GMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
formas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
características de espacios de trabajo. . . . . . . . . . . . . . 71
accesando en selecciones . . . . . . . . . . . . . . . . . . . . . . 124
aplicación de efectos . . . . . . . . . . . . . . . . . . . . . . . . . . 135 impresión de documentos . . . . . . . . . . . . . . . . . . . . . . . . . 89
búsqueda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 inclusión de comentarios en macros. . . . . . . . . . . . . . . . . 16
coloración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 indicadores de memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
creación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
iniciando con las macros . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
deselección . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
determinación del tipo . . . . . . . . . . . . . . . . . . . . . . . . 121 inserción de páginas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
dimensionamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 instalación de VBA y VSTA . . . . . . . . . . . . . . . . . . . . . . . . . 25
duplicación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 interacción con el usuario, suministrada por macros . . . 64
eliminación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 interfaz de usuario, suministrada por macros . . . . . . . . . 55
escalamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
estiramiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
posicionamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
reordenamiento en selecciones . . . . . . . . . . . . . . . . . 124 J
rotación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 Java y JavaScript
selección . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 vs VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
sesgamiento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
transformación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
formas
Vea cuadros de diálogo
L
formas de rebanadas de pastel . . . . . . . . . . . . . . . . . . . . 113 leyendas, macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
líneas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
formateo de código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
listas contextuales automáticas para codificación . . . . . . 34
funciones
construcción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
saltando a definiciones . . . . . . . . . . . . . . . . . . . . . . . . . 34
M
macros. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
adición a proyectos de macro. . . . . . . . . . . . . . . . . . . . 46
G barras de herramientas para. . . . . . . . . . . . . . . . . . . . . 55
grabación de macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 carteles de información para . . . . . . . . . . . . . . . . . . . . 57
para uso futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 creación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
para uso temporal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 depuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
grupos de comando. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 edición . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
guardado ejecución . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
documentos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 eliminación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
macros grabadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 escritura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
grabación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Indice 150
imágenes o iconos para . . . . . . . . . . . . . . . . . . . . . . . . 56 O
iniciando con. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 objetos
leyendas para. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 definición de . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
muestra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 referenciando en macros . . . . . . . . . . . . . . . . . . . . . . . 20
opciones para . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 saltando a definiciones . . . . . . . . . . . . . . . . . . . . . . . . . 34
organización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 utilización de atajos en macros . . . . . . . . . . . . . . . . . . 22
puesta en uso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 objetos de texto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
referenciando colecciones . . . . . . . . . . . . . . . . . . . . . . 20
ocultamiento de capas . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
referenciando objetos . . . . . . . . . . . . . . . . . . . . . . . . . . 20
suministro de cuadros de diálogo . . . . . . . . . . . . . . . . 57 operadores bitwise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
suministro de documentación . . . . . . . . . . . . . . . . . . . 67 operadores lógicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
suministro de interacción con el usuario . . . . . . . . . . 64 organización de macros . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
suministro de manejadores de evento en . . . . . . . . . . 23
orientación, página. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
utilización de atajos de objetos en . . . . . . . . . . . . . . . . 22
macros de muestra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
macros temporales
ejecución . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 P
guardado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 páginas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
manejadores de evento. . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 activación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
dimensionamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
memoria, asignación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
eliminación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
métodos especificación de tamaño y orientación . . . . . . . . . . . 95
definición de . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 inserción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
mezclas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 modificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
modelo de objeto reordenamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
definición de . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 paneo de documentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
vista general de . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 paso a paso a través del código . . . . . . . . . . . . . . . . . . . . . 54
modelos de color . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 PDF, publicación como . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
especificación de componentes de color . . . . . . . . . . 134
posicionamiento de formas . . . . . . . . . . . . . . . . . . . . . . . 129
especificación por colores. . . . . . . . . . . . . . . . . . . . . . 134
propiedades
módulos de clase
adición a proyectos de macro. . . . . . . . . . . . . . . . . . . . 46 definición de . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
módulos de código propiedades, color
adición a macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 copiado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
adición a proyectos de macro. . . . . . . . . . . . . . . . . . . . 45 proyectos de macro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
edición . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 adición de cuadros de diálogo . . . . . . . . . . . . . . . . . . . 45
eliminación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
adición de macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
exhibición u ocultamiento . . . . . . . . . . . . . . . . . . . . . . 45
renombramiento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 adición de módulos de clase . . . . . . . . . . . . . . . . . . . . 46
adición de módulos de código . . . . . . . . . . . . . . . . . . . 45
carga. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
N copiado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
nombramiento de cuadros de diálogo . . . . . . . . . . . . . . . 60 creación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
descarga . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
renombramiento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Indice 151
prueba de cuadros de diálogo . . . . . . . . . . . . . . . . . . . . . . 60 S
publicación como PDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 saltando a definiciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
puntos de interrupción . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 selección de formas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
puntos de referencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 selecciones
accesando a copias de . . . . . . . . . . . . . . . . . . . . . . . . . 123
accesando a formas en . . . . . . . . . . . . . . . . . . . . . . . . 124
R accesando directamente . . . . . . . . . . . . . . . . . . . . . . . 122
ratón reordenamiento de formas en . . . . . . . . . . . . . . . . . . 124
captura de arrastres. . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 sesgamiento de formas . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
captura de clicks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 siluetas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
captura de coordenadas . . . . . . . . . . . . . . . . . . . . . . . . 66 símbolos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
rectángulos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 sintaxis
recursos coloración automática . . . . . . . . . . . . . . . . . . . . . . . . . 33
para macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 verificación automática . . . . . . . . . . . . . . . . . . . . . . . . 33
para software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 sombras. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
recursos de macro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 subrutinas, construcción. . . . . . . . . . . . . . . . . . . . . . . . . . . 16
recursos de software. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 subs
rellenos Vea subrutinas
degradados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
de malla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
de patrón . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 T
de textura. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 tamaño, página . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
PostScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 especificación predeterminado . . . . . . . . . . . . . . . . . . 96
uniformes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 utilizando definido . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
referencia, pasada por. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 tipos enumerados
referenciando Vea enumeraciones
colecciones en macros . . . . . . . . . . . . . . . . . . . . . . . . . 20 transformación de formas . . . . . . . . . . . . . . . . . . . . . . . . 125
elementos en una colección . . . . . . . . . . . . . . . . . . . . . 20 transparencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
objetos en macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 finalización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
renombramiento
capas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
módulos de código . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 U
proyectos de macro . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 unidades de medida
proyectos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 configuración para documentos . . . . . . . . . . . . . . . . . 82
reordenamiento utilización y puesta en marcha
capas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 espacios de trabajo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
formas en selecciones . . . . . . . . . . . . . . . . . . . . . . . . . 124 macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
páginas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
rotación de formas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Indice 152
V W
valor, pasada por . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Windows Script Host
variables vs VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
declaración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
saltando a definiciones . . . . . . . . . . . . . . . . . . . . . . . . . 34
VB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Z
VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 zooming en documentos . . . . . . . . . . . . . . . . . . . . . . . . . . 84
instalación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
opciones para . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
vs C y C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
vs Java y JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
vs VB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
vs VBScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
vs Windows Script Host. . . . . . . . . . . . . . . . . . . . . . . . . 8
VBScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
ventana acoplable Administrador de Macros . . . . . . . . . 28
ventana Código en el Editor de Macros . . . . . . . . . . . . . . 31
ventana Inmediato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
ventana Inspección . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
ventana Locales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
ventana Pila de llamadas . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
ventana Propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
ventanas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
verificación de sintaxis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
vistas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Visual Basic
Vea VB
Visual Basic for Applications
Vea VBA
Visual Basic Script
Vea VBScript
Visual Studio Tools for Applications
Vea VSTA
VSTA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
instalación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
VSTA Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Indice 153
Copyright 2010 Corel Corporation. Todos los derechos reservados.
Guía de Programación de Macros CorelDRAW® Graphics Suite.
Las especificaciones del producto, precios, empaquetado, soporte e información técnica (“especificaciones”) se
refieren sólo a la versión en Inglés. Las especificaciones para todas las otras versiones (incluyendo versiones en otros
lenguajes) pueden variar.
La información es proporcionada por Corel sobre una base “tal cual”, sin ningunas otras garantías o condiciones,
expresas o implícitas, incluyendo, pero sin limitarse a, garantías de calidad negociable, calidad de satisfacción,
comerciabilidad o conveniencia para un propósito en particular, o aquellas emanadas por la ley, estatutos,
negociaciones, suministro o cualquier otra. El riesgo total en lo que se refiere a los resultados de la información
proporcionada o su uso está asumido por usted. Corel no tendrá obligación con usted ni con cualquier otra persona o
entidad sobre ningún daño indirecto, incidental, especial o consecuencial en absoluto, incluyendo, pero no limitado
a, pérdida de ingreso o utilidad, pérdida o daño de datos u otra pérdida comercial o económica, incluso si Corel ha sido
bien informado de la posibilidad de tales daños, o éstos son previsibles. Corel tampoco está sujeto a ninguna
reclamación hecha por terceras personas. El máximo acumulado de obligación de Corel con usted no excederá el costo
pagado por usted de la compra de materiales. Algunos estados/países no permiten exclusiones o limitaciones de
responsabilidad por daños consecuenciales o incidentales, de modo que las limitaciones anteriores pudieran no
aplicarse a usted.
Corel, el logo Corel, Corel DESIGNER, CorelDRAW, Corel PHOTO-PAINT, Corel SCRIPT, Digital Studio,
Knowledge Base, Painter, Paint Shop Photo, VideoStudio, WinDVD, WinZip y WordPerfect son marcas o marcas
registradas de Corel Corporation y/o sus subsidiarios en Canadá, E.U. y/u otros países.
PostScript es una marca registrada de Adobe Systems Incorporated en los Estados Unidos y/u otros países. AutoCAD
es una marca registrada o marca de Autodesk, Inc., en los E.U. y/u otros países. IntelliCAD es una marca registrada
de IntelliCAD Technology Consortium. Java y JavaScript son marcas o marcas registradas de Sun Microsystems, Inc.
o sus subsidiarios en los Estados Unidos y otros países. Microsoft, ActiveX, IntelliSense, Visual Basic, Visual Studio,
Windows y Windows Vista son marcas registradas de Microsoft Corporation en los Estados Unidos y/u otros países.
Otros productos, nombres y logos de fuentes y compañías pueden ser marcas o marcas registradas de sus respectivas
compañías.
011129
Guía traducida al español por el Corel-Experto: Felipe de Jesús Guzmán Llamas, Guadalajara, México.
Publicada con autorización en el WWW.CORELCLUB.ORG - Club Internacional de Usuarios de Corel.