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を含むため追加という形になります。
CCを指定します。
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
返信したいメールを開き、実装したマクロを実行します。
はい、「返信」メールに追加分のアドレスが挿入されましたね。
Outlook VBAで「全員に返信」メールを作成し、宛先を追加する
「全員に返信」メールにも宛先を追加しましょう。
「全員に返信」メールはデフォルトでCCを含むため、追加という形になります。
CCを指定します。
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で「返信」メールを作成し、件名へ追記する
次は件名の内容を追加します。
<メール返信します>のところを適当な内容に変えてください。
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で「返信」メールを作成し、本文へ追記する
メール本文に返信文を追記します。
追記内容は以下の通りです。適宜変更してください。
& “確かに受領いたしましたことご連絡致します。” & 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
改行は”<br>”を末尾につけたり、太字は”<b>太字</b>”という形になります。
より詳しいHTML形式の書式の使い方についてまとめてみました。
HTML形式のコードはちょっと難しいと感じる方は
こちらのリッチテキスト形式でメール作成することオススメします。
Excelの書式のままメール作成ができますのでカンタンに書式設定ができます。
Outlook VBAで「返信」メールを作成し、送信する
最後の処理である送信をおこないます。
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で宛先追加や件名・本文追記をする方法
についてまとめました。
まだまだ便利な方法がありますので、よろしければ以下の記事もご参照ください。
お世話様になっております。
改行について、自己解決しました。
大変お手数をお掛けしました。
解決できたようでよかったです。
HTML形式でメールを作成する方法については別記事でまとめておりますので、
よろしければこちらもご参考いただければと存じます。
https://extan.jp/?p=6762