以下のような作業を、OutlookVBAで自動化することは可能でしょうか?
条件:メール受信時、件名に特定の文字列が含まれていた場合
①そのメールの添付ファイル(CSVファイル)を、LAN上の他のコンピュータのCドライブにコピー
②そのファイルを、DATA.CSVにリネームする
また、Outlook VBAを詳しく解説したサイトがあれば
教えてください。
よろしくお願いいたします。
基本はこういう↓感じになると思います。
Sub mySaveAttachment() '*******定数:環境に応じて設定****************** Const SEARCHWORD = "検索する語" Const SAVEPATH = "保存ファイルのUNCパス" '********************************************* '変数宣言 Dim myNS As NameSpace 'Outlookアイテムを扱う為の親オブジェクト Dim myInBox As MAPIFolder '受信トレイ Dim myItem As MailItem '受信トレイ内のメール Dim myAttach As Attachment 'メールの添付ファイル '初期値設定 Set myNS = Outlook.Application.GetNameSpace("MAPI") Set myInBox = myNS.GetDefaultFolder(olFolderInBox) '受信ボックスの各メールに行う処理 For Each myItem In myInBox.Items '件名にSEARCHWORDが含まれていれば以下を実行 If InStr(myItem.Subject, SEARCHWORD) > 0 Then 'メールの添付ファイルに行う処理 For Each myAttach In myItem.Attachments myAttach.SaveAsFile SAVEPATH Next End If Next End Sub
(既に同名ファイルがあった場合や、添付ファイルが複数の場合のエラーチェックは省いています。)
OutlookのVBAは解説ページって少ないですよね…。
解説サイトは見つからなかったのですが、こんな↓ページを見つけました。
http://www2s.biglobe.ne.jp/~SATSYS/outlook%20vba.txt
参考になるとよいのですが。
わざわざコードまで書いていただきすみません。
教えていただいたコードをカスタマイズし、
Application_NewMailに記述したところ目的の動作になりました。
ネットワーク上の他のPCへのコピーはできませんでしたが、
バッチファイル等で対応できそうです。
教えていただいたサイトも参考になります。
どうもありがとうございました。