top of page
検索

ExcelでVBA、Outlookでメール自動送信(BodyFormatプロパティ)

更新日:2021年9月28日

こんにちは。


先日は、Excel VBAからOutlookを操作する方法を備忘録しました。


前回は、メール形式をプレーン(テキスト)前提で説明していたのですが、Outlookでは他のメール形式もサポートしているのをご存じかと思います。


そこで今回の備忘録では、その他の形式のメールを作成する方法にチャレンジしてみます。



■ 動作環境

 

OS: Windows 8.1(64ビット)

Excel: 2013(32ビット)

Outlook: 2013(32ビット)



■ Outlookのメール形式とは?

 

メール作成/送信する際、意識して形式を変更されている方もいらっしゃるかと思います。


私は古い人間なので、HTML形式のメール=悪しきメール、という誤解(笑)をしているので、毎回わざわざ形式を確認/(必要に応じて)変更してからメール送信しています。



□ Outlookでのメール形式の変更方法


HTML、テキスト、リッチテキストの3種類から選べる(設定できる)ようになってますよね。


私が、現在所属してる企業では、Microsoft 365を導入しているので、teamsやSkypeの会議依頼(インビテーション)が多数飛び交っているのですが、それら以外は、常にテキスト形式で送信しています。



■ BodyFormatプロパティ

 

Excel VBAでOutlookを操作する際も、Outlookのメール形式同様の制御機構が設けられています。


それが MailItem オブジェクトの BodyFormat プロパティです。


 

<再掲>

  • BodyFormat メール本文の形式を表すOlBodyFormatクラスの定数 テキスト(olFormatPlain)の他に、HTML(olFormatHTML)、リッチテキスト(olFormatRichText)の何れかを指定可能

 

これ以降では、BodyFormatプロパティを制御する方法を紹介していきます。


前回紹介したシートは、こんな感じに変更しました。

(BodyFormatを指定する行を新たに追加しました)

BodyFormat入力欄(B6)を変更するたびに、BodyFormat(Value)蘭(D6)が自動的に変わるよう式を埋め込んでいます。


そして、先日のソースをこんな感じに変更してみました。

※「m_」で始まる英語大文字の変数名みたいな名称は、何れも私が別途定義している定数です。


ポイントは、2か所ですね!

  • BodyFormatプロパティの設定 選択されたBodyFormatに応じて、それを示す値をBodyFormatプロパティへ設定しています。

  • HTMLBody / Bodyプロパティの使い分け 選択されたBodyFormatに応じて、メール内容の設定先を、HTMLBodyもしくはBodyプロパティに振り分けています。



■ 実行結果

 

□ テキスト形式

まぁ、一番普通です。

入力エリアとしてHTMLBody用、Body用の2種類の入力欄を準備するのが面倒だったので、Body入力欄(B7)1つのみ準備し、HTML形式を期待しているかのごとくサンプルデータを設定しているので、実行するとこーなるのは当然ですよね。^^

(他の形式との比較対象でしかないので、今回はこのままでいいのです(笑))



□ HTML形式

BodyFormatをHTML形式に指定すると、このような結果になります。

作成されたメールのBodyエリア、HTMLっぽくなってますよね。しっかり改行されているし、URLリンクも形成されています!



□ リッチテキスト形式

BodyFormatをリッチテキスト形式に指定すると、このような結果になります。

リッチテキストを期待しているかのようなBodyの設定ではなかったので、テキスト形式と同じ表示のされ方していますが、一点のみ「らしさ」が現れていますよね✨


それは添付ファイル!

テキスト形式 / HTML形式の場合は、作成されたメールのBodyエリアではない上部の「添付ファイル」項目に設置?されていましたが、リッチテキストではBodyエリア内に挿入?されています。



■ まとめ

 

いかがでしたでしょうか?

メールの内容に応じてBodyFormatプロパティを制御することで、より洗礼された、また効果的なメールの自動作成が実現できます。

次回以降も、苦労した点を備忘録しようと思います。

閲覧数:10,795回0件のコメント

Commentaires


bottom of page