Excelの一覧からメールを一括送信

Excelの一覧からメールを一括送信

大勢のかたにメールを一度に送信したいときってよくありますよね。

例えば、単発のイベントのリマインドメールや開催後のお礼メールなどで、「本文の内容はほとんど一緒でも、宛名部分やちょっとしたあいさつだけでもそれぞれ個別に設定したい」、といったような場合です。

普段使っているメールソフトからでも送れますが、「BCC じゃなくて CC にしてしまったらどうしよう」、「そもそも本文内容を個別に変えられないので、けっきょくコピペ+編集する必要がある」などの問題点があります。

そこで今回は、ちょっと前に知った、Excelの一覧からのメール一括送信の方法をご紹介します。うまく使えれば、超絶的に便利です。ただし、SPAMメール送信に使うことはもちろんご遠慮願います。お願いしますよほんとに。

最初に白状(?)しておきますが、この方法は、windows のバージョン、Excel のバージョンなどによっては動かない場合があるようです。詳しくは、下のExcelメール一括送信の注意点をご覧ください。もちろんそのままで使えるかたも多いかとは思います(そう願います)。

Excel メール一括送信:利用方法

この方法は、Excelのマクロと、CDO(Microsoft Collaboration Data Objects)を利用します。まずは、下からExcel ファイルをダウンロードしてください。

以下、手順にそって説明します。また、Excel ファイル自体にも使い方を簡単に説明したシート(「使い方の説明」)が入っていますので、そちらも参照してください。

  1. ダウンロードした Excel ファイルを開きます。
    • 「excel_mail_send.xls はマクロを含んでいます。」という表示が出る場合には、「マクロを有効にする」ボタンを押してください。
  2. Sheet1 シートを表示してください。
    • おそらくはじめにこのシートが表示されるとは思いますが、念のため。
  3. Sheet1 の画面
  4. C 列 2 行のセルに、普段使用しているメールアカウントの SMTP サーバ(送信サーバ)名を記入してください。普段使っているメールソフトのアカウント設定画面などにすでに入力されているはずです。(例:smtp.mail.yahoo.co.jp)
  5. C 列 4 行のセルに、送るメールで「送信元メールアドレス」としたいメールアドレスを記入してください。メールを送られた人からすれば「送り元」になります。送られたメールに返答することが考えられますので、普段利用しているメールアドレスがいいでしょう。
  6. C 列 5 行のセルに、メールを送る際に、BCC を送りたいメールアドレスを記入してください。必要ない場合は空欄で結構です。
    • この方法でメールを送っても、だれにメールを送ったかはお使いのメールソフトの送信箱には残りません(このマクロとメールソフトとは何の関係もないからです)。Excelのなかにも残りません(sheet1の情報だけです。)。ですので、あとでそれをわかりたい場合は、自分のメールアドレスをここに記入しておけば、送ったメールが自分宛にも届きますので、これをメールソフト内で送信箱に移動する、などして対応してみてください。「BCC ってなに?」というかたはメールのBccフィールドを活用する ? @ITにわかりやすい説明がありますので、見てください。
  7. 8 行目以降に、メールを送る先の情報を記入してください。1行=1メールになります。
    • B 列:送信先メールアドレス(必須項目)
    • C 列:メール件名
    • D 列:送信先団体名
    • E 列:送信先宛名
    • F 列:メール本文:このセルの中にメール本文を記入します。セル内で改行することもできます。セル内での改行の仕方は、[Alt] キーを押しながら [Enter] キーを押してください。ちなみに、1セル内には約32,000文字程度が入るようです。
  8. 送りたいメールの分の情報を記入し終わったら、「メール送信」ボタンを押してください。8行目の情報から順番に、3 秒に 1 件ずつ、メールを送信します。どの行まで送ったかが、F列2行に表示されます。
    • 8行目以降、行のデータが入っている分だけ送信します。なお、途中でB 列(=送信先メールアドレス)に空白のセルがあるとそこで終了してしまうので、B 列は必ず入力してください。

いかがでしょうか。サンプルデータの8行目の情報から送られるメールは、以下のようになります。

宛先:hogehoge@****.com
件名:テストメール1用の件名!
本文:
■■■法人
 ほげほげ 様

ここに本文を書きます。
改行はAltキーを押しながらEnterキーを押しましょう。

宛先、件名、本文1行目(=団体名)、本文2行目(=宛名)、本文3行目以降として、Excel のデータが使用されていることがおわかりになるでしょうか。

これで、いままでメールソフトから手作業で送っていたものが、一括で送れるようになります。3 秒で 1 件ですから、100 件送るのに300 秒=5 分、ということですね(もちろん Excel 上の事前データ編集の時間はかかりますが)。効率があがることはもちろん、操作が簡単ですから、まちがえて CC で送っちゃった、ということもありえません。

もちろん、すでにあるExcel の名簿などからもメールアドレスや宛名欄などがコピペしてこれますし、イベントごとにファイルを分けておけば、参加者名簿がそのままメール送信履歴にもなる、といった管理方法も考えられます。素晴らしいと思いませんか? このマクロを使って、いままでメール対応に追われていた時間を少しでも短縮できれば幸いです。

Excelメール一括送信の注意点

動作環境について

この方法は、様々な要素によって、使える場合と使えない場合が出てくるようです。下記のその項目と、簡単な対策方法を示します。

  • windows のバージョン
    • 98/ME:不可
    • 2000/XP:OK
    • Vista:未確認
    • (※ちなみに、身近にまともな MacOS がないために Mac での動作確認は一切できていません。Mac ユーザーの方すみません。ていうか、CDO 自体動くのかしら?)
  • Excel のバージョン
    • 97以前:未確認(おそらく不可)
    • 2000:OK
    • 2003 以降:未確認
  • お使いの SMTP サーバの設定
    (※ここの説明で、「こういう状況にある→こう対策する」という順序ですすめるのがちょっと難しいと思われる場合には、何かしらのエラーが出る場合に、とりあえず下記対策を一つづつ試してみる、というのも手かと思います)
    • 25番ポートブロック(Outbound Port25 Blocking)対策が必要な場合
      • 【対策】 sheet1 の C 列 3 行の 25 を 587 に変更してみてください。
    • POP before SMTP が必要な場合
      • 【対策】 適切な対策でないかもしれませんが、お使いのパソコンで、同じ SMTP サーバを利用するメールアカウントで一度受信作業をして、直後にこのマクロを利用してみてください。
    • SMTP AUTH が必要な場合
      • 【対策】 マクロの修正が必要です。マクロ内の、"※「メール送信時に認証が必要」な場合"という部分の記述にしたがって、マクロを修正してください。

もちろん、こうしたものを提供する側としては「どんな環境においても動くものを提供する」ことが本道だとは思っていますが、公開前の動作確認に多大な時間を割くよりも、多少の課題はありつつも公開して、大勢の利用者で情報を共用したほうがいい、と判断しました。

ですので、「動いた!」「動かない・・・」というかたは、コメント欄に記述をお願いします(その際には、上記3項目【 windowsバージョン、Excel バージョン、SMTP サーバ設定】をご記入ください)。多くの環境での動作状況がわかれば、それだけ使える人も多くなると思いますので、ぜひ皆様ご協力ください。

ちなみに、私の動作環境は、windows バージョン:XP Pro SP2、Excel バージョン:2000 SP3、SMTP サーバ設定:POP before SMTP もしくは SMTP AUTH が必須(よって上記POP before SMTP の対策で対応)、です。

送信速度が遅い?ことについて

遅い理由は、メール送信を3 秒に 1 件としているためです。これは、プロバイダに SPAM メール送信と誤解されないようにするための、念のための処置です。また、あまりに常識外の件数を一気に送る行為も、同様の判定を受ける可能性がありますので、常識の範囲内で利用しましょう。ご利用のプロバイダによって SPAM 判定の基準は異なると思いますのでご注意ください。ちなみに、「3 秒に 1 件」の設定は、マクロ内で変更できます。

お礼およびその他

このマクロ自体はシーズ=市民活動を支える制度をつくる会のT氏から教えていただいたものを改良したものです。また、改良に当たっては以下のページを参考にしました。この場を借りてお礼を申しあげます。ありがとうございました。

このマクロ自体は、上記のページなどを参考に作成したものなので、とくに利用に制限は持たせません。ご自由にお使いください(SPAM 目的は厳禁)。ただし、このマクロに関してはご自身の責任のもとでの利用をお願いいたします。万一なんらかのトラブルが発生しても、当ブログ管理者は一切責任を負いませんので、ご了承ください。

また、ソフトのインストールや VBA がわかる人にとっては、有名な汎用コンポーネントであるBASP21を利用する手法もあります。こちらに関しては、以下のページが参考になるでしょう。

このブログ記事に対するトラックバックURL: http://www.ngo-jvc.net/~gt205119/mt/mt-tb-jvcweb.cgi/142/jvcwebtb/XXXXXXXX

※トラックバックスパム対策のため、お手数ですがトラックバックURL末尾のXXXXXXXX 部分を下記画像の数字列に書き換えてからご利用ください。

trackback code

一括送信ソフト一部改造して使わせてもらってます。改造内容はメール本文を「F8]セルのデータだけを参照するようにしたこと、送信間隔を10秒に変更したことなどです。

大量メール送信の適正流量はどのくらいなのでしょうか。
このメールソフトでは、プロバイダの流量制限に触れることはないのでしょうか。

清水さま、コメントありがとうございます。
お返事が遅れて申し訳ありません。

プロバイダによる流量制限についてですが、僕自身正直あまり詳しくありません。各プロバイダごとにポリシーや制限値自体も異なると思いますので、清水さまが利用されているプロバイダの利用規約などをご参照されてみてはいかがでしょうか。

個人的には、「並外れた量のメールなりデータなりを一度に大量に(上り方向に)送信することに対して、何らかの制限がかけられる場合がある」という理解です。ですので、常識内の量であれば、それほど神経質にならなくていいのではないでしょうか。「適正流量」がどれくらいなものかはわかりかねますが、もちろん非常識なほどに大量に送れば、このExcelの仕組みでも、その種の制限に引っかかる可能性はあると思われます。お答えになっているでしょうか。

これに関連して、以下のようなページを見つけました。

平成20年6月25日:個人向けOCNサービスにおける大量データ送信制限の実施について | NTT Com 企業情報
http://www.ntt.com/release/monthNEWS/detail/20080625.html

スパムメール送信対策、という面もありますが、昨今ではファイル共有ソフトの制限という面もあるみたいですね。

これからもよろしくお願いいたします!

コメントする


画像の中に見える文字を入力してください。