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