Почему «отменить» не работает с макросом Outlook, который помечает как прочитанные и перемещает почтовые элементы? - PullRequest
4 голосов
/ 28 июля 2011

У меня есть Макрос Outlook , который помечает как прочитанное и перемещает все сообщения в беседе в другую папку.Я назначил макрос кнопке под названием «Архив».Однако я не могу «отменить» это действие.Если я

  1. удаляю сообщение
  2. заархивирую сообщение
  3. отменить

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

Sub ArchiveConversation()
    Set ArchiveFolder = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox).Parent.Folders("Archive")
    Set Conversations = ActiveExplorer.Selection.GetSelection(Outlook.OlSelectionContents.olConversationHeaders)
    For Each Header In Conversations
        Set Items = Header.GetItems()
        For i = 1 To Items.Count
            Items(i).UnRead = False
            Items(i).Move ArchiveFolder
        Next i
    Next Header
End Sub

Или я должен кодировать в поддержку отмены?

1 Ответ

3 голосов
/ 12 апреля 2012

К сожалению, функция отмены Outlook работает только на действия пользователя, а не на программные действия. Excel позволяет это через хук Application.OnUndo, но в Outlook это не реализовано.

Возможно, разумной альтернативой было бы создание кнопки «Отменить последний архив»; до тех пор, пока вы сохраняете последнее действие архива где-то, где вы можете получить его, когда пользователь нажимает на кнопку «отменить», ваш макрос вручную перемещает сообщение назад и помечает его как непрочитанное (если оно изначально было таким).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...