【Outlook VBA】Moveメソッドでメールを指定のフォルダに移動させる方法


outlook,メールを移動する

皆様こんにちは、ノグチです。

前回の記事では、MailItemオブジェクトのReplyメソッドを使って、ワンクリックで定型文でのメール返信をする方法をご紹介しました。

【Outlook VBA】Replyメソッドでメールにワンクリックで返信する方法
Outlook VBAで、今開いているメールにワンクリックで定型文の返信メールを送信する方法をご紹介しています。特別な文章を書くまでもない、でも返信しないのは…という場合に、「了解しました。」などの定型文を送信できるようにしておけば、ワンクリックで返信できますよ。

メールは、読んだら即返信するのが理想とはいえ、今手が離せなかったり、調べてからでないと返信できないこともありますよね。

でも、返信するまで放置するのも忍びないので、取り敢えず「後で詳細メールします」といった返信をしておきつつ、そのまま忘れてしまう、ということもありがちです。

では、返信が必要なメールは一箇所に集めておいて、そこを見れば返信が必要なメールがあることが分かるようにしておくのはどうでしょう?

ということで今回は、メールを指定のフォルダに移動させる方法をご紹介します!

スポンサーリンク

Moveメソッドでメールを指定フォルダに移動させる

Moveメソッドの記述方法

メールを指定のフォルダに移動してくれるのが、MailItemオブジェクトのMove メソッドです。

記述方法はこちら。

MailItemオブジェクト.Move (移動先フォルダのFolderオブジェクト)

単純ですね。

パラメーターは、移動先にしたい受信フォルダのFolderオブジェクトを指定します。

“フォルダー名”のように指定してもエラーになりますので、ご注意を!

メールの移動先フォルダを準備する

今開いているメールをMoveメソッドで「要返信」というフォルダに格納してみましょう。

まずは受信フォルダのサブフォルダに、「要返信」フォルダを作っておきます。

そして、このフォルダのFolderオブジェクトを取得しておきましょう。

Sub Get_Folder()
Dim myNameSpace As NameSpace
Dim myInbox As Folder

Set myNameSpace = GetNamespace("MAPI")

Set myInbox = myNameSpace.GetDefaultFolder(olFolderInbox).Folders.Item("要返信")

End Sub

FolderオブジェクトやNameSpaceオブジェクトについては、こちらの記事でご紹介していますので、併せてご覧ください。

【エクセルVBA】GetNamespaceメソッドでOutlookのデータフォルダにアクセスする方法
GetNameSpaceメソッドでOutlookのデータフォルダにアクセスする方法をご紹介しています。このメソッドでOutlookのNameSpaceオブジェクトを取得すれば、メール、連絡先、予定表などのデータフォルダにアクセスして、更にその中のデータを読込んだり、エクセルシートに書き出したりすることができますよ。

今開いているメールのMailItemオブジェクトを取得する

お次は、移動させるメールのMailItemオブジェクトを取得します。

今開いているメールのMailItemオブジェクトを取得するには、ApplicationオブジェクトのActiveInspectorメソッドと、CrrentItemプロパティを使うのでしたね。

【Outlook VBA】CurrentItemプロパティで今開いているメールのMailItemオブジェクトを取得する方法
Outlook VBAで、今開いているメールの添付ファイルをワンクリックで任意のフォルダに保存する方法を5ステップにわけて、連載記事でご紹介しています。今回は、InspectorオブジェクトのCurrentItemプロパティによるMailItemオブジェクトの取得についての説明です。
コードはこうなります。
Sub Get_Mail()
Dim objMail As Object
Dim objIns As Inspector

Set objIns = Application.ActiveInspector
Set objMail = objIns.CurrentItem   '今開いているメールオブジェクトを取得

End Sub

Moveメソッドでメールを指定フォルダに移動させる

最後に、今回の主役、Moveメソッドを入れましょう。

上ふたつのコードを組み合わせ、最後にMoveメソッドを入れてあげれば完成です。

Sub Move_Mail()
Dim objItem As Object
Dim objIns As Inspector
Dim myNameSpace As NameSpace
Dim myInbox As Folder

Set myNameSpace = GetNamespace("MAPI")

Set myInbox = myNameSpace.GetDefaultFolder(olFolderInbox).Folders.Item("要返信")

Set objIns = Application.ActiveInspector
Set objItem = objIns.CurrentItem   '今開いているメールオブジェクトを取得

objItem.Move myInbox

End Sub
では早速、こちらのメールを開いて上のコードを実行してみましょう。
outlook,返信元メール

そして、先ほど作成した「要返信」フォルダを覗いてみると…

outlook、フォルダ,移動

この通り、メールが「要返信」フォルダへ移動されていますね。

ワンクリックで定型文の返信を送りつつメールを指定フォルダに移動する

メールを受け取ったとき、予定を調整したり、確認しないとそのメールに対して明確な返信ができないな…なんていうときに、とりあえず「確認して連絡します。」というメールを送ったりすること、ありますよね。

そういう場合、上のコードと前回のワンクリックで定型文で返信する方法を組み合わせて、とりあえずの返信をしつつ、返信が必要なフォルダに移動させておけば便利です。

Moveメソッドを前回の記事でご紹介したコードに加えれば、ワンクリックでメールに返信しつつ、メールを「要返信」というフォルダに移動させることができますよ。

前回の記事でご紹介したReplyメソッドを上のコードに差し込みます。

返信メールの文面は、「予定を確認後連絡します。」としておきましょう。

するとこんなコードになります。

Sub Reply_and_Move_Mail()
Dim objItem As Object
Dim objIns As Inspector
Dim myNameSpace As NameSpace
Dim myInbox As Folder
Dim objReoly As Object

Set myNameSpace = GetNamespace("MAPI")

Set myInbox = myNameSpace.GetDefaultFolder(olFolderInbox).Folders.Item("要返信")

Set objIns = Application.ActiveInspector
Set objItem = objIns.CurrentItem   '今開いているメールオブジェクトを取得
Set objReply = objItem.Reply

With objReply
    .Body = "予定を確認後連絡します。" & .Body
    .Send
End With

objItem.Move myInbox

End Sub
これで、メールに返信しつつ、返信元メールを「要返信」フォルダに移動させることができますよ。

メールに返信したら「要返信」フォルダから移動させるのを忘れずに

返信が必要なメールを「要返信」フォルダに移動させる方法をご紹介していますが、移動させたあとにメールの返信をした場合は、返信元メールを受信ボックスなり、他のフォルダに移しておくようにしましょう。

そのままにしておくと、結局どれが要返信メールなのかわからなくなってしまいますからね。

「要返信」フォルダから他のフォルダへメールを移動させる場合にも、Moveメソッドを使えばワンクリックでメールが移動できますよ。

最後に

今回は、Moveメソッドを使ってメールを指定フォルダへ移動させる方法をご紹介しました。

Outlookの機能である自動振り分けでは振り分けられなかったり、自分がメールの内容を忘れないように、一旦別のフォルダに移したい…なんていうときに使えますよ。

それでは最後までお読みいただきありがとうございました!


タイトルとURLをコピーしました