2016-09-06 10 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回メールを受け取った。

ただし、1つのファイル(最新のもの)のみがパスに保存されています。


私のために働く最終コード。

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日間の添付ファイルのみをダウンロードするには、メールのReceivedTimeと30日前の日付とを比較する手順の最初に小切手を追加し、受信時間が短い場合は手順を終了します。

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

はい、1か月に1回この作業を行います。だから先月にダウンロードした添付ファイルは欲しくない。 – Azarudeen

関連する問題