ゆんの業務改善ブログ

①生産性向上 ②業務改善 ③自動化 について情報発信しています。VBAプログラムは本当の初心者から他のアプリケーションを呼び出して使う上級者的な使い方まで幅広いレベルで解説していきます。

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

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

目次

VBAのコードにHTMLを埋め込んでメールの文字の色を変える

メールの文字を赤色にするには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でOutlookのメールの文字の色を変える方法まとめ

それでは今回の解説の内容をまとめます。

  • まずは普通にOutlookでメールを作成するプログラムを書く
  • メッセージ本文を作成するところにHTMLを使う
  • CreateItemする順番は.Displayが.HTMLBodyより先

<ご参考>
今回はHTML部分について、色を変える方法に絞って解説しました。HTMLはほんの少し勉強するだけで、他にも文字を太くしたり箇条書きにしたり、いろいろなことができるようになります。

VBAに限らずプログラムをする上で何かと出てくることが多いので、基礎教養として最低限の読み書きは身に付けておくのがオススメです。ご参考までに最低限のHTMLをササッと理解したり辞書的に使えるHTMLの入門書を一冊ご紹介しておきます。私が実際に使った本です。

最低限のHTMLを身に付けて、VBAプログラミングでできる幅を増やしましょう!VBA以外の言語に行ったときにも、もちろん役立ちますよ。

<関連記事>

<お知らせ>
Excel VBAでクラスやオブジェクトの概念と使い方を丁寧に解説し、ワンランク上の実力を目指すガイドを書きました。この本で本物の実力を身に付けて一皮むけてみませんか?
books.rakuten.co.jp