Windows TIPS
[Office Master]
  Windows TIPS TOPへ
Windows TIPS全リストへ
内容別分類一覧へ

配信リストを使ってメールをいっせいに配信する

山田 祥寛
2003/06/14
 
対象ソフトウェア
Excel 2000
Excel 2002
Excelで管理されたメール・アドレスに対して、いっせいにメールを送信できると便利である。
このためには、メール送信用コンポーネントを使い、Excelから呼び出せばよい。
 
操作方法

 Microsoft Excel上で管理されているメール・アドレス情報をそのまま使って、メールの配信に利用できれば、どんなにか便利だろう。多数の受信者に向けて同時にメールを配信する場合、これまではいちいちメール・ソフトウェア上でアドレスを指定したり、(配信)グループを定義したりと、何かと不便なことが多かった。しかし、本サンプルを利用することでそうした苦労からも解放される。また、配信する/しないも「○」「×」のフラグを設定するだけで簡単に振り分けることができる。

 なお、本TIPSを利用するには、使用しているコンピュータがインターネットに接続されていること、自分が利用できるメール・サーバが用意されていること(プロバイダのメール・サーバなどでも可能)、メール送信用の追加コンポーネント(Basp21)がご使用のコンピュータにインストールされていることが条件となる。

 それでは早速、作成までの流れを見てみることにしよう。

手順1―追加コンポーネント「Basp21」をインストールする

 まずは、サンプル実行に必要な追加コンポーネント「Basp21」をインストールしよう。

 「Basp21」は馬場達夫氏が作成したフリーウェアのネットワーク・コンポーネントである(製品版もある)。メール送信やファイル・アップロード、文字エンコーディング変換など、Visual BasicやVisual Basic for Application(VBA)、Windows Scriptなどが持っていない機能を豊富に盛り込んだ、ユーティリティ的なコンポーネントだ。IISのサーバサイド技術であるASP(Active Server Pages)の世界で比較的よく使用されているコンポーネントだが、もちろん、VBやVBAからも使用することができる、汎用的なコンポーネントである。

 インストールといっても、何ら難しいことはない。以下のWebページから「Basp21」のインストール・プログラムBASP21-YYYY-MMDD.exe(YYYY-MMDDには日付が入る。執筆時点の最新は2003年2月11日版。67メソッドをサポート)をダウンロードし、実行するだけでよい。詳細は以下のサイトを参照していただきたい。

手順2―配信リストのテンプレートを作成する

 今回作成する配信リストの画面を以下に示す。あらかじめExcelの表として、メールを送信する相手とメール・アドレスの一覧を作成しておき、[メール配信開始]というボタンをクリックすると、実際にメールが送信される。ただし一時的に送信を停止したりできるように、あて先ごとに配信するかどうかを選択できるようにしておく。

Excelでいっせいにメールを送信する「メール配信リスト」サンプル
Excel上でメールの送信先アドレスと名前、送信の許可/不許可を設定してボタンをクリックすると、指定されたあて先に自動的にメールが送信される。
  配信するかどうかの指定。「○」なら配信し、「×」なら配信しない。
  あて先の名前。
  実際のメール・アドレス。
  配信リストの行数を変更する場合は、後述のプログラムも変更すること。
  これをクリックするとメールが配信される。ただし確認ダイアログなどは一切出ないので(必要ならばプログラムを変更してください)、間違えて何度もクリックしないように注意すること。

  • サンプルExcelファイルのダウンロード
    :このリンクを右クリックして、ファイルとして保存してから実行してください。なお間違えて送信してしまわないように、このサンプル・ファイルでは、メール・サーバ名や差出人名フィールドなどは空白にしてあります。必ず各自の環境に合わせて変更の上、実行してください)

 メール配信リストの表には、配信の是非を決める「配信」列のほか、あて先のエイリアスとなる「送付先名」(別名。メーラにはこの名前があて先として表示される)、そして配信先の「メール・アドレス」を含めるものとする。

 サンプルのExcelファイルでは、「配信」列に「○」「×」以外のデータが入らないよう入力制限を設定しているが(この列はプログラム中で配信の是非を判断するキーとなる部分なので、特に重要だ)、これは必ずしも必須ではない。ただ、コードを見ていただけるとお分かりのように、その場合、誤って「○」以外の文字(例えば「〇(Shift JISコードでいうと0x815aの文字。漢数字の零)」や「0(ゼロ)」)が入力された場合にもメールは配信されないことになってしまうので、注意が必要だ。

 表を作成したら、配信を実行するためのコマンド・ボタンを設置しておこう。Excelをデザイン モードに変更して([コントロール ツール ボックス]パレットにある[デザイン モード]ボタンをクリックする)、ツール・バー上の[コマンド ボタン]をクリックしてから、シート上でもう1度クリックすればよい。そして、作成されたボタンの[プロパティ]を以下のように変更しておく。オブジェクト名とは、プログラムの中でこのコマンド・ボタンを参照するときに使用される名前のことであり、デフォルトでは[CommandBottun1]となっているはずである。

プロパティ 概要
(オブジェクト名) btnCmd
BackColor &H80000018&(任意)
Caption “メール配信開始”
作成するボタンのプロパティ
オブジェクト名さえこの通りにしておけば、あとの属性は任意でよい。分かりやすいものにしておこう。

手順3―メール配信のコードを記述する

 さあ、外枠ができたら、いよいよコードを記述してみよう。

 デザイン・モードの状態でシート上に配置したコマンド・ボタンをダブル・クリックすると、Visual Basic Editorが起動して、btnCmd_Click()プロシージャの編集モードになるはずだ。コード・エディタ上に、以下のコードを記述してほしい。もちろん、メール(SMTP)サーバ名や差出人名、サブジェクト、メール本文などは、実際の用途に合わせて変更していただきたい。なおこのサンプルでは、エラー・チェックなどは行っていないし、送信完了の表示なども行っていないので、必要ならば各自で変更していただきたい。

Private Sub btnCmd_Click()
  Set objBsp = CreateObject("Basp21")
  strSrv = "smtp.example.co.jp"
  strFrm = "Windows News <winnews@example.co.jp>"
  strSbj = "Windows 通信[2003/06/12]Office TIPS開始"
  strBdy = "こんにちは、メール配信プログラムです"
  strFle = ""
  Const END_ROW = 5
  For i = 3 To END_ROW
      strAdd = maillist.Cells(i, 4)
      strNam = maillist.Cells(i, 3)
      strFlg = maillist.Cells(i, 2)
      If strFlg = "○" Then
          If strAdd <> "" Then
              strTo = strNam & "<" & strAdd & ">"
              lngRst = objBsp.SendMail(strSrv, strTo, strFrm, strSbj, strBdy, strFle)
          End If
      End If
  Next
End Sub

注意:strSrv、strFrm、strSbjの3つ(上記リスト中の赤字部分)は、ユーザーの環境に合わせて変更すること。またEND_ROWの値も、実際の定義されている行数に応じて変更していただきたい。

 btnCmd_Clickプロシージャは、コマンド・ボタンがクリックされたときに呼び出されるプロシージャだ。また、プロパティ・ウィンドウから、ワークシートの「(オブジェクト名)」をあらかじめ「maillist」に変更しておこう。

 変数strSrv、strTo、strFrm、strSbj、strBdy、strFleには、それぞれ使用するメール・サーバ名、あて先アドレス、送信元アドレス、件名、本文、添付ファイルのパス(今回は空文字列)をセットする。あて先/送信元アドレスは「名前 <アドレス>」の形式で指定することが可能だ。

 変数strToには、シートの上から順番に送付先をセットしていく。途中にあるForループを見てほしい。読み取りの範囲は、定数END_ROWで設定することができる。今回は「5」をセットしているが、表の大きさに応じて変更する必要がある。

 Forループ内では、Cellsメソッドを介して、それぞれあて先のアドレス(strAdd)、名前(strNam)、送信の是非(strFlg)を取得する。結果、strFlgが「○」で、かつstrAddが空文字列でない場合のみメールを送信することになる。

 メールの実際の配信は、Basp21のSendMailメソッド(詳細はBASP21の配布サイトにあるAPIの解説を参照)で行なうことができる。あらかじめCreateObject関数でBasp21コンポーネントのインスタンス(オブジェクト)を生成しておくのを忘れないでほしい。

手順4―メールを配信する

 コードの記述が終わったら、いよいよ[メール配信開始]ボタンをクリックしてみる。繰り返しにはなるが、あらかじめインターネットに接続できるようにしておく必要がある。今回の例では、エラー処理もしていないし、正しく送信できたかどうかも確認していないので、ボタンをクリックしても何も応答はないが、このあたりは必要に応じて改良していただきたい。

 ボタンをクリックしてしばらくののち、配信先に以下のようなメールが届いたら、めでたく成功だ。

受信したメールの例
サンプルのシート上の[メール配信開始]ボタンをクリックすると、このようなメールが指定されたアドレスに配信される。送信者名や件名、本文などはプログラム中にハード・コーディングされているので、適宜変更していただきたい。
  プログラム中で指定した送信者名。
  シート上で指定したあて先。
  プログラム中で指定した送信者名。
  プログラム中で指定したメールの本文。

 今回は、単純に送信するかどうかを切り替えるだけであったが、そのほかにも「部内連絡用」「××××プロジェクト用」「主要取引先」など、さまざまなフラグを設けて、必要に応じてフィルタを変更する、というようなことも可能だろう。また、今回はメールの本文をハード・コーディングしているが、別のファイルに分けるなどして、メンテナンス性を高めるということもできる。

 まだまだ、応用の可能性はあるので、次の機会にはさらに活用してみたい。どうぞお楽しみに。End of Article

この記事と関連性の高い別の記事

このリストは、デジタルアドバンテージが開発した自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。

generated byJigsaw
「Windows TIPS」


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間