【EXCEL:VBA】宛先を変えながら同じ本文のメール下書きを作成したい

宛先を変えながら同じ本文のメール下書きを作成したい

この記事では、EXCELで大量のメール下書きを作成する方法について説明します。

 

メール下書き作成まで自動で行い、中身をチェックしてから最後の送信ボタンを押す形になります。

 

しかも、一度宛先を登録しておけば、メール件名と本文を書き換えれば、何度でも使うことができます。

 

 

これまでは、コピーして貼り付けて、コピーして貼り付けて、とやっていたと思いますが、

 

最初に設定さえすれば簡単に大量のメールを作成することができるようになります。

 

 

それでは、EXCELで大量メール作成ツールを作成していきましょう。

 

困っている女性

同じ本文のメールを大量に作成するのに疲れたわ・・・。
メールを1つ作成して、BCCに大量の宛先をいれたら簡単ですよ。

解決する男性

困っている女性

それでは、送り先の相手の名前を入れることができないから、ダメなの。

困っている女性

本文は同じでも、○○様って最初に入れたいからその方法じゃ、できない。
それなら、VBAを使えばボタン1つ押すだけで、相手の名前を入れながらたくさんの宛先にメールを送ることができるよ。

解決する男性

困っている女性

それって、添付ファイルもつけれる?
もちろんだよ、CCやBCC、添付ファイルも自由自在に変えれるよ。

解決する男性

困っている女性

それそれ、早く教えてよ。

 

 

大量メール作成ツールに必要なものを、1つ1つ順番に説明していきます。

1.メール作成に必要な情報一覧を準備する

メール作成に必要な情報を記入できるように、表を作成します。

「メール下書き作成」シートを作成する

メール下書き作成シートを用意する

メール下書き作成シートを用意する

 

  1. 「メール下書き作成」という名前のシートを作成します。
  2. 1行目に「メール件名」、「メール本文」のタイトル行を作成します。
  3. 2行目に「メール件名」、「メール本文」を入力する欄を作成します。
  4. 3行目に「宛先一覧」というタイトル行を作成します。
  5. 4行目に「NO」、「会社名」、「個人名」、「敬称」、「メールアドレス」、「CCアドレス」、「BCCアドレス」、「添付ファイル」、「対象」のタイトル行を作成します。
  6. 5行目以降には、実際の各情報を入力する欄を作成します。

 

「メール下書き作成」シートの入力方法

「メール件名」欄には、送りたいメールの件名を1行で入力します。

「メール本文」欄には、複数行で相手の心に届くメッセージを入力します。

 

「NO」欄には、1からの連番を入力します。この数字が入力されていることで、宛先情報が入力されている行として判断に使います。

ですから、宛先情報を入力した行の「NO」欄には、必ず数字を入力してください。

 

「会社名」、「個人名」、「敬称」欄を入力すると、以下の画像のように「メール本文」欄に入力した文章の前に付加します。

ですから、必ず入力するようにしてください。そうすれば、メール1つ毎に相手の会社名と名前と敬称を切替えることができます。

作成するメールサンプル

作成するメールサンプル

「メールアドレス」欄は、送りたい相手のメールアドレスを入力してください。

もちろん、必須入力欄です。

 

「CCアドレス」、「BCCアドレス」欄は、入力しても良いですし、入力しなくても良いです。

「BCCアドレス」欄は、ご自身の上司などを入力しておけば、上司との情報共有として利用できます。

 

「添付ファイル」欄は、添付ファイルが必要な場合のみ入力します。

添付したいファイルが保存されているファイルパスを入力してください。

 

最後の「対象」欄は、実際にメールを作成したい行に”○”を入力します。

“○”でなくてもよいので、なにか入力してあれば、メール作成対象と認識します。

 

なぜ「対象」欄を用意したかについて、説明します。

今後メールを送る可能性がある人をすべて宛先一覧に入力しておきます。

でも、今回のメールは全員に送る必要がない場合があったときに、「対象」欄を空にしておけばメール作成から除外できます。

なので、「メール件名」、「メール本文」、「対象」欄のみ変更すれば、宛先一覧は一切変更する必要がなくなります。

毎回、宛先一覧に追加したり、削除したりする作業ってかなり面倒な作業となりますし、ミスをしやすい作業となります。

そういうわずらわしさをなくすために「対象」欄を用意しました。

 

2.VBAで大量メール作成機能を記入する

「Microsoft Visual Basic for Applications」を起動します。

VBAプログラムを記入する前編

VBAプログラムを記入する前編

 

VBAプログラムを記入する後編

VBAプログラムを記入する後編

 

標準モジュールを追加して、以下のソースを書きます。

 

最後にEXCELを「◯◯◯.xlsm」というような感じでマクロ有効ブック形式で保存します。

 

3.大量メール作成機能の使い方

それでは、大量メール作成機能の動かし方を説明します。

マクロを起動する

マクロを起動する

「開発」タブの「マクロ」をクリックします。

 

実行ボタンをクリックする

実行ボタンをクリックする

 

先程作成した自作関数「MainProc」が一覧に表示されていますので、選択します。

次に、「実行」ボタンをクリックして大量メール作成を実行します。

 

しばらく待つと、「対象」欄に”○”が入力された行の情報をもとに、メール下書きが作成されます。

うまく動きましたか?

 

4.大量メール作成機能のVBAプログラムの説明

それでは、VBAプログラムを説明します。

①参照するシートを変数に格納する

ここでは、このあとの処理で何度も使う「メール下書き作成」シートを変数に格納しています。

そうすることにより、入力するプログラムを短くすることができるからです。

何度も「ThisWorkbook.Sheets(“メール下書き作成”)」と入力するより、「sht」と入力するほうが少なくてすむからです。

 

②OUTLOOKオブジェクトを変数に格納する

ここでは、OUTLOOKオブジェクトを変数に格納して、このあとの処理で利用できるようにします。

 

③現在行を次の行に変更する

ここでは、現在行を次の行に変更するため、変数「nowRow」に格納している値+1を、変数「nowRow」に格納しています。

ループ処理の外側で、変数「nowRow」には4が格納されています。

宛先一覧データは、5行目から入力されているので、ループ処理の内側に入ったときに変数「nowRow」を+1して、5を格納します。

もちろん、ループしてくると、さらに+1されて6が格納されます。

というように、対象行を5行目から順番に処理することになります。

 

④NO列が空なら処理を終わる

ここでは、A列(NO)の対象行に値が入力されているかチェックしています。

変数「nowRow」に5が格納されている場合、セルA5に値が入力されているかチェックします。

NOが入力されていない行が見つかると、メール作成処理を終了します。

 

⑤対象列に値が入力されていれば、メール下書きを作成する

ここでは、I列(対象)に値が入力されているかチェックしています。

変数「nowRow」に5が格納されている場合、セルI5に値が入力されているかチェックします。

対象が入力されている場合、メール作成処理を実行します。

対象が入力されていない場合、次の行に処理が移ります。

 

⑥メールオブジェクトを変数に格納する

ここでは、メールオブジェクトを変数に格納して、このあとの処理で利用できるようにします。

 

⑦メール件名をセットする

ここでは、セルA2に入力されているメール件名を、メールオブジェクトのメール件名欄にセットします。

 

⑧メール本文をセットする

ここでは、メールオブジェクトのメール本文欄にメッセージをセットします。

具体的には、対象行のB列に入力されている「会社名」をまずセットします。

 

次に、C列とD列に入力されている「個人名」と「敬称」を連結して、セットします。

例えば、「山田」と「様」を連結して、「山田様」とセットします。

 

最後に、セルE2に入力されている「メール本文」をセットします。

 

⑨メール宛先をセットする

ここでは、対象行のE列に入力されているメールアドレスを、メールオブジェクトの宛先にセットします。

 

⑩CCアドレスをセットする(入力されている時のみ)

ここでは、対象行のF列にCCアドレスが入力されている時のみ、メールオブジェクトのCCアドレスにセットします。

 

⑪BCCアドレスをセットする(入力されている時のみ)

ここでは、対象行のG列にBCCアドレスが入力されている時のみ、メールオブジェクトのBCCアドレスにセットします。

 

⑫添付ファイルをセットする(入力されている時のみ)

ここでは、対象行のH列に添付ファイルのパスが入力されている時のみ、メールオブジェクトに添付ファイルをセットします。

 

⑬作成したメール下書きを表示する

ここでは、作成したメールオブジェクトを表示させます。

 

5.プログラムの機能変更(複数添付ファイル対応)

メールに複数ファイルを添付する方法について、質問がありました。

VBAプログラムを変更せずに対応するには、
複数ファイルを圧縮して1つのZipファイルを作成します。

そして、そのZipファイルを添付ファイルとして指定すれば対応可能です。

 

VBAプログラムを変更すれば、Zipファイルにしなくても複数ファイルを添付可能になります。

それでは、VBAプログラムの変更方法を説明します。

具体的には、⑫のVBAプログラムを変更します。

変更前のVBAプログラム

以下が変更前の⑫のVBAプログラムです。

 

変更後のVBAプログラム

以下が変更後の⑫のVBAプログラムです。

 

変更後の⑫のVBAプログラム

変更後の⑫のVBAプログラム

 

複数ファイルを指定する場合の入力説明

1ファイル毎に「ALT」+「ENTER」キーで改行しながら、
複数ファイルを「添付ファイル」欄に入力します。

複数ファイルを指定した入力サンプル

複数ファイルを指定した入力サンプル

 

複数ファイルを指定した実行結果

以下の画像は、複数ファイルを指定した場合のメールになります。

「添付ファイル」欄に入力した複数ファイルがメールに添付されています。

複数ファイルがメールに添付されている

複数ファイルがメールに添付されている

 

以上です。

 

最後まで読んでいただきありがとうございました。
この記事をシェアしていただけると喜びます。

 

2 COMMENTS

森田 拓也

 【EXCEL:VBA】宛先を変えながら同じ本文のメール下書きを作成したい
を見させていただき有難うございます。
 添付ファイル1点では、出来たのですが、
2点以上は、出来ますでしょうか?
 お教えください。

返信する
くうねる

記事本文の最後に、
2点以上ファイルを添付できるようにVBAプログラム変更方法を追記しました。

ご確認をお願いします。

返信する

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です