2011-06-28 12 views
2

特定のOutlook受信トレイにすべての添付ファイルをダウンロードするスクリプトを作成しましたが、特定の日付範囲内のメールのみを取得するように変更する必要があります。ここでOutlook添付ファイルデータの日付範囲内にダンプ

は、フォルダ内のすべての添付ファイルをダウンロードするための私のコードです:

Sub DlAttachments() 
    MsgBox ("Cross fingers and click button to start download.") 
    Set objOutlook = CreateObject("Outlook.Application") 
    Set objNamespace = objOutlook.GetNamespace("MAPI") 

    strFolderName = "Special Inbox Admin" 
    Set objMailbox = objNamespace.Folders(strFolderName) 
    Set objFolder = objMailbox.Folders("Inbox") 

    Set colItems = objFolder.Items 

    For Each objMessage In colItems 
     intCount = objMessage.Attachments.Count 
     If intCount > 0 Then 
      For i = 1 To intCount 
       objMessage.Attachments.Item(i).SaveAsFile "C:\SP_INBOX_DUMP_temp\" & objFolder & "_" & _ 
        objMessage.Attachments.Item(i).FileName 
      Next 
     End If 
    Next 

    MsgBox ("Download complete. Files downloaded to C:\SP_INBOX_DUMP_temp\") 
End Sub 

答えて

0

あなたがオブジェクトメッセージのSentOnプロパティを使用することができます。

Dim myDate as Date 

For Each objMessage In colItems 
    intCount = objMessage.Attachments.Count 
    'get the sent date 
    sentDate = objMessage.SentOn 
    'ref date (adapt format to your system date format dd/mm/yyyy or mm/dd/yyyy) 
    myDate = dateValue("31/1/2009") 
    If myDate > sentDate Then 
     'do whatever --> Exit For ? 
    End If 
    If intCount > 0 Then 
     For i = 1 To intCount 
      objMessage.Attachments.Item(i).SaveAsFile "C:\SP_INBOX_DUMP_temp\" & objFolder & "_" & _ 
       objMessage.Attachments.Item(i).FileName 
     Next 
    End If 
Next 

よろしく、

マックス

+0

これは私が必要としたプロパティです。 myDateは次のようになりますか?Format(06/29/2011、 "mm/dd/yyyy")? –

+0

@David:あなたは文字列の種類と比較するだけです>> "11/10/2011"> sentDateは私のために働いた – JMax

+0

それは私に "12/28/2009"> "12/22/2010"を与えてくれました。私はそれが文字列の文字列を比較していると思うので、比較演算子は日付ソートではなく、アルファベット順ソートのどこにあるかを示します。 Format()関数も役に立ちませんでした。 to_date()のようなものはありますか? –

0

ない回避策としてそんなに答え:成功した最大のソリューションを実装することができなかった、私は日に電子メールをコピーしたものがにあなたのコードを変更します別のフォルダに移動し、新しいフォルダで動作するように自分のコードを変更しました。汚いけど、ちょっと、それは動作します。

+0

私の回答を編集しました(遅れて申し訳ありません)新しいソリューションで - 私のOutlookで簡単なテストケースで試しました – JMax

1

は、特定の日付範囲内にちょうどそれらのあなたのコレクション内の項目を制限する制限の方法を使用します。

Set colItems = objFolder.Items.Restrict("[ReceivedTime] > '06/01/2011 12:00' And [ReceivedTime] < '06/02/2011 12:00'") 

基本的にこれが何をするか制限が6/1で受信したものになるコレクション内のメールです。これはエアーコードなので、シンタックスを演奏する必要があります。

Restrictメソッドの詳細:http://msdn.microsoft.com/en-us/library/bb220369(v=office.12).aspx

関連する問題