2017-04-07 1 views
3
Private WithEvents Items As Outlook.Items 

Private Sub Application_Startup() 
    Dim Ns As Outlook.NameSpace 
    Dim Folder As Outlook.MAPIFolder 

    Set Ns = Application.GetNamespace("MAPI") 
    Set Folder = Ns.GetDefaultFolder(olFolderInbox) 
    Set Items = Folder.Items 
End Sub 

Private Sub Items_ItemAdd(ByVal Item As Object) 
    If TypeOf Item Is Outlook.MailItem Then 
    Printattachments Item 
    End If 
End Sub 

Outlook을 사용하면 첨부 파일이있는 수신 이메일은 자동으로 인쇄되므로 일부 동료의 이메일은 예외입니다.Items_ItemAdd Events에서 보낸 사람 이름을 필터링하는 방법?

규칙을 중지하면 매크로가 자체적으로 작동하지 않습니다 (코드 오류?)하지만 첨부 파일이있는 모든 전자 메일이 활성화 된 규칙이 두 번 인쇄됩니다.

모든 페이지마다 하나씩, 첫 번째 페이지에만 하나씩. 이 문제를 해결할 수있는 방법이 있습니까? 친절하게 도와 주시고 진심으로 감사드립니다!

답변

3

Items.Restrict Method (Outlook)과 함께 사용하면 발신자 이름을 제외 할 수 있습니다. Filtering Items

예에 의해

Private WithEvents Items As Outlook.Items 
Private Sub Application_Startup() 
    Dim olNs As Outlook.NameSpace 
    Dim Inbox As Outlook.MAPIFolder 
    Dim Filter As String 

    Filter = "@SQL=" & " Not (urn:schemas:httpmail:fromname" & _ 
         " Like '%Ming Lian%' Or " & _ 
          "urn:schemas:httpmail:fromname" & _ 
         " Like '%0m3r 0mr%')" 


    Set olNs = Application.GetNamespace("MAPI") 
    Set Inbox = olNs.GetDefaultFolder(olFolderInbox) 
    Set Items = Inbox.Items.Restrict(Filter) 

End Sub 

올바른 이름으로 %Ming Lian%을 업데이트 할 수 있는지 확인하고 지금은

Items.Restrict method가 찾기 방법을 사용하는 대신입니다 아웃룩 규칙이 필요하지 않습니다 또는 FindNext 메서드를 사용하여 컬렉션 내의 특정 항목을 반복 처리합니다. Find 또는 FindNext 메서드는 항목 수가 적은 경우 필터링하는 것보다 빠릅니다. 컬렉션에 많은 수의 항목이있는 경우 특히 큰 컬렉션의 일부 항목 만 발견 될 경우 Restrict 메서드가 훨씬 빠릅니다.


DASL 필터 지원 동등한 프리픽스, 구문 및 스트링 매칭을 포함

Filtering Items Using a String Comparison

. Subject 속성을 필터링하면 "RE :"및 "FW :"와 같은 접두사가 무시됩니다.

관련 문제