Outlook VBAで文字の書式など設定したHTML形式のOutlookメールを作成/送信したいときはないでしょうか。
たとえば、メール本文中に文字の書式を指定したい場合などです。
けど、そんな中で悩むことは、
・Outlook VBAで文字サイズや種類など書式を設定しHTML形式のOutlookメールを作成/送信したいが方法がわからない。
・Outlook VBAでハイパーリンクを設定しHTML形式のOutlookメールを作成/送信したいが方法がわからない。
・Outlook VBAで複数のHTML形式のメールをを作成/送信したいが方法がわからない。
ですよね。
今回はそんなお悩みを解決する
Outlook VBAでHTML形式のOutlookメールを作成/送信する方法について
まとめます!
もくじ
Outlook VBAでHTML形式のOutlookメールを作成/送信するイメージ
Outlook VBAでHTML形式のOutlookメールを作成/送信するイメージについて説明をします。
まず、Outlook VBA内にメールの件名や宛先に加えHTML形式で本文を入力します。
.HTMLBody = "<b>宛先各位</b>" _
& "<br><br>" _
& "<b>本日の業務内容</b>について以下の通り報告いたします。" _
& "<br><br>" _
& "<span style=""font-size:18pt""><u>■業務内容</u></span><br>" _
& "<span style=""color: #008000"">9:00:朝礼<br>" _
& "10:00:商品納品<br>" _
& "13:00:定例会<br>" _
& "15:00:定期作業<br>" _
& "17:00:日報作成</span>" _
& "<br>" _
& "<br>" _
& "<span style=""color: #ff0000;font-family:メイリオ""><b>以上/A部タカヒロ </b></span>" _
& "<br>" _
& "<a href=""https://extan.jp"">ホームページ</a>"
.To = "user1@extan.jp"
.CC = "user2@extan.jp"。
.Attachments.Add ("C:\Users\***\Documents\添付ファイル1.xlsx")
Outlook側へVBAを実装します。
マクロを実行すると、
VBAに設定した内容に沿ってHTML形式のメールが作成されます!
VBAのコードを変えると、送信もできます!
さらに、Excel側にまとめたHTMLデータから複数のHTML形式のOutlookメールを作成/送信することもできます!!
通常、自動作成のメールは制約が多いですが、この方法ですと手作業と同じクオリティでメール作成できるのでとても便利ですね。
それでは早速やってみましょう!
HTML形式のOutlookメールを作成/送信するVBA
VBAの準備
HTML形式のOutlookメールを作成/送信するVBAの実装方法について説明をします。
今回のサンプルコードは以下の通りです。
Sub HTML形式のOutlookメールを新規作成する()
'Outlook用の定義
Dim objMail As Object
If MsgBox("Outlookメールを作成しますか?", vbYesNo + vbQuestion, "確認") = vbYes Then
Set objMail = CreateItem(olMailItem)
With objMail
.BodyFormat = 2 ' 「3」の場合リッチテキスト型となります。「1」はテキスト型、「2」は HTML型となります。
.Subject = "業務日報(2021年12月10日)" '件名を指定します。
'本文をHTML形式で指定します。
.HTMLBody = "<b>宛先各位</b>" _
& "<br><br>" _
& "<b>本日の業務内容</b>について以下の通り報告いたします。" _
& "<br><br>" _
& "<span style=""font-size:18pt""><u>■業務内容</u></span><br>" _
& "<span style=""color: #008000"">9:00:朝礼<br>" _
& "10:00:商品納品<br>" _
& "13:00:定例会<br>" _
& "15:00:定期作業<br>" _
& "17:00:日報作成</span>" _
& "<br>" _
& "<br>" _
& "<span style=""color: #ff0000;font-family:メイリオ""><b>以上/A部タカヒロ </b></span>" _
& "<br>" _
& "<a href=""https://extan.jp"">ホームページ</a>"
.To = "user1@extan.jp" 'Toを指定します。
.CC = "user2@extan.jp" 'CCを指定します。
.Display 'メールを表示します。
'.Send 'メールを送信します。
End With
Else
MsgBox "処理を中断します。"
End If
'オブジェクトを解放します。
Set objMail = Nothing
MsgBox "Outlookメールの作成が完了しました!", vbInformation
End Sub
VBAの設定
VBAの設定箇所は以下の通りです。
本文のフォーマットを指定します。
「3」の場合リッチテキスト型となります。「1」はテキスト型、「2」は HTML型となります。
.BodyFormat = 2
件名を指定します。
.Subject = "業務日報(2021年12月10日)"
Toを指定します。
.To= "user1@extan.jp"
CCを指定します。
.CC = "user2@extan.jp"
HTMLBodyプロパティへ本文の内容をHTML形式で指定します。改行は「<br>」で指定します。
.HTMLBody = "<b>宛先各位</b>" _
& "<br><br>" _
& "<b>本日の業務内容</b>について以下の通り報告いたします。" _
& "<br><br>" _
& "<span style=""font-size:18pt""><u>■業務内容</u></span><br>" _
& "<span style=""color: #008000"">9:00:朝礼<br>" _
& "10:00:商品納品<br>" _
& "13:00:定例会<br>" _
& "15:00:定期作業<br>" _
& "17:00:日報作成</span>" _
& "<br>" _
& "<br>" _
& "<span style=""color: #ff0000;font-family:メイリオ""><b>以上/A部タカヒロ </b></span>" _
& "<br>" _
& "<a href=""https://extan.jp"">ホームページ</a>"
文字を太字にする
以下のように太字にしたい文字をタグで囲います。
<b>宛先各位</b>
文字にアンダーラインを引く
以下のようにアンダーラインを引きたい文字をタグで囲います。
<u>■業務内容</u>
文字色を指定する
文字色の指定はスタイルシートを使用しますので「style=”color:」を付け、
色コードを#を頭に加え、16進数で指定します。
#008000:緑色
#ff0000:赤色
フォント「メイリオ」を指定する
フォントの指定はスタイルシートを使用しますので「style=”font-family:」を付け、
フォント名を入力します。
<span style=""color: #ff0000;font-family:メイリオ"">
ハイパーリンクを指定する
HTML標準の形式でハイパーリンクを「a href=」を付け指定します。
<a href=""https://extan.jp"">ホームページ</a>
VBAの実装手順
実装手順は以下の通りです。
「開発」タブ>「Visual Basic」を押します。
「Visual Basic Editor」にて、[Project1] > [Microsoft Outlook Objects] の ThisOutlookSessionをダブルクリックします。
右ペインのコードエリアへ、VBAコードを貼り付けて保存します。
こちらで完了です。
VBAの実行
では早速VBAの実行をしてみましょう。
まずはメールが作成されるか確認をします。
「開発」タブの「VBA」をクリックし実行したいマクロを選択し、「実行」をクリックします。
「”Outlookメールの作成が完了しました!”」と表示されたら完了です。
作成されたメールを確認してみましょう。
はい、件名、宛先に加え、本文がHTML形式で表示されていますね!
つづいて送信をしてみましょう。
.Send
のコメントを外し、Sendメソッドを有効化します。
実行してみましょう。
はい、送信されていますね!
VBAの説明
新規にアイテムを作成し、オブジェクトにセットします。
Set objMail = CreateItem(olMailItem)
メールを表示します。
.Display
メールを送信します。
'.Send
ExcelのデータからHTML形式のOutlookメールを作成/送信するVBA
ExcelのデータからHTML形式のOutlookメールを作成/送信するVBAについて説明をします。
メールを作成するデータを用意する
Excel側にOutlookのメールを作成するデータを用意しましょう。
サンプルのデータは以下のように1シート目へA列を件名、B列を本文、C列をTo、D列をCc、E列を添付ファイルのパスにしました。
添付ファイルが複数ある場合は「;」で区切ってください。
件名 | 本文 | To | Cc |
---|---|---|---|
業務日報(2021年12月10日) | <b>宛先各位</b> <br><br> <b>本日の業務内容</b>について以下の通り報告いたします。 <br><br> <span style=”font-size:18pt”><u>■業務内容</u></span><br> <span style=”color: #008000″>9:00:朝礼<br> 10:00:商品納品<br> 13:00:定例会<br> 15:00:定期作業<br> 17:00:日報作成</span> <br> <br> <span style=”color: #ff0000;font-family:メイリオ”><b>以上/A部タカヒロ</b></span> <br> <a href=”https://extan.jp”>ホームページ</a> |
user1@extan.jp | user2@extan.jp |
VBAの処理の流れ
次にVBAの処理の流れについて説明をします。
処理の流れは以下の通りです。
①Outlook VBA→ このExcelブックのデータちょうだい→ Excel VBA
②Outlook VBA ←データ送るよ ←Excel VBA
③Outlook VBA →もらったデータでメール作成!
VBAの環境設定
ExcelのデータからHTML形式のOutlookメールを作成/送信するVBAの実装方法について説明をします。
まずは、Excelのオブジェクトを使えるようにする設定を行います。
「開発」タブ>「Visual Basic」を押します。
「Visual Basic Editor」にて、[ツール] > [参照設定]をクリックし、
参照設定ウインドウが表示されたら、「Microsoft Excel **.* Object Library」をチェックし「OK」をクリックします。
VBAの準備
今回のサンプルコードは以下の通りです。
Sub HTML形式のOutlookメールを新規作成する_Excelデータ取得()
'Outlook用の定義
Dim objMail As Object
'Excel用の定義
Dim appExl As Excel.Application
Dim wbBook As Workbook
Dim wsSheet As Worksheet
Dim lnContactCount As Long
Dim arrTemp As Variant
'Excelのブックとワークシートのオブジェクトを設定します。
Set appExl = CreateObject("Excel.Application")
'Excelウインドウを表示させます。非表示としたい場合はFalseを設定してください。
appExl.Visible = True
'指定したExcelブックを開き、オブジェクトに設定します。パスは環境にあわせて変更してください。
Set wbBook = appExl.Workbooks.Open("C:\Users\***\Documents\***.xlsx")
'Excelブック1シート目をオブジェクトに設定します。
Set wsSheet = wbBook.Worksheets(1)
'取得結果を記述する行番号を指定します。2行目のセルから開始されることになります。
lnContactCount = 2
If MsgBox("Outlookメールを作成しますか?", vbYesNo + vbQuestion, "確認") = vbYes Then
'一覧の件数分繰り返します。
For i = lnContactCount To wsSheet.Cells(1, 1).End(xlDown).Row
'メールを作成します。
Set objMail = CreateItem(olMailItem)
With objMail
.BodyFormat = 2 ' 「3」の場合リッチテキスト型となります。「1」はテキスト型、「2」は HTML型となります。
.Subject = wsSheet.Cells(i, 1) '件名を指定します。
.HTMLBody = wsSheet.Cells(i, 2) 'HTML形式で本文を指定します。
.To = wsSheet.Cells(i, 3) 'Toを指定します。
.CC = wsSheet.Cells(i, 4) 'CCを指定します。
'宛先が空欄であるか判定します。
If wsSheet.Cells(i, 3) = "" Then
.Display 'メールを表示します。
Else
.Display 'メールを表示します。
'.Send 'メールを送信します。
End If
End With
Next
Else
MsgBox "処理を中断します"
End If
'Excelウインドウを閉じます。
appExl.Quit
'オブジェクトを解放します。
Set olItem = Nothing
Set wbBook = Nothing
Set wsSheet = Nothing
MsgBox "Outlookメールの作成が完了しました!", vbInformation
End Sub
VBAの設定
VBAの設定をおこないましょう。
前回のVBAにExcelブックを開いて値を取得するメソッドを追加していますので、
Excelブックのパスを設定する必要があります。
以下のパスを作成したExcelブックのものへ変更してください。
Set wbBook = appExl.Workbooks.Open("C:\Users\***\Documents\***.xlsx")
本文のフォーマットを指定します。
「3」の場合リッチテキスト型となります。「1」はテキスト型、「2」は HTML型となります。
.BodyFormat = 2
VBAの実行
VBAを実行してみましょう。
まずはメールが作成されるか確認をします。
「”Outlookメールの作成が完了しました!”」と表示されたら完了です。
作成されたメールを確認してみましょう。
はい、件名、宛先、本文に指定した値が挿入されていますね!
つづいて送信をしてみましょう。
.Send
のコメントを外し、Sendメソッドを有効化します。
実行してみましょう。
はい、送信されていますね!
VBAの説明
新規にアイテムを作成し、オブジェクトにセットします。
Set objMail = CreateItem(olMailItem)
Excelアプリケーションのオブジェクトを設定します。
Set appExl = CreateObject("Excel.Application")
Excelウインドウを表示させます。非表示としたい場合はFalseを設定してください。
appExl.Visible = True
指定したExcelブックを開き、オブジェクトに設定します。
Set wbBook = appExl.Workbooks.Open("C:\Users\***\Documents\***.xlsx")
Excelブック1シート目をオブジェクトに設定します。
Set wsSheet = wbBook.Worksheets(1)
取得結果を記述する行番号を指定します。2行目のセルから開始されることになります。
lnContactCount = 2
件名を指定します。
.Subject = wsSheet.Cells(i, 1)
本文を指定します。
.HTMLBody = wsSheet.Cells(i, 2)
Toを指定します。
.To = wsSheet.Cells(i, 3)
CCを指定します。
.CC = wsSheet.Cells(i, 4)
メールを表示します。
.Display
メールを送信します。
'.Send
Excelのデータから添付ファイルを付けて複数のメールを作成/送信するVBA
次はExcelのデータから添付ファイルを付けて複数のメールを作成/送信するVBAについて説明をします。
複数メールを作成するデータを用意する
Excel側にOutlookのメールを作成するデータを用意しましょう。
以下のように1シート目へ1行増やして2行にしA列を件名、B列を本文、C列をTo、D列にCc、E列に添付ファイルのパスを入力します。
件名 | 本文 | To | Cc |
---|---|---|---|
業務日報(2021年12月10日) | <b>宛先各位</b> <br><br> <b>本日の業務内容</b>について以下の通り報告いたします。 <br><br> <span style=”font-size:18pt”><u>■業務内容</u></span><br> <span style=”color: #008000″>9:00:朝礼<br> 10:00:商品納品<br> 13:00:定例会<br> 15:00:定期作業<br> 17:00:日報作成</span> <br> <br> <span style=”color: #ff0000;font-family:メイリオ”><b>以上/A部タカヒロ</b></span> <br> <a href=”https://extan.jp”>ホームページ</a> |
user1@extan.jp | user2@extan.jp |
業務日報(2021年12月13日) | <b>宛先各位</b> <br><br> <b>本日の業務内容</b>について以下の通り報告いたします。 <br><br> <span style=”font-size:18pt”><u>■業務内容</u></span><br> <span style=”color: #008000″>9:00:朝礼<br> 10:00:商品納品<br> 13:00:定例会<br> 15:00:定期作業<br> 17:00:日報作成</span> <br> <br> <span style=”color: #ff0000;font-family:メイリオ”><b>以上/A部タカヒロ</b></span> <br> <a href=”https://extan.jp”>ホームページ</a> |
user1@extan.jp | user2@extan.jp |
VBAの実行
VBAを実行してみましょう。
「”Outlookメールの作成が完了しました!”」と表示されたら完了です。
作成されたメールを確認してみましょう。
複数のメールが作成されていますね!
Sendメソッドを有効化しメールを送信してみましょう。
はい、送信されていますね!
さいごに
いかがでしょうか。
今回は、
Outlook VBAでHTML形式のOutlookメールを作成/送信する方法とExcelデータからメールを作成する方法について
まとめました。
また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。
コメントを残す