メールの本文に、値を自動挿入するプログラムの解答例。

Excelからメール送信する時に、メールの本文中にワークシートの値を自動挿入することができます。

前回の商品名と金額を自動挿入する課題は、自分の力で出来ましたか?

mail-191.gif

自分の頭で考えて、実際にプログラミングしてみて、試行錯誤すると、実力がアップします。

もし出来なくても、解答例を見た瞬間に「そうか!」と気付けば、その瞬間に脳が活性化します。

プログラミングは、まさに「アハ体験」(aha! experience)の連続です。アハ体験するためにも、一度は自分の頭で考えてみることが大切です。

それではVBAプログラムの解答例と、その手順を掲載します。

プログラムは、いろんな書き方ができるので、一例だと思ってください。

もしあなたが書いたプログラムが、解答例とまったく同じでなくても、結果が同じなら、それでかまいません。

【1】Excelのファイル「メール送受信.xls」を開きます。

*マクロを有効にする


【2】VBEを起動します。

*「Altキー」+「F11キー」


【3】フォーム「frm送信」を選択し、「コードの表示」ボタンをクリックします。


【4】「cmd送信」クリック時のプログラムを、一部変更します。

赤枠で囲った部分を追加するだけです。
mail-188.gif


'本文
body = Me.txtBody
body = Replace(body, "[氏名]", tName)

Dim itemName As String
itemName = Trim(Range("D" & pos).Value)
body = Replace(body, "[商品名]", itemName)

Dim price As String
price = Trim(Range("E" & pos).Value)
price = Format(CLng(price), "##,##0")
body = Replace(body, "[金額]", price)


変更点は、たったこれだけです。とても簡単ですよね。
既にメールの本文中に「商品名」と「金額」を自動挿入できるようになっています。


【解説】
(1)商品名を代入する変数を宣言している部分です。
Dim itemName As String


(2)ワークシートから商品名を取得し、変数に代入している部分です。
itemName = Trim(Range("D" & pos).Value)

プログラムが動作しているワークシートの値なので、簡単に取得できます。

また変数 pos には、既に行番号が入っているので、該当する行のセルの値が取得できます。

念のためTrim関数で、前後の空白を除去しています。


(3)メール本文中の挿入タグと、変数に入っている商品名を置換している部分です。
body = Replace(body, "[商品名]", itemName)

Replace関数を使っている点は、氏名の場合と同じです。


金額も商品名とほとんど同様です。桁区切りの部分だけが違います。

(4)Format関数で「桁区切り」を行なっている部分です。
price = Format(CLng(price), "##,##0")

*priceは文字列型です。

Format関数は、1番目の引数の値(式でも可)を、2番目の引数で指定した書式に変換し、その値を返します。

つまり「69,800」のようなカンマで区切られた文字列が返ってきます。だから変数priceを文字列型(String)にしたわけです。

Format関数は、今回のように数値の書式に使われますが、日付の表示などにもよく利用される関数です。

上記のプログラムでは、priceをCLngで長整数型(数値型)に変換した後に、Format関数で書式を整えています。

もし変数 price に数値型に変換できない文字が入っている場合は、「型が一致しません。」という実行時エラーが表示されます。

この場合のエラーは、表示されたほうがよいエラーです。適切な値でない場合は、メールを送信しないためです。


(5)ワークシート「設定」のE列について
Excelワークシートの書式で「桁区切りスタイル」や「通貨スタイル」を設定しても、プログラムで取得したデータには、「桁区切り」や「エンマーク」は入りません。

例えば、ワークシート上の表示は「69,800」でも、実際に取得したデータは「69800」になります。

そこで「桁区切り」は、プログラムの中で行ないます。

今回は、プログラムの中で「桁区切り」を行なっていることを明確にしたいので、わざと設定しなかったわけです。

・桁区切り無しの場合
mail-189.gif

プログラムで行なっていることが理解できたら、Excelワークシートで「桁区切りスタイル」や「通貨スタイル」を設定してもかまいません。

・通貨スタイルを設定した場合
mail-190.gif

この表示のほうが見やすいですよね。プログラムの実行結果は、同じになります。


(6)金額の挿入タグについて
金額の挿入タグは、あえて数値の部分だけ置換し、「円」はユーザーが入力するようにしています。

・金額 [金額]円

実は「円」の部分も、プログラムの中で付け加えることができます。
・金額 [金額]
と書けたほうが、シンプルになるような感じがしますよね。

でも金額の表示の仕方には、いろいろあります。

例えば、円という文字を省きたいことや、数値の前に円マークを付けたいこともあるでしょう。

そんな時は、プログラムで表示が固定されていると不便です。

だからケースによって、利用するユーザーが自由に設定できるように、あえて金額は数値だけを置換するようにしています。


【ワンポイント】
今回は単純に、Excelワークシートのセルの値をメールに自動挿入してみました。

実はこの方法は、とても応用範囲が広いです。

Excelをよく使っている人ならわかると思いますが、ワークシートのセルは、計算式で複雑な処理が可能です。

ここが大事なポイントで、「複雑な処理を行なった後のデータをメールに自動挿入できる」というメリットは、とても大きいのです。

例えば、営業マンの成績を日別・月別に集計して、個別にメール送信するようなことが、ボタン一つで自動的に出来るようになります。

このようなことは、普通のメーラーでは行なうことができません。

これもExcelを使って、メール送信プログラムを作成するメリットの一つです。

さらにアイデア次第では、いろんな応用が出来る可能性があります。

スポンサードリンク

スポンサードリンク






メール送信・受信プログラミング初心者入門 TOPへ