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のメールも問題なく移動していた。

ちなみに仕分けルールだと、次のように設定できる。うーん、指定フォルダへの移動くらいならマクロで組む必要はないなー。

仕分けルールの他の処理には、削除やコピー、印刷、通知をするといったものもある。
どうせならマクロでなければできないことをしたいけど。