VBA во втором почтовом ящике (общая учетная запись)

Я полный новичок в VBA. Итак, это, вероятно, очень простой вопрос, но я просто не могу заставить его работать даже со всеми другими очень полезными потоками.

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

Private WithEvents objInboxFolder As Outlook.Folder
Private WithEvents objInboxItems As Outlook.Items

'Process inbox mails
Private Sub Application_Startup()
    Set objInboxFolder = Outlook.Application.Session.GetDefaultFolder(olFolderInbox)
    Set objInboxItems = objInboxFolder.Items
End Sub

'Occurs when changing item
Private Sub objInboxItems_ItemChange(ByVal Item As Object)
    Dim objMail As Outlook.MailItem
    Dim objTargetFolder As Outlook.Folder
 
    If TypeOf Item Is MailItem Then
       Set objMail = Item
 
       'Move mails based on color category
       If InStr(objMail.Categories, "Invoice") > 0 Then
          Set objTargetFolder = Application.Session.GetDefaultFolder(olFolderInbox).Folders("Invoices").Folders("Uploaded")
          objMail.Move objTargetFolder
       End If
    End If
End Sub

Это прекрасно работает. Единственная проблема заключается в том, что у меня есть 2 разных почтовых ящика/учетных записи в Outlook: мой личный адрес электронной почты, а также [email protected] (используется несколькими людьми). Как мне изменить код, чтобы адресовать входящие сообщения бухгалтерского учета вместо моего личного стандартного почтового ящика?

Большое спасибо!

stackoverflow.com/a/34952936/4539709
0m3r 05.05.2022 10:12

Отвечает ли это на ваш вопрос? Получить ссылку на дополнительный почтовый ящик

niton 05.05.2022 13:39
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
27
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать метод Store.GetDefaultFolder, который возвращает объект Folder, который представляет папку по умолчанию в магазине и имеет тип, указанный аргументом FolderType. Этот метод аналогичен методу GetDefaultFolder объекта NameSpace. Разница в том, что этот метод получает папку по умолчанию в хранилище доставки, связанную с учетной записью, тогда как NameSpace.GetDefaultFolder возвращает папку по умолчанию в хранилище по умолчанию для текущего профиля.

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

Sub EnumerateFoldersInStores() 
 Dim colStores As Outlook.Stores
 Dim oStore As Outlook.Store 
 Dim oRoot As Outlook.Folder 
 On Error Resume Next 
 Set colStores = Application.Session.Stores 
 For Each oStore In colStores 
   Set oRoot = oStore.GetRootFolder 
   Debug.Print (oRoot.FolderPath) 
   EnumerateFolders oRoot 
 Next 
End Sub 
 
Private Sub EnumerateFolders(ByVal oFolder As Outlook.Folder) 
 Dim folders As Outlook.folders 
 Dim Folder As Outlook.Folder 
 Dim foldercount As Integer 
 On Error Resume Next 
 Set folders = oFolder.folders 
 foldercount = folders.Count 
 'Check if there are any folders below oFolder 
 If foldercount Then 
   For Each Folder In folders 
     Debug.Print (Folder.FolderPath) 
     EnumerateFolders Folder 
   Next 
 End If 
End Sub

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

Другие вопросы по теме