Поделиться через


Автоматизация Outlook из приложения Visual Basic

Так как Microsoft Outlook поддерживает автоматизацию, вы можете управлять приложением Outlook из любой программы, созданной с помощью Microsoft Visual Basic. Автоматизация обеспечивает для одного приложения стандартный способ доступа к объектам, методам, свойствам и событиям другого приложения, поддерживающего автоматизацию.

Объектная модель Outlook предоставляет все функциональные возможности, необходимые для работы с данными, которые хранятся в папках Outlook, а также обеспечивает возможность управления разными аспектами пользовательского интерфейса Outlook.

Чтобы начать сеанс автоматизации Outlook, можно использовать раннее или позднее связывание. Для инициализации Outlook в поздней привязке используется функция GetObject или CreateObject в Visual Basic. Например, в приведенном ниже коде указывается объектная переменная для объекта Application приложения Outlook, являющегося объектом наивысшего уровня в объектной модели Outlook. В коде автоматизации сначала нужно определить объект Application приложения Outlook, чтобы обеспечить доступ к любому другому объекту Outlook.

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

Чтобы использовать раннее связывание, сначала нужно указать ссылку на библиотеку объектов Outlook. Используйте команду Справочник в меню Средства Visual Basic для приложений (VBA), чтобы задать ссылку на библиотеку объектов Microsoft Outlook xx.x, где xx.x представляет версию Outlook, с которой вы работаете. Затем можно использовать указанный ниже синтаксис, чтобы начать сеанс Outlook.

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

Большинство программных решений взаимодействуют с данными, хранящимися в Outlook. Outlook сохраняет все свои сведения в виде элементов в папках. Папки находятся в одном или нескольких хранилищах. После задания переменной объекта для объекта Приложения Outlook обычно устанавливается объект NameSpace для ссылки на MAPI, как показано в следующем примере.

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

После настройки объектной переменной для связи с папкой, содержащей нужные для работы элементы, используйте соответствующий код для завершения задачи, как показано в приведенном ниже примере.

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

Если для создания макросов используется VBA, автоматизировать Outlook можно двумя способами. Можно реализовать макрос, создающий новый экземпляр объекта Приложения Outlook. Выше в методе CreateNewDefaultOutlookTask() показано, как вызвать объект New Outlook.Application, чтобы создать экземпляр объекта Application.

Осторожностью Этот новый экземпляр Outlook не является доверенным и может активировать защиту объектной модели.

В качестве альтернативы созданию и автоматизации отдельного экземпляра Outlook можно с помощью VBA реализовать макрос, который автоматизирует текущий экземпляр Outlook. Для этого используйте объект Application , встроенный в среду. Этот объект Application является доверенным и может помочь избежать запуска защиты объектной модели. Дополнительные сведения о защите объектной модели см. в статье Новые возможности для разработчиков в Outlook 2007 (часть 1 из 2). В следующем примере показан CreateAnotherNewDefaultOutlookTask() метод, использующий объект Application из текущего экземпляра 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

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.