единый почтовый ящик vba outlook с ТОЛЬКО выбранными почтовыми ящиками (windows настольная версия) - PullRequest
0 голосов
/ 29 мая 2020

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

Пример: у вас есть четыре почтовых ящика, настроенных в Outlook, A, B, C, D. Приведенный ниже код объединяет / показывает все почтовые ящики с помощью поиска VBA.
Вопрос: Я бы хотел хотел бы изменить код, чтобы отображать / унифицировать ТОЛЬКО почтовые ящики B, C и D. , чтобы объединить подмножество почтовых ящиков, а не все.

Я подозреваю, что мог бы каким-то образом установить значение currentfolder ... но это может быть только одна папка за раз? Спасибо !!!!!

Я долго искал это, спасибо за ваше время !!!

`    Sub UnifiedInboxThisWeek()
    Dim myOlApp As New Outlook.Application
    txtSearch = "folder:Inbox received: (this week)"
    myOlApp.ActiveExplorer.Search txtSearch, olSearchScopeAllFolders
    Set myOlApp = Nothing
    End Sub`

1 Ответ

0 голосов
/ 30 мая 2020

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

Рассмотрите возможность использования метода AdvancedSearch класса Application, который имеет следующие ключевые преимущества:

  • Поиск выполняется в другом потоке. Вам не нужно запускать другой поток вручную, поскольку метод AdvancedSearch запускает его автоматически в фоновом режиме.
  • Возможность поиска любых типов элементов: почта, встреча, календарь, заметки и c. в любом месте, т.е. за пределами определенной папки. Методы Restrict и Find / FindNext могут применяться к конкретной коллекции Items (см. Свойство Items класса Folder в Outlook).
  • Полная поддержка запросов DASL ( пользовательские свойства также могут использоваться для поиска). Подробнее об этом можно прочитать в статье Фильтрация в MSDN. Чтобы повысить производительность поиска, можно использовать ключевые слова мгновенного поиска, если для магазина включен мгновенный поиск (см. Свойство IsInstantSearchEnabled класса Store).
  • Вы можете остановить процесс поиска в любой момент используя метод Stop класса Search.

Используя параметр Scope, вы можете указать одну или несколько папок в одном хранилище, но вы не можете указать несколько папок в нескольких магазины. Чтобы указать несколько папок в одном хранилище для параметра Scope, используйте символ запятой между каждым путем к папке и заключите каждый путь к папке в одинарные кавычки. Для папок по умолчанию, таких как Inbox или Sent Items, вы можете использовать простое имя папки вместо полного пути к папке. Например, следующие две строки кода представляют допустимые параметры Scope:

Scope = "'Inbox', 'Sent Items'"

, и вы также можете использовать путь к папке:

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

Подробнее о методе AdvancedSearch см. Расширенный поиск в Outlook программно: C#, VB. NET статья.

...