2012-10-24 3 views
0

목표는 고객이 원하는 첨부 파일이 포함 된 전자 메일을 수신하면 원하는 위치에 첨부 ​​파일을 저장하는 것입니다.첨부 파일 자동 저장

이것은 내 새 코드로 컴파일되었지만 파일이 출력되지 않습니까?

미리 감사드립니다.

Private WithEvents Items As Outlook.Items 

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

Private Sub Application_NewMail() 

Dim oInbox As MAPIFolder 
Dim oItem As MailItem 

Set oInbox = Application.Session.GetDefaultFolder(olFolderInbox) 
Set oItem = oInbox.Items.GetLast 

'Only act if it's a MailItem 
Dim Msg As Outlook.MailItem 
If TypeName(item) = "MailItem" Then 
    Set Msg = oItem 

    'Change variables to match need. Comment or delete any part unnecessary. 
    If (Msg.SenderName = "Name Of Person") And _ 
     (Msg.Subject = "Subject to Find") And _ 
     (Msg.Attachments.Count >= 1) Then 

     'Set folder to save in. 
     Dim olDestFldr As Outlook.MAPIFolder 
     Dim myAttachments As Outlook.Attachments 
     Dim Att As String 

     'location to save in. Can be root drive or mapped network drive. 
     Const attPath As String = "C:\" 

     ' save attachment 
     Set myAttachments = item.Attachments 
     Att = myAttachments.item(1).DisplayName 
     myAttachments.item(1).SaveAsFile attPath & Att 

     ' mark as read 
     Msg.UnRead = False 
    End If 
End If 

ProgramExit: 
    Exit Sub 

ErrorHandler: 
    MsgBox Err.Number & " - " & Err.Description 
    Resume ProgramExit 
End Sub 
+0

실제로 코드를 실행하면 매개 변수가 표시 이름으로 바뀌고 '테스트'라는 제목을 붙여 이메일을 보냅니다. – William

답변

1

VBA 창을 열면 코드를 배치하는 "ThisOutlookSession"이라는 개체가 표시됩니다.

이 이벤트는 자동으로 새 전자 메일의 수신시 트리거 수신 :

당신의 편집에 관하여
Private Sub Application_NewMail() 

Dim oInbox As MAPIFolder 
Dim oItem As MailItem 


Set oInbox = Application.Session.GetDefaultFolder(olFolderInbox) 
Set oItem = oInbox.Items.GetLast 

//MsgBox oItem.To 
//Etcetera 

End Sub 

, 그것이 작동하지 않았는지 정말 조사하지 못했지만, 당신이 사용할 수있는, 내가 테스트하는 : 당신이 최신 저장 한 첨부 파일을 보여 WinExplorer에 '수정 한 날짜'를 사용할 수 없기 때문에 당신이 파일을 저장하지 않은 것처럼 보일 수 있다는

Dim atmt As Outlook.Attachment 
Dim Att As String 
Const attPath As String = "U:\" 


For Each atmt In Msg.Attachments 
    Att = atmt.DisplayName 
    atmt.SaveAsFile attPath & Att 
Next 

주 (지금은 단지주의). 하지만 알파벳순으로 볼 수 있습니다.

+0

답변 주셔서 감사합니다. 위의 코드에서 Application_Startup()을 Application_NewMail()로 변경했습니다.이 모든 것이 제가해야 할 일입니까? 나는 그걸 가지고 노는 중이었고 일할 수 없었다. – William

+1

아니요, Application_Startup은 Outlook을 시작할 때 실행되는 코드입니다. 귀하의 예제 코드에서 나는 다음 줄을 읽었습니다 : Set Msg = item 당신이 할 수있는 일은 Set Msg = oItem이고 코드를 여기에서 Application_NewMail에 붙여 넣는 것입니다 (게시 한 예제 다음에). – Trace

+0

내 편집을 참조하십시오, 나는 당신의 지시를 따라 왔으며 거의 ​​내가 거기에 있다고 생각합니다. – William

관련 문제