2015-01-20 11 views
0

들어오는 메시지를 내 Outlook받은 편지함에서 하위 폴더로 옮기는 간단한 VBA 스크립트를 작성하려고합니다. 이것은 내가 현재 가지고있는 것 (다양한 게시물에서 모아진 것)이지만 테스트 이메일을 보낼 때 어떤 결과도 얻지 못합니다. 이것과 관련된 다른 게시물이 있다면, 나는 그것을 감사하겠습니다!특정 제목이 하위 폴더로 이동하는 Outlook 메시지

Private Sub Application_Startup() 
    Dim olApp As Outlook.Application 
    Dim objNS As Outlook.NameSpace 
    Set olApp = Outlook.Application 
    Set objNS = olApp.GetNamespace("MAPI") 
    ' Default local Inbox 
    Set Items = objNS.GetDefaultFolder(olFolderInbox).Items 
End Sub 

Private Sub Items_ItemAdd(ByVal item As Object) 

    On Error GoTo ErrorHandler 
    Dim Msg As Outlook.MailItem 
    Set myInbox = GetNamespace("MAPI").GetDefaultFolder(olFolderInbox) 
    If TypeName(item) = "MailItem" Then 
    Set Msg = item 

    If Msg.SenderEmailAddress = "[email protected]" Then 
     If InStr(0, Msg.Subject, "Subject Title", vbTextCompare) > 0 Then 
     Msg.Move myInbox.Folders("Test").Subfolder("Destination") 
     End If 
    End If 

    End If 
ProgramExit: 
    Exit Sub 
ErrorHandler: 
    MsgBox Err.Number & " - " & Err.Description 
    Resume ProgramExit 
End Sub 

답변

0

Items 객체를 올바르게 정의하고 초기화하지 않은 것처럼 보입니다. 예 :

Public WithEvents myOlItems As Outlook.Items 

Public Sub Initialize_handler() 
    Set myOlItems = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderContacts).Items 
End Sub 

Private Sub myOlItems_ItemAdd(ByVal Item As Object) 
    ' do something here 
End Sub 

16 개가 넘는 항목이 동시에 추가되면 ItemAdd 이벤트가 발생하지 않습니다. 이것은 OOM의 알려진 문제입니다.

Application 클래스의 NewMailEx 이벤트를 대신 사용해보십시오. 그리고 기사의 다음 시리즈를 읽는 게 좋을 것 :

, 매크로 Outlook에서 사용 가능? 트러스트 센터 설정을 확인 했습니까?

+0

Items 객체를 정의한 Sub로 내 게시물을 편집했습니다! – CJK

+0

글쎄, 나는 또한 게시물을 업데이 트했습니다. 위의 변경 사항을 참조하십시오. –

+0

제안 해 주셔서 감사합니다. 내 매크로가 활성화되어 있고 NewMailEx 응용 프로그램을 실험 해 보겠습니다. 그러나 당분간은 현재 매크로에서 응답을 얻지 못하고 있습니다. 테스트 이메일이 통보 될 때 (즉 오류가 없음) 알림을받지 못합니다. 어떤 아이디어? – CJK

0

ThisOutlookSession에 코드를 넣으십시오. 내장 클래스 모듈 ThisOutlookSession, 하위 Application_Startup을() 핸들러를 초기화 사용하는 경우 그냥 위의 코드

Public WithEvents Items As Items 

을 넣어.