2011-07-27 3 views
4

나는 읽은 것으로 표시하고 대화의 모든 메시지를 다른 폴더로 이동시키는 Outlook macro을 가지고 있습니다. 나는 "Archive"버튼에 매크로를 할당했다. 그러나 나는 그 행동을 "되돌릴"수 없다. 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에서는 구현되지 않습니다.

합리적인 대안은 '마지막 보관 파일 실행 취소'버튼을 만드는 것입니다. 마지막 아카이브 작업을 저장할 수있는 한 사용자가 '실행 취소'버튼을 클릭하면 매크로가 수동으로 메시지를 뒤로 이동하고 읽지 않은 것으로 표시합니다 (원래는 그랬던 것처럼).

관련 문제