【Outlook VBA】返信メールを作成する方法!全員に返信に加え、宛先追加や件名・本文追記も!

Outlook VBAで「返信」メールを作成し、宛先追加や件名、本文修正など一度に行いたいときはないでしょうか。

けど、そんな中で悩むことは、

・「返信」メール作成と宛先追加を一度に行いたいがやり方がわからない。
・「全員に返信」メールの作成と本文への追記を一度に行いたいがやり方がわからない。
・Outlook VBAで「返信」メールを作成したいがやり方がわからない。

ですよね。

今回はそんなお悩みを解決する

・Outlook VBAで「返信」と「全員に返信」メールを作成する方法
・Outlook VBAで宛先追加や件名・本文追記をする方法

についてまとめます!

Outlook VBAで「返信」「全員に返信」メールを作成する完成イメージ

Outlook VBAで「返信」メールを作成する完成イメージは以下の通りです。

・「返信」と「全員に返信」を使い分ける
返信メールにはTOへの返信だけの「返信」とTOとCCすべてに返信する「全員に返信」と2パターンあります。
用途に応じてそれぞれのメソッドを使い分け自動返信文を挿入していきます。

・宛先を追加する
これまで手動で入力していた宛先を自動で宛先へ挿入していきます。

TOへの返信のみ

全員に返信

・件名へ追記する
通常「RE: 」がつくだけですが、さらに文言を追加をしていきます。

・本文へ追記する
返信する時の文言はだいたい決まっていますよね。
そんな定型文を自動で挿入していきます。

・送信する
処理の最後は送信処理を行います。

また、すぐに送信したくない方は表示のみの選択ができます。

では早速VBAを順に組み立て、実装して動かしてみましょう。

Outlook VBAで「返信」メールを作成する

まずは「返信」メールを作成します。
手動で返信ボタンを押したときの処理と同じ内容をVBAで実現していきます。

Sub 選択メールを返信する()
    Dim objReItem As Outlook.MailItem
    
    '現在表示中のメールアイテムを「返信」メールとしてセットします。
    Set objReItem = ActiveInspector.CurrentItem.Reply
    
    objReItem.Recipients.ResolveAll
    
    '表示します。
    objReItem.Display
    
    
    'オブジェクトの開放
    Set objReItem = Nothing

End Sub

返信したいメールを開き、実装したマクロを実行します。

はい、「返信」メールが作成され表示されましたね。

Outlook VBAで全員に返信するメールを作成する

次に全員に返信する「返信」メールを作成します。
冒頭のReplyメソッドからReplyAllメソッドへ変更するだけでOKです。

Sub 選択メールを返信する()
    Dim objReItem As Outlook.MailItem
    
    '現在表示中のメールアイテムを「全員に返信」メールとしてセットします。
    Set objReItem = ActiveInspector.CurrentItem.ReplyAll
    
    objReItem.Recipients.ResolveAll
    
    '表示します。
    objReItem.Display
    
    
    'オブジェクトの開放
    Set objReItem = Nothing

End Sub

返信したいメールを開き、実装したマクロを実行します。

はい、「全員に返信」メールが作成され表示されましたね。

 

まずは返信メールをVBAで扱う際の基本形として覚えておきましょう。

Outlook VBAで「返信」メールを作成し、宛先を追加する

続いて返信先の宛先を追加しましょう。
TOの返信先アドレスを指定します。
返信メールはデフォルトでTOを含むため追加という形になります。

objReItem.To  & ”;”  & ”test@extan.jp”

CCを指定します。

objReItem.CC = “test1@extan.jp”

タカヒロ
タカヒロ
複数アドレスを指定する場合はセミコロン「;」で区切ってください。

Sub 選択メールを返信する()
    Dim objReItem As Outlook.MailItem
    
    '現在表示中のメールアイテムを「返信」メールとしてセットします。
    Set objReItem = ActiveInspector.CurrentItem.Reply
    
    '返信先を指定します。
    '返信先アドレスを指定してください。
    objReItem.To = objReItem.To  & ";"  & "test@extan.jp"
    
    'CCを指定してください。
    objReItem.CC = "test1@extan.jp"
    
    objReItem.Recipients.ResolveAll
    
    '表示します。
    objReItem.Display
    
    
    'オブジェクトの開放
    Set objReItem = Nothing

End Sub

返信したいメールを開き、実装したマクロを実行します。

はい、「返信」メールに追加分のアドレスが挿入されましたね。

タカヒロ
タカヒロ
objReItem.ToはSMTPアドレスの無い表示名だけになりますので、その際は送信前に名前解決をするようお願いします。

Outlook VBAで「全員に返信」メールを作成し、宛先を追加する

「全員に返信」メールにも宛先を追加しましょう。

「全員に返信」メールはデフォルトでCCを含むため、追加という形になります。
CCを指定します。

objReItem.CC = objReItem.CC  & ”test1@extan.jp”

タカヒロ
タカヒロ
複数アドレスを指定する場合はセミコロン「;」で区切ってください。

Sub 選択メールを返信する()
    Dim objReItem As Outlook.MailItem
    
    '現在表示中のメールアイテムを「全員に返信」メールとしてセットします。
    Set objReItem = ActiveInspector.CurrentItem.ReplyAll
    
    '返信先を指定します。
    '返信先アドレスを指定してください。
    objReItem.To = objReItem.To & ";" & "test@extan.jp"
    
    'CCを指定してください。
    objReItem.CC = objReItem.CC & ";" & "test1@extan.jp"
    
    objReItem.Recipients.ResolveAll
    
    '表示します。
    objReItem.Display
    
    'オブジェクトの開放
    Set objReItem = Nothing

End Sub

全員に返信したいメールを開き、実装したマクロを実行します。

はい、「全員に返信」メールに追加分のアドレスが挿入されましたね。

Outlook VBAで「返信」メールを作成し、件名へ追記する

次は件名の内容を追加します。

<メール返信します>のところを適当な内容に変えてください。

objReItem.Subject = objReItem.Subject & “<メール返信します>”

タカヒロ
タカヒロ
件名の文頭に追加する場合は「”<メール返信します>” & objReItem.Subject」としてください。

Sub 選択メールを返信する()
    Dim objReItem As Outlook.MailItem
    
    '現在表示中のメールアイテムを「返信」メールとしてセットします。
    Set objReItem = ActiveInspector.CurrentItem.Reply
    
    '返信先を指定します。
    '返信先アドレスを指定してください。
    objReItem.To = objReItem.To & ";" & "test@extan.jp"
    
    'CCを指定してください。
    objReItem.CC = "test1@extan.jp"
    
    '件名を指定します。
    objReItem.Subject = objReItem.Subject & "<メール返信します>"

    objReItem.Recipients.ResolveAll
    
    '表示します。
    objReItem.Display
    
    'オブジェクトの開放
    Set objReItem = Nothing

End Sub

返信したいメールを開き、実装したマクロを実行します。

はい、件名に追記した内容が反映されましたね。

Outlook VBAで「全員に返信」メールを作成し、件名へ追記する

「返信」メールのReplyメソッドをReplyAllメソッドへ変更します。

Sub 選択メールを返信する()
    Dim objReItem As Outlook.MailItem
    
    '現在表示中のメールアイテムを「全員に返信」メールとしてセットします。
    Set objReItem = ActiveInspector.CurrentItem.ReplyAll
    
    '返信先を指定します。
    '返信先アドレスを指定してください。
    objReItem.To = objReItem.To & ";" & "test@extan.jp"
    
    'CCを指定してください。
    objReItem.CC = objReItem.CC & ";" & "test1@extan.jp"
    
    '件名を指定します。
    objReItem.Subject = objReItem.Subject & "<メール返信します>"

    objReItem.Recipients.ResolveAll
    
    '表示します。
    objReItem.Display
    
    'オブジェクトの開放
    Set objReItem = Nothing

End Sub

返信したいメールを開き、実装したマクロを実行します。

はい、件名に追記した内容が反映されましたね。

Outlook VBAで「返信」メールを作成し、本文へ追記する

メール本文に返信文を追記します。

追記内容は以下の通りです。適宜変更してください。

objReItem.Body = “お世話になっております。” & vbCrLf _
& “確かに受領いたしましたことご連絡致します。” & vbCrLf _
& “よろしくお願いいたします。” & vbCrLf _
& “*****************************” & vbCrLf _
& “エク短商事株式会社” & vbCrLf _
& “◇◇部◇◇課タカヒロ” & vbCrLf _
& “*****************************” & vbCrLf _
& objReItem.Body

VBAとなります。

Sub 選択メールを返信する()
    Dim objReItem As Outlook.MailItem
    
    '現在表示中のメールアイテムを「返信」メールとしてセットします。
    Set objReItem = ActiveInspector.CurrentItem.Reply
    
    '返信先を指定します。
    '返信先アドレスを指定してください。
    objReItem.To = objReItem.To & ";" & "test@extan.jp"
    
    'CCを指定してください。
    objReItem.CC = "test1@extan.jp"
    
    '件名を指定します。
    objReItem.Subject = objReItem.Subject & "<メール返信します>"
    
    'メール本文を指定します。
    objReItem.Body = "お世話になっております。" & vbCrLf _
    & "確かに受領いたしましたことご連絡致します。" & vbCrLf _
    & "よろしくお願いいたします。" & vbCrLf _
    & "*****************************" & vbCrLf _
    & "エク短商事株式会社" & vbCrLf _
    & "◇◇部◇◇課タカヒロ" & vbCrLf _
    & "*****************************" & vbCrLf _
    & objReItem.Body
    
    objReItem.Recipients.ResolveAll
    
    '表示します。
    objReItem.Display
    
    
    'オブジェクトの開放
    Set objReItem = Nothing

End Sub

メールを選択した上、マクロを実行します。

はい、本文に追記されていますね。

Outlook VBAで「全員に返信」メールを作成し、本文へ追記する

「返信」メールのReplyメソッドをReplyAllメソッドへ変更します。

Sub 選択メールを返信する()
    Dim objReItem As Outlook.MailItem
    
    '現在表示中のメールアイテムを「全員に返信」メールとしてセットします。
    Set objReItem = ActiveInspector.CurrentItem.ReplyAll
    
    '返信先を指定します。
    '返信先アドレスを指定してください。
    objReItem.To = objReItem.To & ";" & "test@extan.jp"
    
    'CCを指定してください。
    objReItem.CC = objReItem.CC & ";" & "test1@extan.jp"
    
    '件名を指定します。
    objReItem.Subject = objReItem.Subject & "<メール返信します>"
    
    'メール本文を指定します。
    objReItem.Body = "お世話になっております。" & vbCrLf _
    & "確かに受領いたしましたことご連絡致します。" & vbCrLf _
    & "よろしくお願いいたします。" & vbCrLf _
    & "*****************************" & vbCrLf _
    & "エク短商事株式会社" & vbCrLf _
    & "◇◇部◇◇課タカヒロ" & vbCrLf _
    & "*****************************" & vbCrLf _
    & objReItem.Body
    
    objReItem.Recipients.ResolveAll
    
    '表示します。
    objReItem.Display
    
    'オブジェクトの開放
    Set objReItem = Nothing

End Sub

メールを選択した上、マクロを実行します。

はい、「全員に返信」の本文に追記されていますね。

<追加>返信メールの本文に追記した際にハイパーリンクが切れてしまう場合の対処法

「返信」または「全員に返信」メールを作成し、本文へ追記する際に元のメール本文のハイパーリンクが切れてしまう場合の対処法について説明をします。

・現象
元のメール本文にハイパーリンクが含まれる場合、「返信」または「全員に返信」メールを作成し、本文へ追記すると、ハイパーリンクが切れてしまいます。

・原因
原因は、Bodyプロパティではリンクやスタイルは除外されてしまう仕様であるためです。

・対策
対策は、Bodyプロパティではなくリンクやスタイルを保持できるHTMLBodyプロパティを使います。

メール本文を挿入している以下の箇所を

‘メール本文を指定します。
objReItem.Body = “お世話になっております。” & vbCrLf _
& “確かに受領いたしましたことご連絡致します。” & vbCrLf _
& “よろしくお願いいたします。” & vbCrLf _
& “*****************************” & vbCrLf _
& “エク短商事株式会社” & vbCrLf _
& “◇◇部◇◇課タカヒロ” & vbCrLf _
& “*****************************” & vbCrLf _
& objReItem.Body

以下のように変更します。

‘メール本文を指定します。
objReItem.HTMLBody = “お世話になっております。” & “<br>” _
& “確かに受領いたしましたことご連絡致します。” & “<br>” _
& “よろしくお願いいたします。” & “<br>” _
& “*****************************” & “<br>” _
& “エク短商事株式会社” & “<br>” _
& “◇◇部◇◇課タカヒロ” & “<br>” _
& “*****************************” & “<br>” _
& objReItem.HTMLBody

タカヒロ
タカヒロ
HTMLBodyプロパティを使用する場合は、追加する値はHTML形式である必要があります。
改行は”<br>”を末尾につけたり、太字は”<b>太字</b>”という形になります。

より詳しいHTML形式の書式の使い方についてまとめてみました。

【Outlook VBA】HTML形式のメールを作成/送信する方法!書式やハイパーリンクも設定可!

HTML形式のコードはちょっと難しいと感じる方は
こちらのリッチテキスト形式でメール作成することオススメします。
Excelの書式のままメール作成ができますのでカンタンに書式設定ができます。

【Outlook VBA】Excelから文字サイズ/色/種類/書式を指定しメールを作成/送信する方法!

Outlook VBAで「返信」メールを作成し、送信する

最後の処理である送信をおこないます。

Sendメソッドで実行します。

objReItem.Send

表示だけにしたい方は、Sendメソッドをコメントアウトし、displayメソッドを有効化してください。

‘表示します。
objReItem.Display’送信します。
‘objReItem.Send
Sub 選択メールを返信する()
    Dim objReItem As Outlook.MailItem
    
    '現在表示中のメールアイテムを「返信」メールとしてセットします。
    Set objReItem = ActiveInspector.CurrentItem.Reply
    
    '返信先を指定します。
    '返信先アドレスを指定してください。
    objReItem.To = objReItem.To & ";" & "test@extan.jp"
    
    'CCを指定してください。
    objReItem.CC = "test1@extan.jp"
    
    '件名を指定します。
    objReItem.Subject = objReItem.Subject & "<メール返信します>"
    
    'メール本文を指定します。
    objReItem.Body = "お世話になっております。" & vbCrLf _
    & "確かに受領いたしましたことご連絡致します。" & vbCrLf _
    & "よろしくお願いいたします。" & vbCrLf _
    & "エク短商事株式会社 ◇◇部◇◇課タカヒロ。" & vbCrLf _
    & objReItem.Body
    
    objReItem.Recipients.ResolveAll
    
    '表示します。
    'objReItem.Display
    
    '送信します。
    objReItem.Send
    
    'オブジェクトの開放
    Set objReItem = Nothing

End Sub

メールを選択した上、マクロを実行します。

はい、送信されていることが確認できましたね。

タカヒロ
タカヒロ
メール誤送信防止のため、テストアドレスで送信を行うことを推奨します。

Outlook VBAで「全員に返信」メールを作成し、送信する

「全員に返信」メールも同じく送信をおこないましょう。

Sendメソッドで実行します。

Sub 選択メールを返信する()
    Dim objReItem As Outlook.MailItem
    
    '現在表示中のメールアイテムを「全員に返信」メールとしてセットします。
    Set objReItem = ActiveInspector.CurrentItem.ReplyAll
    
    '返信先を指定します。
    '返信先アドレスを指定してください。
    objReItem.To = objReItem.To & ";" & "test@extan.jp"
    
    'CCを指定してください。
    objReItem.CC = objReItem.CC & ";" & "test1@extan.jp"
    
    '件名を指定します。
    objReItem.Subject = objReItem.Subject & "<メール返信します>"
    
    'メール本文を指定します。
    objReItem.Body = "お世話になっております。" & vbCrLf _
    & "確かに受領いたしましたことご連絡致します。" & vbCrLf _
    & "よろしくお願いいたします。" & vbCrLf _
    & "エク短商事株式会社 ◇◇部◇◇課タカヒロ。" & vbCrLf _
    & objReItem.Body
    
    objReItem.Recipients.ResolveAll
    
    '表示します。
    'objReItem.Display
    
    '送信します。
    objReItem.Send
    
    'オブジェクトの開放
    Set objReItem = Nothing

End Sub

メールを選択した上、マクロを実行します。

はい、「全員に返信」メールも送信されていることが確認できましたね。

VBAの実装手順

実装手順は以下の通りです。

「開発」タブ>「Visual Basic」を押します。

「Visual Basic Editor」にて、[Project1] > [Microsoft Outlook Objects] の ThisOutlookSessionをダブルクリックします。

右ペインのコードエリアへ、VBAコードを貼り付けて保存します。

こちらで完了です。

VBAを実行する

では早速VBAの実行をしてみましょう。

①「開発」タブの「VBA」をクリックし実行したいマクロを選択し、「実行」をクリックします。

②処理がされたことが確認できれば完了です。

さいごに

いかがでしょうか。

今回は、

・Outlook VBAで「返信」と「全員に返信」メールを作成する方法
・Outlook VBAで宛先追加や件名・本文追記をする方法

についてまとめました。

まだまだ便利な方法がありますので、よろしければ以下の記事もご参照ください。



この記事の関連キーワード

こちらの記事の関連キーワード一覧です。クリックするとキーワードに関連する記事一覧が閲覧できます。








25 件のコメント

  • お世話様になっております。
    改行について、自己解決しました。
    大変お手数をお掛けしました。

    • 解決できたようでよかったです。

      HTML形式でメールを作成する方法については別記事でまとめておりますので、
      よろしければこちらもご参考いただければと存じます。
      https://extan.jp/?p=6762

  • コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です