電子書籍の厳選無料作品が豊富!

はじめまして。

Outlookにて仕訳ルールの処理にて
特定のアドレスの方からのメールを仕訳け、さらに
添付ファイルを保存する。という処理を行っています。

添付ファイルの保存自体はネットでのVBAを参考に
作成することができました。

ただ、OutLook起動時に複数件、同じメールがある場合、
一番古いメールの添付ファイルのみが保存されてしまっているようです。

解決方法がわかる方、教えてください。
やりたいことは以下のとおりです。
宜しくお願い致します。

■実現したいこと
・件名Aのメールの場合:添付ファイルをフォルダーAへ保存
・件名Bのメールの場合:添付ファイルをフォルダーBへ保存
・件名Cのメールの場合:添付ファイルをフォルダーCへ保存
・件名Dのメールの場合:添付ファイルをフォルダーDへ保存

■OutLookのVBA
Public Sub SaveAttachments(objMsg As MailItem)

Const SAVE_Dir = "C:\"

Dim objFSO As Object
Dim objAttach As Attachment
Dim strFileName As String
Dim c As Integer: c = 1
Dim flg As Integer: flg = 1
Dim SAVE_PATH As String

Set objFSO = CreateObject("Scripting.FileSystemObject")

' 件名により、保存先のパスを変更します。
SAVE_PATH = SAVE_Dir
If VBA.Right(SAVE_PATH, 1) <> "\" Then SAVE_PATH = SAVE_PATH & "\"
Select Case objMsg.Subject
Case "件名A"
SAVE_PATH = SAVE_PATH & "フォルダーA"
Case "件名B"
SAVE_PATH = SAVE_PATH & "フォルダーB"
Case "件名C"
SAVE_PATH = SAVE_PATH & "フォルダーC"
Case "件名D"
SAVE_PATH = SAVE_PATH & "フォルダーD"
Case Else
flg = 0
End Select
If VBA.Right(SAVE_PATH, 1) <> "\" Then SAVE_PATH = SAVE_PATH & "\"

' 指定のフォルダに添付ファイルを格納
If flg = 1 Then
For Each objAttach In objMsg.Attachments
With objAttach
strFileName = SAVE_PATH & objAttach.FileName
.SaveAsFile strFileName
End With
Next
End If

End Sub

A 回答 (3件)

No.2です。



質問の意味を勘違いしていました。申し訳ありません。

No.1の方のおっしゃる通りだと思います。

他の方法としては、メールの表題・添付ファイルごとに受信時刻(objMsg.SentOn)を記憶しておき、受け取ったメールの受信時刻が新しい場合のみ保存するようにしてはどうでしょうか。
    • good
    • 0

SaveAttachments に問題があるのではなく、SaveAttachments を呼び出す側に問題があると思います。



ですので、SaveAttachments を呼び出す側のプログラムを示してもらわないと回答できないと思います。

この回答への補足

回答ありがとうございます。

仕訳ルールにて以下のルールを作成して
関数を実行しています。

(1)Aさんからのメールの場合、
(2)スクリプト「SaveAttachments」を実行する

補足日時:2014/01/10 09:18
    • good
    • 0

仕訳けフォルダの中のメールアイテムを1件ずつ読み込んで、SubプロシージャSaveAttachments()をCallしているのかと想像しますが、



>複数件、同じメールがある場合

というのは、同じ件名で添付ファイルも同じ(同名、同数の)メールアイテムが複数件あるということですか?

もしそうであれば、SaveAttachments()をCallするたびに、同じ件名のメールの同名の添付ファイルが上書き保存されているということではないでしょうか。

件名が同じメールアイテムでも、受信日時分秒?が取得できれば、
添付ファイルを保存するときに、添付ファイルのファイル名に時分秒の数字を付けて保存するようにすれば、上書き保存にならないで、すべての件名のメールアイテムの添付ファイルが保存できるようになるのではないでしょうか。

この回答への補足

回答ありがとうございます
同じ件名、添付ファイルも同一です。

1日に何通か同一メールがあり、
次回Outlook起動時に最新日時のファイルのみを保存したいのですが、一番古いメールの添付ファイルが保存されています。

補足日時:2014/01/07 08:34
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!