Как выбрать папку для архива?

У меня есть учетная запись электронной почты «[email protected]» (домен создается).

Outlook показывает архив с именем «Архив — [email protected]», куда Outlook автоматически перемещает электронные письма через определенный период.

Текущий код:

Set olRecip = olNS.CreateRecipient("Archive - [email protected]")
olRecip.Resolve
Set olFolder = olNS.GetSharedDefaultFolder(olRecip, olFolderInbox)

Это открывает основной почтовый ящик. Как выбрать папку архива?


person Martin Washbrook    schedule 18.01.2018    source источник
comment
это то, что вы пытаетесь сделать?   -  person 0m3r    schedule 24.01.2018


Ответы (2)


Папка «Архив» обычно находится на корневом уровне — в этом случае она похожа на папку «Входящие»:

Sub ArchiveItems()
' Moves each of the selected items on the screen to an Archive folder.
  Dim olApp As New Outlook.Application
  Dim olExp As Outlook.Explorer
  Dim olSel As Outlook.Selection
  Dim olNameSpace As Outlook.NameSpace
  Dim olArchive As Outlook.Folder
  Dim intItem As Integer
  Set olExp = olApp.ActiveExplorer
  Set olSel = olExp.Selection
  Set olNameSpace = olApp.GetNamespace("MAPI")

  Set olArchive = olNameSpace.Folders("[email protected]").Folders("Archive")

  For intItem = 1 To olSel.Count
      olSel.Item(intItem).Move olArchive
  Next intItem
End Sub

чтобы получить папку «Входящие», вы можете использовать доступ по умолчанию:

Dim olInbox As Outlook.Folder
Set olInbox = olNameSpace.GetDefaultFolder(olFolderInbox)

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

Для отладки — если вы хотите проверить все доступные подпапки

For i = 1 To olInbox.Folders.Count
    Debug.Print olInbox.Folders(i).Name
Next i
person Jaakov Jalink    schedule 17.09.2018

Должно быть

Dim ARCHIVE_FOLDER As Outlook.MAPIFolder
Set ARCHIVE_FOLDER = olNs.Folders("Archive - [email protected]")

Полный пример

Option Explicit
Public Sub Example()
    Dim olNs As Outlook.NameSpace
    Dim ARCHIVE_FOLDER As Outlook.MAPIFolder
    Dim Items As Outlook.Items
    Dim i As Long

    Set olNs = Application.Session
    Dim ARCHIVE_FOLDER As Outlook.MAPIFolder
    Set ARCHIVE_FOLDER = olNs.Folders("Archive - [email protected]") _
                             .Folders("Inbox")

    Debug.Print ARCHIVE_FOLDER.Name
    Debug.Print ARCHIVE_FOLDER.FolderPath
    Debug.Print ARCHIVE_FOLDER.Store.DisplayName

    ARCHIVE_FOLDER.Display

    Set Items = ARCHIVE_FOLDER.Items
    For i = Items.Count To 1 Step -1
        DoEvents
        Debug.Print Items(i).Subject
    Next

End Sub

Объект MAPIFolder

person 0m3r    schedule 19.01.2018