Автоматически помечать электронную почту в удаленных элементах как прочитанную Outlook 2016 VBA - PullRequest
0 голосов
/ 25 февраля 2019

У меня был небольшой макрос, настроенный с Outlook на другой машине, но теперь, когда я переключил компьютеры, я не могу заставить его работать.Когда я пытаюсь запустить последний Private Sub, он не распознает имя и открывает окно выбора Macro без перечисленных опций.

Мне не нравится вручную помечать электронные письма в папке «Удаленные» как прочитанные, особенно учитывая, что у них было удивительное предвидение, чтобы пометить отброшенные черновики как непрочитанные.

Вот код, который раньше работал:

Dim WithEvents g_OlkFolder As Outlook.Items

Private Sub Application_Quit()
    Set g_OlkFolder = Nothing
End Sub

Private Sub Application_Startup()
    Set g_OlkFolder = Session.GetDefaultFolder(olFolderDeletedItems).Items
End Sub

Private Sub g_OlkFolder_ItemAdd(ByVal Item As Object)
    Item.UnRead = False
    Item.Save
End Sub

Ответы [ 4 ]

0 голосов
/ 26 февраля 2019

Полностью выбросив код и начав с нуля, я нашел гораздо более простое решение, чем то, что я пытался.В любом случае, спасибо за помощь, ребята!

Sub MDAU()
Dim DI As Outlook.Items
Dim MSG As Object
Set DI = Session.GetDefaultFolder(olFolderDeletedItems).Items
Set MSG = Application.CreateItem(olMailItem)
For Each MSG In DI
MSG.UnRead = False
Next
End Sub
0 голосов
/ 26 февраля 2019

Попробуйте использовать Свойство Application.Session или используйте GetNamespace метод, который я предпочитаю

Пример

Private WithEvents Items As Outlook.Items
Private Sub Application_Startup()
    Dim olNs As Outlook.NameSpace
    Dim DeletedFolder  As Outlook.MAPIFolder

    Set olNs = Application.GetNamespace("MAPI")
    Set DeletedFolder = olNs.GetDefaultFolder(olFolderDeletedItems)
    Set Items = DeletedFolder.Items
End Sub

Private Sub Items_ItemAdd(ByVal Item As Object)
    If TypeOf Item Is Outlook.MailItem Then
        ' do something with Item
    End If
End Sub
0 голосов
/ 26 февраля 2019

Или определите olFolderDeletedItems или замените его на 3. Подробнее см. эту ссылку .

0 голосов
/ 25 февраля 2019

Вот несколько вещей, которые нужно попробовать и проверить:

  • Поместите курсор в метод Application_Startup и нажмите F5.Затем вернитесь и попробуйте снова.Если это помогает, инициализация не была выполнена, а переменная g_OlkFolder не установлена.
  • Поместите точку останова в строку Item.UnRead = False.Если это не останавливается на достигнутом, ваш метод не работает.
  • Вы поместили свой код в модуль ThisOutLookSession ?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...