2016-09-06 4 views
0

아래는 Outlook의 메일에서 첨부 파일을 다운로드하는 스크립트입니다. 첨부 파일 이름이 다른 경우에만 내 코드에서 언급 한 경로에덮어 쓰지 않고 동일한 이름의 첨부 파일을 다운로드하십시오.

Public Sub SaveAttachmentsToDisk(MItem As Outlook.MailItem) 
    Dim oAttachment As Outlook.Attachment 
    Dim sSaveFolder As String 
    Dim dateFormat 

    dateFormat = Format(Now, "yyyy-mm-dd") 
    sSaveFolder = "c:\My\temp\" 
    For Each oAttachment In MItem.Attachments 
     oAttachment.SaveAsFile sSaveFolder & oAttachment.DisplayName 
    Next 
End Sub 

그것은 다운로드 및 저장합니다.

예를 들어 첨부 파일이있는 메일을 'List.csv'로 받았습니다. 같은 이름으로 나는 약 10 번 우편을 받았다.

하나의 파일 (가장 최근 파일) 만 경로에 저장되었습니다.


나를 위해 적합한 최종 코드.

Public Sub saveAttachtoDisk(itm As Outlook.MailItem) 
    Dim objAtt As Outlook.Attachment 
    Dim saveFolder As String 
    Dim dt30daysAgo As Date 

    dt30daysAgo = DateAdd("d", -30, Now) 
    saveFolder = "c:\My\temp" 

    For Each objAtt In itm.Attachments 
     If itm.ReceivedTime > dt30daysAgo Then 
      If objAtt.FileName <> "list.csv" Then 
       objAtt.SaveAsFile saveFolder & "\" & objAtt.FileName 
      Else 
       objAtt.SaveAsFile saveFolder & "\" & itm.Subject & objAtt.FileName 
      End If 
     End If 
    Next 
End Sub 
+0

이 첨부 파일이 같은 이름 인 경우 파일을 덮어 쓰고있는 것 같아요. 파일 이름 끝에 카운터와 같은 것을 추가해보십시오. 또는 아마도 이메일의 배달 날짜 – gizlmo

+0

그래서 저장하기 전에 파일이 있는지 확인하고, 사본이 있으면 파일 이름을 변경하십시오. –

답변

1

동일한 이름의 기존 파일을 덮어 쓰는 중입니다.

매우 간단한 해결책은 파일 이름을 저장하기 전에 현재 날짜/시간을 파일 이름에 추가하는 것입니다.

마지막 30 일간의 첨부 파일 만 다운로드하려면 30 일 전에 메일의 ReceivedTime과 비교하려면 절차 시작 부분에 체크를하고 수신 시간이 더 짧으면 절차를 종료하십시오.

Public Sub SaveAttachmentsToDisk(MItem As Outlook.MailItem) 
    Dim oAttachment As Outlook.Attachment 
    Dim sSaveFolder As String 
    Dim dt30daysAgo As Date 

    dt30daysAgo = DateAdd("d", 30, Now) 

    If MItem.ReceivedTime < dt30daysAgo Then Exit Sub 

    sSaveFolder = "c:\My\temp\" 
    For Each oAttachment In MItem.Attachments 
     oAttachment.SaveAsFile sSaveFolder & Format(Now, "YYYY-MM-DD_hh-nn-ss") & oAttachment.DisplayName 
    Next 
End Sub 

그러나 ReceivedTime에 대한 확인이 잘 배치되지, 당신은 이상적으로 호출 프로 시저에이 작업을 수행해야합니다.

+0

고마워. 잘됐다. 나는 그것에 우편물을 첨부한다. 그러나 지난 30 일간의 첨부 파일을 다운로드하는 방법. – Azarudeen

+0

@Azarudeen 당신은 지난 30 일 동안 보내지는 이메일에 대해서만 첨부 파일을 의미합니까? –

+0

예, 한 달에 한 번이 작업을 수행합니다. 그래서 나는 지난 달에 이미 다운로드 한 첨부 파일을 원하지 않습니다. – Azarudeen

관련 문제