こんにちは。
先日は、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プロパティを制御することで、より洗礼された、また効果的なメールの自動作成が実現できます。
次回以降も、苦労した点を備忘録しようと思います。
Commentaires