2011-07-27 21 views
4

我有一個Outlook macro標記爲已讀並將對話中的所有消息移動到另一個文件夾中。我將該宏分配給一個名爲「存檔」的按鈕。但是,我不能「撤銷」那個動作。如果我爲什麼「撤消」不適用於標記爲已讀和移動郵件項目的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 

還是我必須在撤消支持代碼?

回答

3

不幸的是,Outlook的撤消功能只能在用戶的操作上進行,而不能在程序化操作上進行。 Excel允許通過Application.OnUndo鉤子,但這不是在Outlook中實現的。

也許一個合理的選擇是創建一個'Undo last archive'按鈕;只要您將最後一個歸檔操作存儲在某處,您可以在用戶單擊「撤消」按鈕時手動將郵件移回原處並將其標記爲未讀(如果原本是這種方式的話)。

相關問題