Automatizar Outlook desde una aplicación de Visual Basic

Dado que Microsoft Outlook admite la automatización, puede controlar Outlook desde cualquier programa que esté escrito con Microsoft Visual Basic. La automatización proporciona un método estándar de una aplicación para obtener acceso a los objetos, métodos, propiedades y eventos de otras aplicaciones que admiten la automatización.

El modelo de objetos de Outlook proporciona todas las funcionalidades necesarias para manipular los datos almacenados en carpetas de Outlook, y proporciona la capacidad de controlar muchos aspectos de la interfaz del usuario de Outlook (UI).

Para iniciar una sesión de automatización de Outlook, puede utilizar el enlace anticipado o en tiempo de ejecución. El enlace en tiempo de ejecución usa la función GetObject de Visual Basic o la función CreateObject para inicializar Outlook. Por ejemplo, el siguiente código establece una variable de objeto para el objeto Application de Outlook, que es el objeto de nivel superior en el modelo de objetos de Outlook. Todo el código de automatización debe definir un objeto de Outlook Application para tener acceso a otros objetos de Outlook.

Dim objOL as Object 
Set objOL = CreateObject("Outlook.Application")

Para utilizar el enlace anticipado, primero es necesario establecer una referencia a la biblioteca de objetos de Outlook. Utilice el comando Referencia en el menú Herramientas de Visual Basic para Aplicaciones (VBA) para establecer una referencia a Biblioteca de objetos de Microsoft Outlook xx.x, donde xx.x representa la versión de Outlook con la que está trabajando. También puede utilizar la siguiente sintaxis para ejecutar una sesión de Outlook.

Dim objOL as Outlook.Application 
Set objOL = New Outlook.Application

La mayoría de soluciones de programación interactúan con los datos almacenados en Outlook. Outlook almacena toda su información como elementos en carpetas. Las carpetas se incluyen en uno o más almacenes. Después de establecer una variable de objeto en el objeto Application de Outlook, normalmente establecerá un objeto NameSpace para hacer referencia a MAPI, como se muestra en el ejemplo siguiente.

Set objOL = New Outlook.Application 
Set objNS = objOL.GetNameSpace("MAPI") 
Set objFolder = objNS.GetDefaultFolder(olFolderContacts)

Tras haber establecido una variable de objeto para hacer referencia a la carpeta que contiene los elementos con los que desee trabajar, podrá utilizar el código adecuado para lograr su tarea, tal como se muestra en el siguiente ejemplo.

Sub CreateNewDefaultOutlookTask() 
    Dim objOLApp As Outlook.Application 
    Dim NewTask As Outlook.TaskItem 
    ' Set the Application object 
    Set objOLApp = New Outlook.Application 
    ' You can only use CreateItem for default items 
    Set NewTask = objOLApp.CreateItem(olTaskItem) 
    ' Display the new task form so the user can fill it out 
    NewTask.Display 
End Sub

Si utiliza VBA para crear macros, hay dos maneras de automatizar Outlook. Puede implementar una macro que crea una nueva instancia del objeto Aplicación de Outlook. El método CreateNewDefaultOutlookTask() anterior muestra cómo llama a New Outlook.Application para crear una nueva instancia del objeto Application.

Precaución Esta nueva instancia de Outlook no es de confianza y puede desencadenar la protección del modelo de objetos.

Como alternativa a la creación y automatización de una instancia separada de Outlook, puede utilizar VBA para implementar una macro que automatice la instancia actual de Outlook. Para ello, utilice el objeto Aplicación intrínseco del entorno. Este objeto Aplicación es de confianza y puede impedir la activación de la protección del modelo de objetos. Para más información sobre la protección del modelo de objetos, vea Novedades para programadores en Outlook 2007 (parte 1 de 2). En el ejemplo siguiente se muestra el CreateAnotherNewDefaultOutlookTask() método que usa el objeto Application de la instancia actual de Outlook.

Sub CreateAnotherNewDefaultOutlookTask() 
    Dim NewTask As Outlook.TaskItem 
 
    ' You can only use CreateItem for default items 
    Set NewTask = Application.CreateItem(olTaskItem) 
    ' Display the new task form so the user can fill it out 
    NewTask.Display 
End Sub

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.