Home > Excel VBA Macro その他 > FAQ

Outlookと連携して複数件メール送信するには?

Question 72.6 Previous Next
こんにちは。お世話になります。沢山の知識を画面から日々頂き、感謝しております。丁寧にご解説くださっているのでわかり易く頼りにさせていただいています。

今回したい事は、Outlookを使用して、複数件メール送信をしたい。
現状、Excelで作成したメールアドレス表から範囲を指定して、範囲の各セルに入力された宛先に順次、とっていきたいのですが、一番最初のアドレスにしか送信できません。
myItem.to = Sheets("送信データ").Range("f" & コピー先行).Value
としています。 どのように考え、どうしたらうまく次のアドレスを取ってくれるのかお教えいただきたく、よろしくお願い致します。 Excel 2000を使っています。
Answer  Excel 2003 Copyright (C) 2005.3.30 永井善王
Excel VBA マクロ 500連発第2弾 詳細は こちら このホームページの情報がお役に立っているようで、うれしいです。
Excel VBAで Outlookを操作してメール送信するマクロは、拙著(監修)「Excel VBAマクロ 500連発 第2弾」のサンプル260番に、Sunago氏の作品が掲載されています。
Outlook連携について私は、それほど詳しい知識を持ち合わせていませんが、ご質問をいただきましたので、知っている範囲でお答えします。

質問文の中のコードは、Excelシートからメールアドレスを取得する部分だけで前後の関係などが分かりません。 もう少し、全体を公開していただいた方が良かったかも知れませんが、この部分では、特に問題は発生しないと思われます。
本題は、「一番最初のアドレスにしか送信できない」が、どうすれば、2番目以後のアドレスに送信することができるようになるか、アプリケーション連携の仕方ですね。

あらかじめお断りしておきます。 現在、私の手元に Excel 2000で Outlook連携できる環境を整えられませんので、これ以後の解説を Excel 2003 & Outlook 2003、OSは Windows XP Home Edition 2002(SP2)を前提にして進めます。ご了承ください。

OutlookとのOLE連携の留意点
1. Excelと Outlookとのバージョンを揃える必要がある
  ようだ
2. Outlookの設定を整えておく必要があるようだ
3. インターネットとの接続状態をクリーンに
4. 連携中にウイルスチェックが割り込むと、タイミング
  が狂うことがあるようだ
5. Outlookのセキュリティチェックの警告(右図)が、送
  信の都度、表示されてしまう

これらが代表的な留意点であり、一度に複数のメールを送信することは、容易いことではないようです。

ご存知のとおり Outlookのメール送信は、送信ボタンをクリックすると一旦送信トレイに格納される方式(A)と、直ちに相手方に送信される方式(B)とがあります。
複数メールをOLE連携で送信しようとする場合、(B)方式を採ると、経験的に申しますがトラブルが多いようです。
特に Outlook 2003では、メール1通ごとに上図の警告が表示されてしまうようで、業務の自動化に支障を来たしてしまいます。
よって、連携は(A)方式を採用し、すべてを送信トレイに入れ終わったときに、「手作業で相手方に送信してください」とかのメッセージを表示して、[OK]ボタンがクリックされたら Outlookを起動してあげるという流れの方が無難なようです。

以上を一応の回答とさせてください。 Excel 2000でのご質問なのにヒントにもならないかも知れませんが、あなたの方で分かったことが出てきた折には、お知らせくださると嬉しいです。
参考(他HP)
マクロで作成した新規ブックをメールに添付するには

 

Excel VBA Macro