2011-07-27 3 views
4

私は、読み取りとしてマークし、会話内のすべてのメッセージを別のフォルダに移動するOutlook macroを持っています。マクロを「アーカイブ」ボタンに割り当てました。しかし、私はその行動を "元に戻す"ことはできません。 Iメールアイテムの読み取りと移動をマークする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では実装されていません。

「最後のアーカイブを元に戻す」ボタンを作成するのが合理的な方法でしょう。最後のアーカイブアクションをどこかに保存する限り、ユーザーが '元に戻す'ボタンをクリックすると、マクロは手動でメッセージを元に戻し、それが未読としてマークします。

関連する問題