VisualBasic(Outlookマクロ:特定の件名のメールを別フォルダへ移動)
■MailItemのメソッドMoveを試してみる。
前回MailItemのプロパティを見たので、今回メソッドの1つのMoveを使って、受信トレイに入っているメールを別のフォルダに移す。仕分けルールの機能で移すこともできるけど、マクロのお試し。
まず、実行にあたりサンプルのメールやフォルダを準備する。
・受信トレイの下に「sample」フォルダを作成。
・受信トレイに「macrotest」の件名を持つメールが3つある状態。
Microsoftのウェブページを参考に、下のようなコードを入れる。
Sub Sample2()
Dim myFolder As Folder
Dim myItem As Object
Dim myItems As Object
Dim samplefolder As Folder
Set myNameSpace = Application.GetNamespace("MAPI")
Set myFolder = myNameSpace.GetDefaultFolder(olFolderInbox)
Set samplefolder = myFolder.Folders("sample")
Set myItems = myFolder.Items
Set myItem = myItems.Find("[Subject] = 'macrotest'")
While TypeName(myItem) <> "Nothing"
myItem.Move samplefolder
Set myItem = myItems.FindNext
Wend
End Sub
このコードの概要は次のような感じ。
myFolderで受信トレイを取得。
その配下にある「sample」フォルダをsamplefolderとして取得。
受信トレイ配下にあるメールをmyItemsとして取得し、その中の件名[Subject]が「macrotest」のものを検索。前回、件名はプロパティのTaskSubjectで取れたけど、これを指定するとエラーになった。
該当するものをmyItem.Moveで「sample」フォルダへ移動。
実行してみると、「sample」フォルダ内は次のようになった。
先週送ったmacrotestのメールも問題なく移動していた。
ちなみに仕分けルールだと、次のように設定できる。うーん、指定フォルダへの移動くらいならマクロで組む必要はないなー。
仕分けルールの他の処理には、削除やコピー、印刷、通知をするといったものもある。
どうせならマクロでなければできないことをしたいけど。