【Outlook VBA】Replyメソッドでメールにワンクリックで返信する方法


返信メールアイキャッチ

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

Gmail に、スマートリプライってありますよね。

届いたメールに対して、ワンクリックで定型文をセットした返信メールを作成してくれる機能で、これは便利だなあ、と面倒臭がりの私は重宝しております。

そして思うのです。

これがOutlook でもできたらいいのに…と…

Gmailのスマートリプライは、AIでメールの内容から返信する内容を提案してくれますが、流石にそこまでは厳しそうです

が、ワンクリックで定型文を返信するだけなら、Outlook  VBAにだってできますよ!

ということで今回は、Outlook で、メールにワンクリックで定型文の返信をする方法をご紹介します。

スポンサーリンク

Replyメソッドで返信メールのMailItemオブジェクトを取得する

メールを操作するためのMailItemオブジェクトや、プロパティについては以前の記事でご紹介していますので、こちらを併せてご覧ください。

【エクセルVBA】Outlookでメールを作成・送信する方法
エクセルシートに記入された件名や本文を、エクセルVBAによってOutlookのメールの件名と本文にセットしてメール送信する方法をご紹介しています。VBAでメールの送信ができれば、宛先に応じてメールの本文を変えつつ一斉に送信することもできますよ。

返信メールを操作する為には、元のメールの情報(件名や送信先など)を持った、返信メールのMailItemオブジェクトが必要です。

この返信メールのMailItemオブジェクトを取得してくれるのが、MailItemオブジェクトのReplyメソッド

記述方法はこちら。
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つです。

  1. 今開いているメールのMailItemオブジェクトを取得する
  2. Replyメソッドで返信メールのMailItemオブジェクトを取得する
  3. 返信メールのMailItemオブジェクトのプロパティに、返信文をセット
  4. 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メソッドに書き換えておくとよいですね。

ワンクリックでメールに返信してみる

さて、こちらのメールを開きつつ…

返信元メール

上のコードを実行してから送信済みフォルダを見てみると…

返信メール

この通り、返信メールが送信されていますね。

もちろんメニューバーにマクロをセット

ワンクリックで返信する、を実現するために、プロシージャをメールのメニューバーにもセットしておきましょう。

プロシージャのメニューバーへのセット方法は前回の記事でご紹介していますので、そちらをご覧ください。

【Outlook VBA】今開いているメールからワンクリックで予定登録画面を開く方法
Outlook VBAで、ワンクリックで今開いているメールの内容を転記した予定登録画面を開く方法をご紹介しています。メールのメニューバーにマクロのプロシージャを表示しておく方法と併せて使えば、メニューのワンクリックで予定登録ができちゃいますよ。

ちなみに、プロシージャをメニューに追加する方法は前回お伝えしましたが、メニューにセットするとき、アイコンの指定と任意の名前をつけることができます。

まず、メールのオプションを開き、リボンのユーザー設定画面を開きます。

左側のリストダウンメニューからマクロを選択し、右側のメニューリストに新しいタブを追加。

その新しいタブにメニューに表示したいマクロを追加します。

ここまでは、前回ご紹介した方法と同じです。
右側のメニューリストに追加したプロシージャを選択して、画面右下にある「名前の変更」をクリックします。
outlookメールオプション
すると、アイコンが沢山並んだ画面が表示されますので、好きなアイコンを選択します。
名前の変更

そしてアイコン群の下にある表示名に、プロシージャにつけたい名前を入力して「OK」をクリック。

オプション画面を閉じて、メールのメニューバーを見てみると…

メニューセット

はい、指定したアイコンと名前で、プロシージャがセットされていますね。

あとはこのアイコンをクリックすれば上のコードが実行されて、返信メールが送信されますよ。

最後に

今回は、Outlook でメールにワンクリックで定型文の返信をする方法をご紹介しました。

AIを使えたらより良いのでしょうが、使わなくても決まりきった文章での返信ってありますよね。

そんなメールには、今回ご紹介した方法で返信の手間を削減してみてはいかがでしょうか。

それでは、最後までお読みいただき有難うございました!

連載目次:【Outlook VBA】メールをワンクリックで操作しよう

基本機能に加えてVBAを使えばもっと便利になるOutlook。

メールの返信、フォルダ移動だってワンクリックでできますよ。

便利なOutlookを、更に手間なく使ってみましょう!

  1. 【Outlook VBA】Replyメソッドでメールにワンクリックで返信する方法
  2. 【Outlook VBA】Moveメソッドでメールを指定のフォルダに移動させる方法

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