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

Outlook VBAで文字の書式など設定したHTML形式のOutlookメールを作成/送信したいときはないでしょうか。

たとえば、メール本文中に文字の書式を指定したい場合などです。

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

・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:メイリオ"">

タカヒロ
タカヒロ
2つ以上のスタイルを指定する場合は「;」で区切ってください。

ハイパーリンクを指定する

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、Outlookの2種類で、ExcelのHTML形式のデータを取り出しOutlookのメールを作成し、送信するという処理の流れとなります。

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データからメールを作成する方法について
まとめました。

また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。



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

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



タカヒロ

タカヒロ
実質無料で読めるExcelVBA本についてまとめました。
もしVBA本購入を検討されていたら、どれだけお得か確かめてみてください。

【¥0】実質無料のExcelVBAおすすめ本25選!初級~中級まで網羅!

コメントを残す

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