Разное

Методы outlook application: Объект приложения (Outlook) | Microsoft Learn

Метод Application.AdvancedSearch (Outlook) | Microsoft Learn

  • Статья
  • Чтение занимает 3 мин

Выполняет поиск на основе указанной строки поиска DAV Search and Locating (DASL).

Синтаксис

выражение. AdvancedSearch( _Scope_ , _Filter_ , _SearchSubFolders_ , _Tag_ )

выражение: переменная, представляющая объект Application.

Параметры

ИмяОбязательный или необязательныйТип данныхОписание
ScopeОбязательныйStringОбласть поиска. Например, путь папки к папке. Рекомендуется, чтобы путь папки был заключен в одну кавычка. В противном случае поиск может не возвращать правильные результаты, если путь папки содержит специальные символы, включая символы Юникод. Чтобы указать несколько путей папки, заключив каждый путь папки в одну кавычка, разделять пути одной папки с запятой.
FilterНеобязательныйVariantФильтр поиска DASL, определяя параметры поиска.
SearchSubFoldersНеобязательныйVariantОпределяет, будет ли поиск включать какие-либо подмостки папки.
TagНеобязательныйVariantИмя, предоставленное в качестве идентификатора для поиска.

Возвращаемое значение

Объект Поиска , представляющем результаты поиска.

Вы можете выполнить несколько поисков одновременно, позвонив методу AdvancedSearch в последовательной строке кода. Однако следует помнить, что программное создание большого количества папок поиска может привести к значительной одновременной активности поиска, которая повлияет на производительность Outlook, особенно если Outlook проводит поиск в режиме Exchange.

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

С помощью параметра Scope можно указать одну или несколько папок в одном магазине, но не указать несколько папок в нескольких магазинах. Чтобы указать несколько папок в одном хранилище для параметра Scope , используйте символ запятой между каждым путем папок и заключив каждый путь папки в одном кавычках. Для папок по умолчанию, таких как папки «Входящие» или «Отправленные элементы», можно использовать простое имя папки, а не полный путь папки.

Например, следующие две строки кода представляют допустимые параметры Scope :

Scope = "'Inbox', 'Sent Items'"
Scope = "'" & Application.Session.GetDefaultFolder(olFolderInbox).FolderPath _  
    & "','" & Application.Session.GetDefaultFolder(olFolderSentMail).FolderPath & "'"

Параметр Filter может быть любым допустимым запросом DASL. Дополнительные сведения о запросах DASL см. в статьи Filtering Items and Referencing Properties by Namespace. Обратите внимание, что для параметра Filter advanced Search нельзя использовать запрос JET. Если мгновенный поиск включен в магазине, который содержит папку, указанную в параметре Scope , для повышения производительности поиска можно использовать ключевые слова Instant Search. Если вы используете ключевые слова мгновенного поиска и мгновенный поиск не включен, Outlook возвращает ошибку, и поиск не будет работать.

Пример

В следующем примере Visual Basic для приложений (VBA) выполняется поиск в почтовом ящике элементов с объектом, равным тесту, и отображаются имена отправителей элементов электронной почты, возвращенных в результате поиска. Процедура события AdvancedSearchComplete задает boolean blnSearchComp true по завершению поиска. Эта переменная boolean используется процедурой TestAdvancedSearchComplete() для определения завершения поиска. Пример кода должен быть помещен в классный ThisOutlookSessionмодуль, например, TestAdvancedSearchComplete() и процедура должна быть вызвана, прежде чем процедура события может быть вызвана Outlook.

Public blnSearchComp As Boolean  
  
Private Sub Application_AdvancedSearchComplete(ByVal SearchObject As Search)  
    Debug.Print "The AdvancedSearchComplete Event fired"  
    If SearchObject.Tag = "Test" Then  
        m_SearchComplete = True  
    End If  
  
End Sub  
  
Sub TestAdvancedSearchComplete()  
    Dim sch As Outlook.Search  
    Dim rsts As Outlook.Results  
    Dim i As Integer  
    blnSearchComp = False  
    Const strF As String = "urn:schemas:mailheader:subject = 'Test'"  
    Const strS As String = "Inbox"     
    Set sch = Application.
AdvancedSearch(strS, strF, "Test") While blnSearchComp = False DoEvents Wend Set rsts = sch.Results For i = 1 To rsts.Count Debug.Print rsts.Item(i).SenderName Next End Sub

В следующем Visual Basic для приложений Microsoft используется метод AdvancedSearch

для создания нового поиска. Параметры поиска, указанные аргументом Filter метода AdvancedSearch, возвращают все элементы в папках «Входящие» и «Отправленные элементы», где фраза Subject совпадает или содержит «Office». Папки «Входящие» и «Отправленные элементы» пользователя указаны как область поиска, а свойство SearchSubFolders задано в True. По завершению поиска метод GetTable вызван на объект Search для выполнения переоценки результатов поиска.

Public m_SearchComplete As Boolean  
  
Private Sub Application_AdvancedSearchComplete(ByVal SearchObject As Search)  
    If SearchObject. Tag = "MySearch" Then  
        m_SearchComplete = True  
    End If  
End Sub  
  
Sub TestSearchForMultipleFolders()  
    Dim Scope As String  
    Dim Filter As String  
    Dim MySearch As Outlook.Search  
    Dim MyTable As Outlook.Table  
    Dim nextRow As Outlook.Row  
    m_SearchComplete = False  
    'Establish scope for multiple folders  
    Scope = "'" & Application.Session.GetDefaultFolder( _  
    olFolderInbox).FolderPath _  
    & "','" & Application.Session.GetDefaultFolder( _  
    olFolderSentMail).FolderPath & "'"  
    'Establish filter  
    If Application.Session.DefaultStore.IsInstantSearchEnabled Then  
        Filter = Chr(34) & "urn:schemas:httpmail:subject" _  
        & Chr(34) & " ci_phrasematch 'Office'"  
    Else  
        Filter = Chr(34) & "urn:schemas:httpmail:subject" _  
        & Chr(34) & " like '%Office%'"  
    End If  
    Set MySearch = Application.AdvancedSearch( _  
    Scope, Filter, True, "MySearch")  
    While m_SearchComplete <> True  
        DoEvents  
    Wend  
    Set MyTable = MySearch.
GetTable Do Until MyTable.EndOfTable Set nextRow = MyTable.GetNextRow() Debug.Print nextRow("Subject") Loop End Sub

См. также

Объект Application

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

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

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

Twitter LinkedIn Facebook Адрес электронной почты

  • Статья
  • Чтение занимает 2 мин

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

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

Чтобы начать сеанс автоматизации Outlook, можно использовать раннее или позднее связывание. Для инициализации Outlook используется функция

Visual Basic GetObject или функция CreateObject. Например, в приведенном ниже коде указывается объектная переменная для объекта 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 application. Выше в методе 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 и обратная связь.

Обзор объектной модели Outlook — Visual Studio (Windows)

  • Статья
  • Чтение занимает 4 мин

Применимо к: Visual Studio Visual Studio для Mac Visual Studio Code

Для разработки надстроек VSTO для Microsoft Office Outlook вы можете взаимодействовать с объектами, которые предоставляются объектной моделью Outlook. Объектная модель Outlook предоставляет классы и интерфейсы, которые представляют элементы пользовательского интерфейса. Например, объект Application представляет все приложение, объект Folder — папку, содержащую электронные сообщения или другие элементы, а объект MailItem — электронное сообщение.

Этот раздел содержит краткий обзор некоторых основных объектов в объектной модели Outlook. Дополнительные сведения о всей объектной модели Outlook см. в документации по объектной модели Outlook.

Применимо к: Сведения в этом разделе относятся к проектам надстроек VSTO для Outlook. Дополнительные сведения см. в разделе «Функции», доступные в приложениях Office и типах проектов.

Доступ к объектам в проекте Outlook

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

  • Application

  • Explorer

  • Inspector

  • Folder

  • MailItem

  • AppointmentItem

  • TaskItem

  • ContactItem

Объект приложения

Объект Application представляет приложение Outlook. Это объект самого верхнего уровня в объектной модели Outlook. Ниже перечислены некоторые наиболее важные члены этого объекта.

  • Метод CreateItem , который можно использовать для создания элемента, например электронного сообщения, задачи или встречи.

  • Свойство Explorers , которое можно использовать для доступа к окнам с содержимым папки в пользовательском интерфейсе Outlook.

  • Свойство Inspectors , которое можно использовать для доступа к окнам с содержимым одного элемента, например электронного сообщения или приглашения на собрание.

    Чтобы получить экземпляр Application объекта, используйте поле ThisAddIn Application класса в проекте. Дополнительные сведения см. в разделе «Программные надстройки VSTO».

Примечание

Чтобы избежать предупреждений системы безопасности при использовании свойств и методов, заблокированных защитой объектной модели Outlook, получите объекты Outlook из поля ThisAddIn application класса. Дополнительные сведения см. в разделе «Особые вопросы безопасности» для решений Office.

Объект Explorer

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

Чтобы получить объект Explorer , выполните одно из следующих действий.

  • Используйте свойство Explorers объекта Application для доступа ко всем объектам Explorer в Outlook.

  • Используйте метод ActiveExplorer объекта Application , чтобы получить Explorer , который имеет фокус в данный момент.

  • Используйте метод GetExplorer объекта Folder, чтобы получить Explorer для текущей папки.

Объект Inspector

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

Чтобы получить объект Inspector , выполните одно из следующих действий.

  • Используйте свойство Inspectors объекта Application для доступа ко всем объектам Inspector в Outlook.

  • Используйте метод ActiveInspector объекта Application , чтобы получить Inspector , который имеет фокус в данный момент.

  • Используйте метод GetInspector определенного элемента, такого как MailItem или AppointmentItem, для извлечения инспектора, связанного с ним.

Объект Folder

Объект Folder представляет папку, содержащую электронные сообщения, контакты, задачи и другие элементы. Outlook предоставляет 16 объектов Folder по умолчанию.

Объекты Folder по умолчанию определяются значениями перечисления OlDefaultFolders . Например,

Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox соответствует папке «Входящие» в Outlook.

Пример, показывающий, как получить доступ к умолчанию Folder и создать новый Folderобъект, см. в разделе «Практическое руководство. Программное создание пользовательских элементов папок».

Объект MailItem

Объект MailItem представляет электронное сообщение. ОбъектыMailItem обычно находятся в папках, таких как Входящие, Отправленныеи Исходящие. MailItem предоставляет свойства и методы, которые можно использовать для создания и отправки электронных сообщений.

Пример создания сообщения электронной почты см. в разделе «Практическое руководство. Программное создание элемента электронной почты».

Объект AppointmentItem

Объект AppointmentItem представляет собрание, однократную или повторяющуюся встречу или собрание в папке Календарь . Объект AppointmentItem содержит методы для выполнения таких действий, как ответ на приглашения на собрание и их пересылка, а также свойства, определяющие сведения о встрече, например время и место проведения.

Пример создания встречи см. в разделе «Практическое руководство. Программное создание приглашения на собрание».

Объект TaskItem

Объект TaskItem представляет задачу, выполняемую в течение заданного промежутка времени. ОбъектыTaskItem расположены в папке Задачи .

Чтобы создать задачу, используйте метод CreateItem объекта Application и передайте значение olTaskItem для параметра.

Объект ContactItem

Объект ContactItemпредставляет контакт в папке Контакты . ОбъектыContactItem содержат различные контактные данные для людей, которые они представляют, например адреса, электронные адреса и номера телефонов.

Пример создания нового контакта см. в статье «Практическое руководство. Программное добавление записи в контакты Outlook». Пример, демонстрирующий поиск существующего контакта, см. в разделе «Практическое руководство. Программный поиск определенного контакта».

Использование документации по объектной модели Outlook

Полные сведения об объектной модели Outlook см. в справочнике по основной сборке взаимодействия (PIA) Outlook и в справочнике по объектной модели VBA.

Ссылка на основную сборку взаимодействия

В справочных документах по основной сборке взаимодействия Outlook описываются типы основной сборки взаимодействия для Outlook 2010. Дополнительные сведения см. в справочнике по основной сборке взаимодействия Outlook 2010.

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

Справочник по объектной модели VBA

В справочных документах по объектной модели VBA объектная модель Outlook описана в том виде, в котором она предоставляется коду Visual Basic для приложений. Дополнительные сведения см. в справочнике по объектной модели Outlook 2010.

Все объекты и элементы в справочнике объектной модели VBA соответствуют типам и участникам основной сборки взаимодействия Outlook. Например, объект Inspector в справочнике по объектной модели VBA соответствует объекту Inspector в Outlook PIA. Несмотря на то что в справочнике по объектной модели VBA содержатся примеры кода для большинства свойств, методов и событий, необходимо преобразовать код VBA в этом справочнике в код Visual Basic или Visual C#, если требуется использовать их в проекте надстройки VSTO для Outlook, создаваемом с помощью Visual Studio.

ЗаголовокОписание
Работа с контактамиСодержит разделы, в которых описывается выполнение задач с контактами.
Работа с почтовыми элементамиСодержит разделы, в которых описывается выполнение задач с элементами почты.
Работа с папкамиСодержит разделы, в которых описывается выполнение задач с папками.
Работа с элементами календаряСодержит разделы, в которых описывается выполнение задач с элементами календаря.
Практическое руководство. Программное определение текущего элемента OutlookЗдесь показано, как отобразить имя текущей папки и некоторые сведения о выбранном элементе.

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

Редактировать

Твиттер LinkedIn Фейсбук Эл. адрес

  • Статья
  • 2 минуты на чтение

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

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

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

 Тусклый объект как объект
Установить objOL = CreateObject("Outlook.Приложение")
 

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

 Dim objOL как Outlook.Application
Установите objOL = Новый Outlook.Application
 

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

 Установить objOL = Новый Outlook.Application
Установить objNS = objOL.GetNameSpace("MAPI")
Установить objFolder = objNS.GetDefaultFolder(olFolderContacts)
 

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

 Sub CreateNewDefaultOutlookTask()
    Dim objOLApp как Outlook. Application
    Dim NewTask As Outlook.TaskItem
    ' Установить объект приложения
    Установите objOLApp = Новый Outlook.Application
    ' Вы можете использовать CreateItem только для элементов по умолчанию
    Установить NewTask = objOLApp.CreateItem(olTaskItem)
    ' Показать новую форму задачи, чтобы пользователь мог ее заполнить
    NewTask.Display
Конец сабвуфера
 

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

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

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

 Sub CreateAnotherNewDefaultOutlookTask()
    Dim NewTask As Outlook.TaskItem
 
    ' Вы можете использовать CreateItem только для элементов по умолчанию
    Установите NewTask = Application.CreateItem(olTaskItem)
    ' Показать новую форму задачи, чтобы пользователь мог ее заполнить
    NewTask.Display
Конец сабвуфера
 

Поддержка и отзывы

У вас есть вопросы или отзывы об Office VBA или этой документации? См. раздел Поддержка и отзывы Office VBA, чтобы узнать, как вы можете получить поддержку и оставить отзыв.

р - Полный список методов для COM объектов

Спросил

Изменено 4 месяца назад

Просмотрено 708 раз

Я хотел бы знать, какие функции можно использовать с объектами RDCOMClient.

Например, для создания электронного письма мы можем использовать

 OutApp <- COMCreate("Outlook.Application")
# создать электронное письмо
outMail = OutApp$CreateItem(0)
 

Наряду с outMail[["subject"]] , outMail[["HTMLbody"]] или outMail[["Attachments"]]$Add(filepath)

Но как я могу получить исчерпывающую список?

Документ RDCOMClient устарел, а перечисленные функции, такие как getFuncs() и getElements() , больше не доступны в пакете. Использование name() , чтобы попытаться выяснить, что находится под капотом, не дало мне результата, а

 install. packages("remotes")
remotes::install_github("омегахат/SWinTypeLibs")
 

тоже выдает ошибку. Любая идея о том, как проверить Outlook на наличие объектов?

  • r
  • vba
  • внешний вид
  • ком
  • rdcomclient

9

Если у вас установлены Outlook, Excel или Word, вы можете сделать следующее...

  1. Нажмите F11, чтобы перейти к интегрированной среде разработки (IDE) приложения Visual Basic (VBA).
  2. В строке меню перейдите в Инструменты->Ссылки, чтобы открыть диалоговое окно Ссылки.
  3. В диалоговом окне «Ссылки» в списке флажков «Доступные ссылки» пролистайте страницу вниз, пока не найдете библиотеку Microsoft Outlook (или аналогичную), после ее обнаружения установите флажок, а затем нажмите «ОК», чтобы подтвердить выбор и закрыть диалоговое окно. Это добавляет ссылку на библиотеку типов Outlook в текущий проект.
  4. При наличии ссылки на библиотеку типов Outlook (см. шаг (3)) теперь можно нажать F2, чтобы отобразить диалоговое окно «Обозреватель объектов».
  5. В диалоговом окне "Обозреватель объектов" выберите верхний левый раскрывающийся список, в котором, вероятно, будет указано 9.0051 <Все библиотеки> . Измените раскрывающийся список так, чтобы в нем было написано Outlook, это будет охватывать браузер объектов только библиотекой типов Outlook.
  6. Теперь вы можете просматривать все объекты в библиотеке типов Outlook. Выберите класс на панели «Классы» слева, и методы класса появятся справа.

Наслаждайтесь!

Я не знаю, как это сделать в R, но вы сможете сделать это в powershell.

Я все еще изучаю powershell, но это, по крайней мере, получает все свойства и методы объекта:

$ol = New-Object -ComObject Outlook.Application
$new_item = $ol.CreateItem(0)
$ новый_элемент | Get-Member
  Имя Типа: System.__ComObject#{...}
Имя MemberType Определение
---- ---------- --------
Строка свойства HTMLBody HTMLBody () {get} {set}
Строка свойства субъекта Тема () {get} {set}
Свойство вложений Вложения вложений() {get}
 

Есть намного больше, чем это, но я на самом деле расшифровываю с моего другого компьютера, на котором установлен Outlook. Get-Member работает не только с объектом приложения, поэтому вы также можете видеть элементы и свойства, доступные для самого объекта Outlook или другого COMS.

Также представляется, что ресурсы VBA могут быть полезны:

https://learn.microsoft.com/en-us/office/vba/api/outlook.application.createitem

Имя Значение Описание
olAppointmentItem 1 Объект AppointmentItem.
олконтактитем 2 Объект ContactItem.
олдистрибутионлиститем 7 Объект DistListItem.
olJournalItem 4 Объект JournalItem.
.... ... ...

И самое главное:

https://learn.microsoft.com/en-us/office/vba/api/outlook.mailitem

 СВОЙСТВА
---------
Действия
Альтернативный получатель разрешен
Заявление
Вложения
Автопереадресация
AutoResolvedWinner
BCC
Платежная информация
Тело
Формат тела
Категории
CC
. ..
 

Это довольно легко сделать для Outlook, поскольку каждый объект Outlook имеет свойство класса .

Если у вас есть заданный объект класса COMIDispatch в R, и он является ссылкой на объект Outlook, вы можете использовать функцию class() для получения его класса, а затем проверить перечисление OlObjectClass, какие свойства и методы, которые есть у этого класса.

Краткий пошаговый пример:

 > # инициализировать приложение
> Outlook_App <- RDCOMClient::COMCreate("Outlook.Application")
 

Чтобы узнать, что мы можем сделать с этим объектом, нам нужно найти ссылку. Для этого нам нужен его класс.

 > Класс Outlook_App$()
[1] 0
 

Итак, мы ищем 0 в перечислении OlObjectClass и обнаруживаем, что это объект Application. Его свойства и методы перечислены в указанной ссылке в перечислении OlObjectClass: Application.

Здесь у нас есть доступ к методам и свойствам. Для событий нам понадобятся ныне несуществующие пакеты RDCOMEvents и/или RDCOMServer.

Но мы можем попробовать метод getNameSpace("MAPI") для доступа к некоторым другим функциям. Мы знаем, что нам нужно использовать параметр «MAPI» из описания метода, указанного выше.

 > Outlook_Namespace <- Outlook_App$getNameSpace("MAPI")
 

Теперь у объекта Namepace есть еще один класс, для которого мы можем найти определение объекта и так далее и тому подобное.

К сожалению, это не работает для объектов Excel, поскольку они не имеют свойства класса. Если кто-нибудь знает решение, свяжитесь со мной.

2

Твой ответ

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Обязательно, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Объедините n элементов Outlook в один новый объект с помощью excel vba

Я ищу электронные письма от человека x в n папках Outlook в Excel с помощью VBA. Что я хочу сделать, так это найти самый последний элемент n результатов (или нескольких папок).

Я думал объединить n объектов, отсортировать по ReceivedTime , а затем получить верхний элемент, но я не могу их объединить или найти самый последний из n объектов.

Пример для 2 папок, 2 элементов:

 Dim olApp As Outlook.Application
    Dim olNs как Outlook.Namespace
    Dim olFldr As Outlook.Folder, чтобы он был почтовым ящиком
    Dim olArchive As Outlook.Folder 'моя архивная папка
    Dim olItems как Outlook.Items
    Dim olArchiveItems как Outlook.Items
    Дим и пока
    Dim emailStr As String
    Затемнить фильтр как строку
    Dim olSentFldr как Outlook.Folder
    Установить olApp = CreateObject("Outlook.Приложение")
    Установите olNs = olApp.GetNamespace("MAPI")
    Установить olFldr = olNs.GetDefaultFolder(6) ' olFolderInbox
    Установить olArchive = olNs.Folders(CStr(olNs.Accounts.Item(1)))
    
   Установите olSentFldr = olNs.GetDefaultFolder(olFolderSentMail)
       emailStr = "somebody@outlook. com"
         
        filter = "[SenderEmailAddress] = """ & emailStr & """"
        Установите olItems = olFldr.Items.Restrict (фильтр)
        Установить olArchiveItems = olArchive.Items.Restrict(фильтр)
    
        olItems.Sort "[ReceivedTime]", True
        olArchiveItems.Sort "[ReceivedTime]", True
        olSentFldr.Sort "[ReceivedTime]", True
    Dim olNew as Object
   
` ниже гипотетическое решение, которое еще не работает--------------
    olNew = объединить (olItems (1), olArchiveItems (1))
    olNew.Sort "[ReceivedTime]", True
    мой результат = olNew (1)
 
  • excel
  • vba
  • поиск
  • Outlook
  • офис-автоматизация

11

Вы можете сравнить результаты поиска.

 Явный параметр
Частная подгруппа MostRecentItem_MultipleSearches()
    ' Раннее связывание — требуется ссылка на библиотеку объектов Microsoft Outlook XX.X.
    Dim olApp как Outlook.Application
    Dim olNs As Outlook. namespace
    
    Dim olFldr As Outlook.Folder, чтобы он был почтовым ящиком
    Dim olSentFldr как Outlook.Folder
    
    Dim olFldrItems как Outlook.Items
    Dim olSentFldrItems как Outlook.Items
    
    Dim olItemRecent As Object
    
    Дим и пока
    Dim emailStr As String
    Затемнить фильтр как строку
    
    Установить olApp = CreateObject("Outlook.Приложение")
    Установите olNs = olApp.GetNamespace("MAPI")
    
    ' действует с ранним связыванием
    Установите olFldr = olNs.GetDefaultFolder(olFolderInbox) ' 6, если связывание позднее
    Установите olFldrItems = olFldr.Items
    Debug.Print "olFldrItems.count:" & olFldrItems.count
    
    emailStr = "[email protected]"
    filter = "[SenderEmailAddress] = """ & emailStr & """"
    
    olFldrItems.Sort "[ReceivedTime]", True
    Установите olFldrItems = olFldrItems.Restrict (фильтр)
    Debug.Print "olFldrItems.count:" & olFldrItems.count
    
    Установить olItemRecent = olFldrItems(1)
    'olItemRecent.Display
    
    Установите olSentFldr = olNs. GetDefaultFolder(olFolderSentMail)
    Установите olSentFldrItems = olSentFldr.Items
    olSentFldrItems.Sort "[SentOn]", True
    
    Debug.Print "olSentFldrItems.count:" & olSentFldrItems.count
    
    Debug.Print olItemRecent.ReceivedTime
    Debug.Print olSentFldrItems(1).SentOn
    
    Если olItemRecent.ReceivedTime < olSentFldrItems(1).SentOn Тогда
         Установить olItemRecent = olSentFldrItems(1)
    Конец, если
    
    olItemRecent.Display
Конец сабвуфера
 

2

Прежде всего, вам необходимо отсортировать коллекцию, прежде чем запускать методы Restrict of Find / FindNext , если вы хотите получить заказанные товары.

 olItems.Sort "[ReceivedTime]", True
olArchiveItems.Sort "[ReceivedTime]", True
olSentFldr.Sort "[ReceivedTime]", True
filter = "[SenderEmailAddress] = """ & emailStr & """"
Установите olItems = olItems.Restrict (фильтр)
Установите olArchiveItems = olArchiveItems. Restrict (фильтр)
 

Попробуйте использовать не прямое сравнение в строке поиска:

 filter = Chr(34) & "[SenderEmailAddress]" & Chr(34) & " like '%" & emailStr &"'"`
 

Похоже, вам нужно использовать метод AdvancedSearch класса Application , который выполняет поиск на основе указанной строки поиска DAV Searching and Location (DASL). Вы можете запустить поиск сразу в нескольких папках. Таким образом, нет необходимости запускать поиск отдельно для каждой папки:

 Установить olItems = olFldr.Items.Restrict(фильтр)
Установить olArchiveItems = olArchive.Items.Restrict(фильтр)
 

Вы можете запустить его один раз для всех папок, и поиск будет выполняться в фоновом режиме. Ключевые преимущества использования метода AdvancedSearch в Outlook:

  • Поиск выполняется в другом потоке. Вам не нужно запускать другой поток вручную, так как метод AdvancedSearch запускает его автоматически в фоновом режиме.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *