¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. VBA Excel (versiones 2021 y Microsoft 365)
  3. Comunicación con las aplicaciones de Office
Extrait - VBA Excel (versiones 2021 y Microsoft 365) Programar en Excel: Macros y lenguaje VBA
Extractos del libro
VBA Excel (versiones 2021 y Microsoft 365) Programar en Excel: Macros y lenguaje VBA Volver a la página de compra del libro

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.

images/CAP11IMG01N.PNG

 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:

images/10word.png

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:

images/10access.png

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...