Excelの一覧からメールを一括送信
Posted by Junya HOSONO 2008年5月 6日 PM 5:35
大勢のかたにメールを一度に送信したいときってよくありますよね。
例えば、単発のイベントのリマインドメールや開催後のお礼メールなどで、「本文の内容はほとんど一緒でも、宛名部分やちょっとしたあいさつだけでもそれぞれ個別に設定したい」、といったような場合です。
普段使っているメールソフトからでも送れますが、「BCC じゃなくて CC にしてしまったらどうしよう」、「そもそも本文内容を個別に変えられないので、けっきょくコピペ+編集する必要がある」などの問題点があります。
そこで今回は、ちょっと前に知った、Excelの一覧からのメール一括送信の方法をご紹介します。うまく使えれば、超絶的に便利です。ただし、SPAMメール送信に使うことはもちろんご遠慮願います。お願いしますよほんとに。
最初に白状(?)しておきますが、この方法は、windows のバージョン、Excel のバージョンなどによっては動かない場合があるようです。詳しくは、下のExcelメール一括送信の注意点をご覧ください。もちろんそのままで使えるかたも多いかとは思います(そう願います)。
Excel メール一括送信:利用方法
この方法は、Excelのマクロと、CDO(Microsoft Collaboration Data Objects)を利用します。まずは、下からExcel ファイルをダウンロードしてください。
以下、手順にそって説明します。また、Excel ファイル自体にも使い方を簡単に説明したシート(「使い方の説明」)が入っていますので、そちらも参照してください。
- ダウンロードした Excel ファイルを開きます。
- 「excel_mail_send.xls はマクロを含んでいます。」という表示が出る場合には、「マクロを有効にする」ボタンを押してください。
- Sheet1 シートを表示してください。
- おそらくはじめにこのシートが表示されるとは思いますが、念のため。
- C 列 2 行のセルに、普段使用しているメールアカウントの SMTP サーバ(送信サーバ)名を記入してください。普段使っているメールソフトのアカウント設定画面などにすでに入力されているはずです。(例:smtp.mail.yahoo.co.jp)
- C 列 4 行のセルに、送るメールで「送信元メールアドレス」としたいメールアドレスを記入してください。メールを送られた人からすれば「送り元」になります。送られたメールに返答することが考えられますので、普段利用しているメールアドレスがいいでしょう。
- C 列 5 行のセルに、メールを送る際に、BCC を送りたいメールアドレスを記入してください。必要ない場合は空欄で結構です。
- この方法でメールを送っても、だれにメールを送ったかはお使いのメールソフトの送信箱には残りません(このマクロとメールソフトとは何の関係もないからです)。Excelのなかにも残りません(sheet1の情報だけです。)。ですので、あとでそれをわかりたい場合は、自分のメールアドレスをここに記入しておけば、送ったメールが自分宛にも届きますので、これをメールソフト内で送信箱に移動する、などして対応してみてください。「BCC ってなに?」というかたはメールのBccフィールドを活用する ? @ITにわかりやすい説明がありますので、見てください。
- 8 行目以降に、メールを送る先の情報を記入してください。1行=1メールになります。
- B 列:送信先メールアドレス(必須項目)
- C 列:メール件名
- D 列:送信先団体名
- E 列:送信先宛名
- F 列:メール本文:このセルの中にメール本文を記入します。セル内で改行することもできます。セル内での改行の仕方は、[Alt] キーを押しながら [Enter] キーを押してください。ちなみに、1セル内には約32,000文字程度が入るようです。
- 送りたいメールの分の情報を記入し終わったら、「メール送信」ボタンを押してください。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 以降:未確認
- 【対策】Officee2003においては、標準インストールではCDOがインストールされない(アップグレードインストールだと削除する)、といったことがあるようです。詳しくはこちらのOffice2003のインストールでCDOが動かなくなる! 「VBA応用(CDOでメール送信)」内をご覧ください。Office2003 における CDO のインストール方法が説明されています。
- お使いの SMTP サーバの設定
(※ここの説明で、「こういう状況にある→こう対策する」という順序ですすめるのがちょっと難しいと思われる場合には、何かしらのエラーが出る場合に、とりあえず下記対策を一つづつ試してみる、というのも手かと思います)- 25番ポートブロック(Outbound Port25 Blocking)対策が必要な場合
- 【対策】 sheet1 の C 列 3 行の 25 を 587 に変更してみてください。
- POP before SMTP が必要な場合
- 【対策】 適切な対策でないかもしれませんが、お使いのパソコンで、同じ SMTP サーバを利用するメールアカウントで一度受信作業をして、直後にこのマクロを利用してみてください。
- SMTP AUTH が必要な場合
- 【対策】 マクロの修正が必要です。マクロ内の、"※「メール送信時に認証が必要」な場合"という部分の記述にしたがって、マクロを修正してください。
- 25番ポートブロック(Outbound Port25 Blocking)対策が必要な場合
もちろん、こうしたものを提供する側としては「どんな環境においても動くものを提供する」ことが本道だとは思っていますが、公開前の動作確認に多大な時間を割くよりも、多少の課題はありつつも公開して、大勢の利用者で情報を共用したほうがいい、と判断しました。
ですので、「動いた!」「動かない・・・」というかたは、コメント欄に記述をお願いします(その際には、上記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氏から教えていただいたものを改良したものです。また、改良に当たっては以下のページを参考にしました。この場を借りてお礼を申しあげます。ありがとうございました。
- Sending mail from Excel with CDO
- How to send HTML formatted mail using CDO for Windows 2000 and a remote SMTP service
- VBA応用(CDOでメール送信)
- Excel から CDO を用いてメールを送る手法について詳しく書かれています。VBA が多少わかるかたにとっては、すごくためになるページだと思います。
このマクロ自体は、上記のページなどを参考に作成したものなので、とくに利用に制限は持たせません。ご自由にお使いください(SPAM 目的は厳禁)。ただし、このマクロに関してはご自身の責任のもとでの利用をお願いいたします。万一なんらかのトラブルが発生しても、当ブログ管理者は一切責任を負いませんので、ご了承ください。
また、ソフトのインストールや VBA がわかる人にとっては、有名な汎用コンポーネントであるBASP21を利用する手法もあります。こちらに関しては、以下のページが参考になるでしょう。
このブログ記事に対するトラックバックURL: http://www.ngo-jvc.net/~gt205119/mt/mt-tb-jvcweb.cgi/142/jvcwebtb/XXXXXXXX
※トラックバックスパム対策のため、お手数ですがトラックバックURL末尾のXXXXXXXX 部分を下記画像の数字列に書き換えてからご利用ください。


コメント(0)
コメントする