![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
はじめまして。
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.3
- 回答日時:
No.2です。
質問の意味を勘違いしていました。申し訳ありません。
No.1の方のおっしゃる通りだと思います。
他の方法としては、メールの表題・添付ファイルごとに受信時刻(objMsg.SentOn)を記憶しておき、受け取ったメールの受信時刻が新しい場合のみ保存するようにしてはどうでしょうか。
No.2
- 回答日時:
SaveAttachments に問題があるのではなく、SaveAttachments を呼び出す側に問題があると思います。
ですので、SaveAttachments を呼び出す側のプログラムを示してもらわないと回答できないと思います。
この回答への補足
回答ありがとうございます。
仕訳ルールにて以下のルールを作成して
関数を実行しています。
(1)Aさんからのメールの場合、
(2)スクリプト「SaveAttachments」を実行する
No.1
- 回答日時:
仕訳けフォルダの中のメールアイテムを1件ずつ読み込んで、SubプロシージャSaveAttachments()をCallしているのかと想像しますが、
>複数件、同じメールがある場合
というのは、同じ件名で添付ファイルも同じ(同名、同数の)メールアイテムが複数件あるということですか?
もしそうであれば、SaveAttachments()をCallするたびに、同じ件名のメールの同名の添付ファイルが上書き保存されているということではないでしょうか。
件名が同じメールアイテムでも、受信日時分秒?が取得できれば、
添付ファイルを保存するときに、添付ファイルのファイル名に時分秒の数字を付けて保存するようにすれば、上書き保存にならないで、すべての件名のメールアイテムの添付ファイルが保存できるようになるのではないでしょうか。
この回答への補足
回答ありがとうございます
同じ件名、添付ファイルも同一です。
1日に何通か同一メールがあり、
次回Outlook起動時に最新日時のファイルのみを保存したいのですが、一番古いメールの添付ファイルが保存されています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) Excel vbaについての質問 3 2023/04/18 16:14
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) outlook マクロが終了しません。 1 2022/09/02 11:14
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのマクロについて教え...
-
重複確認
-
エクセルのマクロについて教え...
-
[VB.net] ボタン(Flat)のEnable...
-
マクロの記録を使用したマクロ...
-
エクセルのVBAコードについて教...
-
{ CONTROL Forms.Label.1}が...
-
VBAでCOPYを繰り返すと、処理が...
-
VBの色を変えるにはどうしたら...
-
VBAなくなるの?
-
Outlookの「受信日時」「送信者...
-
vbaにてseleniumを使用したedge...
-
VBA一覧取得 再投稿
-
IEを使わないでhtmlテキストを...
-
A列B列どちらにもあるのを抽...
-
Excelに保存されているユーザー...
-
VBAコンボボックスで選択した値...
-
Excel 範囲指定スクショについ...
-
Excelのマクロについて教えてく...
-
for 文の 繰り返し処理に使える...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
OCNメールのフィルタ編集につい...
-
outlookで宛先が異なるメールを...
-
件名 Message from skymail ...
-
「ご感想メール」の「件名」欄...
-
Becky!ver.2で、カラーラベルの...
-
英文の迷惑メールがくる
-
outlook expressで件名の同じメ...
-
outlook express で件名、宛先...
-
OutlookのVBAについて教えてく...
-
Outlookで,同件名のGmailの送...
-
Outlook Expressのメールメッセ...
-
Beckyで、重複したメールだけ削...
-
「このメッセージには件名があ...
-
受信メールの件名の変更方法は
-
件名「順番をチェック番号 **7...
-
メール件名に [***spam***] (E...
-
Outlookのメール仕分けが機能し...
-
Outlookで件名、送信者の欄の日...
-
件名に[Norton AntiSpam]が付く...
-
Microsoft Outlookでの件名表示...
おすすめ情報