Comunicación con las aplicaciones de Office
La tecnología Automation
1. Presentación
La tecnología Automation, llamada también OLE (Object Linking and Embedding) u OLE Automation, permite manipular los objetos de otra aplicación directamente desde Excel o VBA Excel.
Para poder funcionar, Automation necesita un cliente y un servidor, llamado servidor OLE. El servidor es la aplicación o el componente que realiza los servicios al cliente. El cliente (también llamado controlador), usa estos servicios para manejar la aplicación servidor y manipular sus objetos. Por ejemplo, si se ejecuta una combinación de correspondencia de Word desde VBA Excel, Excel es el cliente y Word el servidor OLE.
Una biblioteca de objetos es un archivo, generalmente con extensión olb, que provee la información necesaria para manipular los objetos puestos a disposición por un servidor. Se puede usar el Examinador de objetos para examinar el contenido de una biblioteca de objetos.
Para tener acceso a los objetos de otra aplicación, se debe hacer referencia a su biblioteca de objetos de la siguiente manera:
Seleccione la opción Referencias del menú Herramientas. Aparece el cuadro de diálogo Referencias - VBAProject con todos los servidores OLE guardados en la base del registro.
Active a continuación las referencias deseadas.
El número indicado con el nombre de la biblioteca de objetos corresponde a la versión...
Comunicación con Word desde Excel
1. El modelo de objeto de Word
Extracto del modelo de objeto de Word:
2. Principales colecciones del modelo de objeto de Word
AddIns
Colección de objetos AddIn que representa los modelos y complementos disponibles en Word, tanto si están cargados actualmente como si no lo están.
AutoCaptions
Colección de objetos AutoCaption que representa las leyendas agregadas automáticamente cuando esos elementos se insertan en un documento.
CaptionsLabels
Colección de objetos CaptionLabel que representa los rótulos de las leyendas agregadas automáticamente cuando esos elementos se insertan en un documento.
COMAddIns
Colección de objetos COMAddin que representan los complementos COM (Component Object Model), accesibles desde Word.
Dialogs
Colección de objetos Dialog que representan los cuadros de diálogo integrados de Word.
Documents
Colección de objetos Document que representan todos los archivos abiertos actualmente en Word.
FileConverters
Colección de objetos Converter que representan todos los conversores de archivo disponibles para abrir y guardar archivos desde Word.
Languages
Colección de objetos Language que representa todos los idiomas disponibles en Word para la comprobación de ortografía y gramática.
ListGalleries
Colección de objetos ListGallery que representa las tres bibliotecas de modelos de lista (con viñetas, números y jerarquía).
RecentFiles
Colección de objetos RecentFile que representa los últimos archivos abiertos en Word.
Tasks
Colección de objetos Task que representa el conjunto de aplicaciones en ejecución.
Templates
Colección de los objetos Template que representa los modelos actualmente disponibles.
Windows
Colección de objetos Window que representa todas las ventanas actualmente disponibles en Word.
3. Principales objetos del modelo de objeto de Word
AutoCorrect
Objeto que contiene la información relativa a la corrección automática de Word (opciones, excepciones, etc.).
DefaultWebOptions
Objeto que representa los atributos globales que usa Microsoft Word al guardar un documento como página web o al abrir una página web.
EmailOptions
Objeto que contiene los atributos globales que Microsoft Word utiliza al crear y editar mensajes de correo electrónico y las respuestas...
Comunicación con Access desde Excel
1. El modelo de objeto de Access
Extracto del modelo de objeto de Access:
2. Principales colecciones del modelo de objeto de Access
COMAddIns
Colección de macros complementarias (objetos COMAddIn) registrada en Access.
Forms
Colección de formularios (objetos Form) abiertos actualmente en una base de datos de Access.
Modules
Colección de módulos estándares y módulos de clase (objetos Module) abiertos actualmente en una base de datos de Access.
Printers
Colección de objetos Printer que representan todas las impresoras disponibles actualmente en el sistema.
References
Colección de objetos Reference que representan las referencias VBA de una base de datos de Access.
Reports
Colección de listados (objetos Report) abiertos actualmente en una base de datos de Access.
3. Principales objetos del modelo de objeto de Access
DBEngine
Objeto que representa el motor de base de datos Microsoft Jet.
DoCmd
Objeto que permite realizar acciones de Access, como el cierre de ventanas, la apertura de formularios, de informes… La mayor parte de las acciones de macros se pueden convertir en VBA a través del objeto DoCmd.
FileDialog
Objeto que representa un cuadro de diálogo que permite realizar acciones sobre un archivo (ej.: apertura de un archivo, grabación de un archivo…).
LanguageSettings
Objeto que envía información de los parámetros de idioma de Access.
Screen
Objeto que permite acceder al formulario, al estado o al control que actualmente tiene el foco.
CurrentProject (o CodeProject)
Objeto que agrupa varias colecciones de objetos de Access específicos:
AllForms |
Colección de todos los formularios de una base de datos de Access. |
AllMacros |
Colección de todas las macros de una base de datos de Access. |
AllModules |
Colección de todos los módulos de una base de datos de Access. |
AllReports |
Colección de todos los informes de una base de datos de Access. |
CurrentData (o CodeData)
Objeto que agrupa varias colecciones de objetos de Access específicos:
AllTables |
Colección de todas las tablas de una base de datos de Access. |
AllQueries |
Colección... |
Comunicación con Outlook desde Excel
1. Objetos de Outlook
AppointmentItem
Objeto que representa una reunión, una cita única o bien una cita o reunión periódicas.
ContactItem
Objeto que representa un contacto almacenado en una carpeta de contactos de Outlook.
Folder
Objeto que representa una carpeta de Outlook.
JournalItem
Objeto que representa una entrada del diario almacenada en una carpeta Diario (registro de todas las transacciones realizadas en Outlook durante un período dado).
MailItem
Objeto que representa un mensaje de correo electrónico (e-mail) dentro de una carpeta de mensajes de Outlook.
NoteItem
Objeto que representa una nota de Outlook dentro de una carpeta Notas.
PostItem
Objeto que representa una publicación de una carpeta pública que otros usuarios pueden examinar.
TaskItem
Objeto que representa una tarea almacenada en la carpeta Tareas de Outlook.
2. Acceso a los objetos de Outlook
a. Creación de un objeto (e-mail, contacto...) en Outlook
El método CreateItem del objeto Application permite crear una instancia de un objeto para un mensaje de correo o una cita.
Ejemplo:
Creación de un nuevo contacto en Outlook.
Sub Crea_Contacto()
Dim oAppOutlook As Outlook.Application
Dim oContacto As Outlook.ContactItem
' Inicia una sesión de Microsoft Outlook
Set oAppOutlook = CreateObject("outlook.application")
' Crea un nuevo contacto con un nombre y una dirección
Set oContacto = oApp Outlook.CreateItem(olContactItem)
oContacto.LastName = "PEREZ Patricia"
oContacto.MailingAddress = "pati.perez@yahoo.es"
' Guarda el contacto
oContacto.Save
End Sub
b. Acceso a los objetos (contactos, citas…) de Outlook...
Objetos vinculados o incrustados
Es posible manipular los objetos vinculados o incrustados en Excel a través de la colección OLEObjects de objetos OLEObject.
El objeto emparentado puede ser un objeto Worksheet o un objeto Chart.
Ejemplo
El siguiente procedimiento modifica el tamaño y aplica un borde a todos los objetos incrustados en la hoja de cálculo Productos.
Sub Format_OLE()
Dim ole1 As OLEObject
For Each ole1 In Worksheets("Productos").OLEObjects
With ole1
.Height = 100
.Width = 100
.Border.Color = vbRed
.Border.LineStyle = xlContinuous
.Border.Weight = xlMedium
End With
Next ole1
End Sub
1. Métodos del objeto OLEObject
Activate |
Duplicate |
Add |
Item |
BringToFront |
Select |
Copy |
SendToBack |
CopyPicture |
UpDate |
Cut |
Delete |
2. Propiedades del objeto OLEObject
AutoLoad
True si el objeto se carga automáticamente cuando se abre el libro que lo contiene.
OLEType
Devuelve xlOLELink o xlOLEEmbed.
Application |
Name |
AutoUpdate |
Object |
Border |
Parent |
Bottom |
Right |
Cell |
Placement |
Count |
PrintObject |
Creator |
ProgId |
Enabled |
ShapeRange |
Height |
Shadow |
Index |
SourceName |
Interior |
Top |
Left |
TopLeftCell |
LinkedCell |
Visible |
ListFillRange |
Width... |
Métodos y propiedades relativos a los vínculos con Excel
1. Métodos y propiedades del objeto Workbook
ChangeLink (método)
Modifica un vínculo entre dos documentos.
ChangeLink (NAME,NEWNAME,type)
NAME |
Nombre del vínculo que se debe modificar. |
NEWNAME |
Nuevo nombre del vínculo. |
type |
Tipo de vínculo que hay que devolver: xlLinkTypeExcelLinks, xlLinkTypeOLELinks. |
LinkInfo (método)
Devuelve información acerca de la fecha y el estado de actualización del vínculo.
LinkInfo(NAME,LINKINFO,type,EditionRef)
NAME |
Nombre del vínculo. |
LINKINFO |
Tipo de información que hay que devolver: (xlUpdateState o xlEditionDate). |
type |
Tipo de vínculo que se debe devolver: (xlLinkInfoOLELinks, xlLinkInfoPublishers o xllinkInfoSubscribers). |
EditionRef |
Si el vínculo es una edición, este argumento especifica la referencia a la edición. |
LinkSources (método)
Devuelve una matriz Visual Basic con los vínculos del libro.
LinkSources(type)
type |
Tipo de vínculo que hay que devolver: xlExcelLinks, xlOLELinks, xlPublishers, xlSubscribers. |
OpenLinks (método)
Abre el documento de origen de un vínculo.
OpenLinks(NAME,readonly,type)
NAME |
Nombre del vínculo. |
Readonly |
Apertura en modo de solo lectura (True... |