皆様こんにちは、ノグチです。
Gmail に、スマートリプライってありますよね。
届いたメールに対して、ワンクリックで定型文をセットした返信メールを作成してくれる機能で、これは便利だなあ、と面倒臭がりの私は重宝しております。
そして思うのです。
これがOutlook でもできたらいいのに…と…
Gmailのスマートリプライは、AIでメールの内容から返信する内容を提案してくれますが、流石にそこまでは厳しそうです
が、ワンクリックで定型文を返信するだけなら、Outlook VBAにだってできますよ!
ということで今回は、Outlook で、メールにワンクリックで定型文の返信をする方法をご紹介します。
Replyメソッドで返信メールのMailItemオブジェクトを取得する
メールを操作するためのMailItemオブジェクトや、プロパティについては以前の記事でご紹介していますので、こちらを併せてご覧ください。
返信メールを操作する為には、元のメールの情報(件名や送信先など)を持った、返信メールのMailItemオブジェクトが必要です。
この返信メールのMailItemオブジェクトを取得してくれるのが、MailItemオブジェクトのReplyメソッド。
返信したいメールのMailItemオブジェクトのReplyメソッドを使うことで、返信元のメールの情報を持った返信メールのMailItemオブジェクトを返してくれます。
返信メールを操作するには、このReplyメソッドが返してくれたMailItemオブジェクトを操作することになります。
MailItemオブジェクトのプロパティで返信メールの中身をセット
Replyメソッドで取得したMailItemオブジェクトのプロパティには、元のメールの情報がセットされています。
例えば、Subjectプロパティには『Re:(元のメールの件名)』がセットされていますし、Toプロパティには返信先のアドレスが既にセットされています。
なので、定型文で返信するだけならBodyプロパティだけ更新すればよいでしょう。
今回は、「了解しました。」というメッセージで返信したいので、Replyメソッドで取得したMailItemオブジェクトのBodyプロパティに「了解しました。」をセットすることにします。
ここまでをコードにしてみると、こんな風になります。
Set objReply = objItem.Reply With objReply .Body = "了解しました。" .Send End With
ワンクリックでメールに返信する
コーディングする内容を整理する
では、Replyメソッドを使って、全体のコーディングをしていきましょう。
コードの中でやることは、主にこの4つです。
- 今開いているメールのMailItemオブジェクトを取得する
- Replyメソッドで返信メールのMailItemオブジェクトを取得する
- 返信メールのMailItemオブジェクトのプロパティに、返信文をセット
- Sendメソッドで返信メールを送信する
ワンクリックで返信メールを送信するコード
これらをコードにすると、こんなコードになります。
Sub Auto_Reply() Dim objItem As Object Dim objIns As Inspector Dim objReply As MailItem Set objIns = Application.ActiveInspector Set objItem = objIns.CurrentItem '今開いているメールオブジェクトを取得 Set objReply = objItem.Reply With objReply .Body = "了解しました。" .Send End With End Sub
ActiveInspectorメソッドとCurrenItemメソッドで今開いているメールのMailItemメソッドを取得して、Replyメソッドで返信メールのMailItemオブジェクトを取得。
返信メールのMailItemオブジェクトのプロパティに、「了解しました。」の文字をセットして、メールを送信するコードです。
返信元メールの本文を残したい場合
上のコードではBodyプロパティに”了解しました。”をセットしています。
この場合、返信元のメール本文はコピーされてこず、Bodyプロパティにセットした”了解です。”だけがメール本文にセットされます。
返信元のメール本文もコピーしておきたい場合は、上のコードのBodyプロパティセット部分を、
.Body = "了解しました。" & .Body
としておけばOK。
また、ワンクリックで返信することを目的としているので、上のコードではいきなりSendメソッドで返信を送っていますが、返信メールを編集したい場合などはSendメソッドの部分をDiplayメソッドに書き換えておくとよいですね。
ワンクリックでメールに返信してみる
さて、こちらのメールを開きつつ…
上のコードを実行してから送信済みフォルダを見てみると…
この通り、返信メールが送信されていますね。
もちろんメニューバーにマクロをセット
ワンクリックで返信する、を実現するために、プロシージャをメールのメニューバーにもセットしておきましょう。
プロシージャのメニューバーへのセット方法は前回の記事でご紹介していますので、そちらをご覧ください。
ちなみに、プロシージャをメニューに追加する方法は前回お伝えしましたが、メニューにセットするとき、アイコンの指定と任意の名前をつけることができます。
まず、メールのオプションを開き、リボンのユーザー設定画面を開きます。
左側のリストダウンメニューからマクロを選択し、右側のメニューリストに新しいタブを追加。
その新しいタブにメニューに表示したいマクロを追加します。
そしてアイコン群の下にある表示名に、プロシージャにつけたい名前を入力して「OK」をクリック。
オプション画面を閉じて、メールのメニューバーを見てみると…
はい、指定したアイコンと名前で、プロシージャがセットされていますね。
あとはこのアイコンをクリックすれば上のコードが実行されて、返信メールが送信されますよ。
最後に
今回は、Outlook でメールにワンクリックで定型文の返信をする方法をご紹介しました。
AIを使えたらより良いのでしょうが、使わなくても決まりきった文章での返信ってありますよね。
そんなメールには、今回ご紹介した方法で返信の手間を削減してみてはいかがでしょうか。
それでは、最後までお読みいただき有難うございました!
連載目次:【Outlook VBA】メールをワンクリックで操作しよう
基本機能に加えてVBAを使えばもっと便利になるOutlook。
メールの返信、フォルダ移動だってワンクリックでできますよ。
便利なOutlookを、更に手間なく使ってみましょう!