Mutable_Yunの業務改善ブログ

VBA勉強中の非エンジニア会社員向けのブログです。業務改善についても触れています。

VBA HTMLでOutlookのメールの文字の色を変える方法

VBAで作成したOutlookのメール本文の文字を色を変える方法を解説します。Outlookのメールそのものの作成方法については、VBA OLEを使ってメールを配信するをご覧下さい。

目次

VBAのコードにHTMLを埋め込む

HTMLのイメージ図
本格的なウェブサイトのhtmlのイメージがかっこよかったのでこの画像にしただけ
何回いきなり難しそうになりましたが、そんなことありません。HTMLとは、インターネットエクスプローラとかOutlookのメールでどう表示するかを表示する内容と一緒に書いた設計図のような者です。今回は本格的なウェブサイトを作るわけではなく、ただ赤い文字で見せたいだけなので、赤い文字を意味するhtmlを覚えるだけです。

赤い文字ができるとhtmlの書き方が分かる様になるので、あとは、太い文字とかリンク先とか、ネットで調べたタグの書き方に置き換えるだけで応用できます。

普通のメールを作成するサンプルコード

普通のメールを作成するサンプルコードです。

Sub 普通のメール作成()

    Dim mailitem As Object
    
    Set mailitem = CreateObject("Outlook.Application")
    
    With mailitem.CreateItem(0)
        .To = ""
        .CC = ""
        .Subject = ""
        .Body = "これはサンプルメールです"
        .Display
    End With

End Sub

ToやCC、題名は適当な文字列を入れればOKです。Functionプロシジャで作るとすっきりします。

これでは本文の文字は黒にしかなりません。次に文字色を変えるためのサンプルコードです。

メールの本文を作成するのにHTMLを使う

HTMLと言っても怖がる必要はありません。こちらもいきなりサンプルコードを示します。

Sub HTMLを埋め込んだのメール作成()

    Dim mailitem As Object
    
    Set mailitem = CreateObject("Outlook.Application")
    Dim msg As String
    
    
    msg = "これは" & "<font color = ""#ff0000"">" & "サンプル" & "</font>" & "コードです" & _
                "<br>" & "よろしくお願いします。"     '<br>は改行という意味です
    
    With mailitem.CreateItem(0)
        .To = ""
        .CC = ""
        .Subject = ""
        .Display
        .HTMLBody = msg & .HTMLBody
    End With

End Sub

コピペして使ってOKです。やり方が知りたいだけの方はここでページ閉じてもらってOKです。以下、内容について少し解説します。ポイントは3点あります。

ポイント①メッセージ本文を代入している部分にHTMLを埋め込む

色を変えたところの記述を見てみると、"" & "サンプル" & ""と書いてあります。何となく見ただけで意味がわかりそうです。~といった形でfontというタグで囲まれた部分の色を変えることができます。#ff0000は赤という意味です。他の色の番号とか、この#の後の6桁の意味などはネットで調べれば出てきますので、気になる方は調べてみて下さい。ビジネスのメールの本文に色を使うと言えばせいぜい赤ぐらいしかないので、赤は#ff0000とこの色だけ覚えておけばOKだと思います。

この部分をよく見ると、ダブルクォーテーションが2つついていますよね。ここが、ハマリポイントです。気をつけましょう。

    msg = "これは" & "<font color = ""#ff0000"">" & "サンプル" & "</font>" & "コードです" & _
               "<br>" & "よろしくお願いします。"

"" の所の#ff0000の両側のダブルクォーテーションが重なっています。これはエスケープ文字と言って、ダブルクォーテーションをダブルクォーテーションで囲みたい時の文法です。メールの本文自体が文字列でその中にHTMLと言う文字列を入れ込む。そのHTMLの中に「"#ff0000"」という文字列を入れる必要がある。ダブルクォーテーションの中にダブルクォーテーションを入れるときのルールがあるので「"#ff0000"」ではなく「""#ff0000""」を入れる必要がある、と言うわけですね。

これは知らないと、どこがエラーなのか分からずハマってしまいますが、知ってさえいればすぐどこが間違っているのか分かります。覚えておきましょう!

ポイント②CreateItemするときの順番

    With mailitem.CreateItem(0)
        .To = ""
        .CC = ""
        .Subject = ""
        .Display
        .HTMLBody = msg & .HTMLBody
    End With

.Displayが.HTMLBody = msg & .HTMLBodyより先に来ているのがポイントです。OutlookのメールがHTMLの部分を解釈して表示してくれるので、.Displayが先にないと失敗してしまいます。

ポイント③.HTMLBody = msg & .HTMLBody

普通にメールの本文を作るときは「.Body=」で良かったのですが、HTMLを埋め込むときは.HTMLBodyプロパティに入れます。入力したい本文の後に.HTMLBodyメソッドを入れるのを忘れないようにしましょう。

今回は完結にやりたいことに絞って解説しました。HTMLはほんの少し勉強するだけで、他にも文字を太くしたり箇条書きにしたりできるようになります。いろいろと試してみましょう。