[三流君] −−> [VBAで楽しく] −−> [VBA Outlook 操作]
−−> No.056 Outlookから複数のアドレスにBCC送信

Outlookから複数のアドレスにBCC送信

メルマガ発行内容

<Outlookから複数のアドレスにBCC送信>

こんにちは、 今月は読者減らさないようにがんばろう と 思っている。 三流プログラマーKen3です。 そして、今日の発行でまた減って行く、、 なんていつもの暗い前置きは置いといて、 今回は、 Outlookから複数のアドレスにBCC送信 を軽く書きたいと思います。 へぇ〜、そうなんだぁ程度に、気楽に読んでください。 /* * 1.今回のキッカケ */ In message "質問", 初心者 さん wrote... >EXCELからOUTLOOKを起動してEXCELシートに書かれている複数のアドレスにBCC >で送信していんですが、どうしたらいいんですか? ---- BCC送信かぁ、、、 タイトルが質問で名前が初心者かぁ。 メールの送り元はdion.ne.jpで@Hotmail.comかぁ なんて関係無いことは置いといて、 /* * 2.質問元のサンプル */ 前回と同じだけど(行数、ボリューム稼ぎしてもイミ無いから参照にしろって?) Sub testSEND送信() Dim oApp As Object 'アプリケーションオブジェクト Dim objMAIL As Object 'メールのオブジェクト Dim strMOJI As String '本文 'アプリケーションオブジェクトの作成 Set oApp = CreateObject("Outlook.Application") Set objMAIL = oApp.CreateItem(0) 'olMailItem=0 strMOJI = "こんにちは" & vbCrLf _ & "プログラマーの愚痴、教えまっせ?" & vbCrLf _ & "http://www.ken3.org/ よろしく(笑)" objMAIL.To = "test@ken3.org" '宛先 objMAIL.Subject = "未承諾広告※(笑)" '件名 objMAIL.Body = strMOJI '本文の代入 objMAIL.Send '直接送信箱行き 'おまけでOutlook表示 Dim myNameSpace As Object Dim myFolder As Object Set myNameSpace = oApp.GetNameSpace("MAPI") Set myFolder = myNameSpace.GetDefaultFolder(6) '規定のフォルダーを指定 myFolder.Display '表示 End Sub まず、アプリケーションオブジェクトの作成 Set oApp = CreateObject("Outlook.Application") 次に、メールアイテムを作成します。 Set objMAIL = oApp.CreateItem(0) 'olMailItem=0 本文を一時的に変数に保管して(直接でもいいですよ) strMOJI = "こんにちは" & vbCrLf _ & "プログラマーの愚痴、教えまっせ?" & vbCrLf _ & "http://www.ken3.org/ よろしく(笑)" こんな感じで、vbCrLfの改行を使って、作成してます。 データをメールアイテムにセットする objMAIL.To = "test@ken3.org" '宛先 objMAIL.Subject = "未承諾広告※(笑)" '件名 objMAIL.Body = strMOJI '本文の代入 見たまま?で、 .To 宛先 .Subject 件名 .Body 本文 をセットしてます。 objMAIL.Send '直接送信箱行き の.Sendプロパティです。 これで送信箱に行きます。 と送信箱にメールを保存しました。 /* * 3.BCCの複数宛先指定 */ やりたいことは、BCCで複数の宛先を指定することなので、 .TOを.BCCに変えただけです。 Sub testBCC送信() Dim oApp As Object 'アプリケーションオブジェクト Dim objMAIL As Object 'メールのオブジェクト Dim strMOJI As String '本文 'アプリケーションオブジェクトの作成 Set oApp = CreateObject("Outlook.Application") Set objMAIL = oApp.CreateItem(0) 'olMailItem=0 strMOJI = "こんにちは" & vbCrLf _ & "プログラマーの愚痴、教えまっせ?" & vbCrLf _ & "http://www.ken3.org/ よろしく(笑)" objMAIL.BCC = "test@ken3.org" 'BCCに変えただけ objMAIL.Subject = "未承諾広告※(笑)" '件名 objMAIL.Body = strMOJI '本文の代入 objMAIL.Send '直接送信箱行き 'おまけでOutlook表示 Dim myNameSpace As Object Dim myFolder As Object Set myNameSpace = oApp.GetNameSpace("MAPI") Set myFolder = myNameSpace.GetDefaultFolder(6) '規定のフォルダーを指定 myFolder.Display '表示 End Sub objMAIL.BCC = "test@ken3.org" 'BCCに変えただけ なんでBCCとわかったんだよ、、、直感です。 じゃなくって、.Toがそのまま宛先だったので、 勇気をもって実験したら通りました。(できました) あっ、複数の宛先にBCCだっけ、 カンマで区切ったらできるのかなぁ? よし、やってみますか '文字列で宛先を作る strBCC = "test@ken3.org, excel@ken3.org, access@ken3.org" objMAIL.BCC = strBCC '宛先の文字列を渡す あれ?エラーだよ、、 strBCC = "test@ken3.org , excel@ken3.org , access@ken3.org" と、カンマを離してみるがダメ、、、う〜ん、、、 strBCC = "test@ken3.org ; excel@ken3.org ; access@ken3.org" と、セミコロン;で区切ったらうまく行きました。 あとは、固定値だけどセルからアドレスを取ってきて、 セミコロン区切りにして、.BCCにセットすれば出来上がりかなぁ。 BCCで送信する用途に少し危険なニオイを感じるけど(未承諾広告?に使う?) こんな感じです。 Sub testBCC送信() Dim oApp As Object 'アプリケーションオブジェクト Dim objMAIL As Object 'メールのオブジェクト Dim strMOJI As String '本文 'アプリケーションオブジェクトの作成 Set oApp = CreateObject("Outlook.Application") Set objMAIL = oApp.CreateItem(0) 'olMailItem=0 strMOJI = "こんにちは" & vbCrLf _ & "プログラマーの愚痴、教えまっせ?" & vbCrLf _ & "http://www.ken3.org/ よろしく(笑)" Dim strBCC As String 'BCC宛先の変数を定義 '文字列で宛先を作る strBCC = "test@ken3.org ; excel@ken3.org ; access@ken3.org" objMAIL.BCC = strBCC '宛先の文字列を渡す objMAIL.Subject = "未承諾広告※(笑)" '件名 objMAIL.Body = strMOJI '本文の代入 objMAIL.Send '直接送信箱行き 'おまけでOutlook表示 Dim myNameSpace As Object Dim myFolder As Object Set myNameSpace = oApp.GetNameSpace("MAPI") Set myFolder = myNameSpace.GetDefaultFolder(6) '規定のフォルダーを指定 myFolder.Display '表示 End Sub /* * 4.おわりの挨拶 */ 今回は、OutLookアプリの操作でBCC送信でした。 ・.TOを.BCCにして、BCCの宛先にアドレスをセット ・複数アドレスは;セミコロンで区切る でした。 拾い読みして、 1つでも何かの参考となれば幸いです。 Excel/Access大好き、三流プログラマーKen3でした。 ---------------------------------- 関連項目(ただのバックナンバー紹介) ---------------------------------- 2003/03/05 Outlookを操作してメールを送りたい ( http://www.ken3.org/backno/backno_vba12.html#55 を参照) で、 Outlookの起動と送信メールの作成を行いました。 1999/11/23 Excel VBA からOutLookデータを読む ( http://www.ken3.org/backno/backno_guchi05.html#22 を参照) で、 Excel97とOutLook97で少し遊んでました。 時間があったら、あわせてみて下さい。

フィードバック

VBA系の→[掲示板]←を覗く、質問を書き込む
Q.ちょっと疑問なんですが、BCCを利用して複数の人にメールを送信するとき、複数の人の部分が変動する場合、(何かのファイルを参照するまたは、セルに入力されている値(アドレス)を参照する場合)、どのようにすればいいのでしょうか?

A.セルの値を使用する方法で簡単なのが、
XXXX = Sheets("シート名").Range("B2") 
と書く方法です。
これで、B2セルのデータを取り出してます。

でも、実際は、B2セルに
aaa@xxxx.xx.xx ; bbb@xxxx.xx.xx ; ccc@xxx.xx.xx
とは入れなくて、通常は、
       A列      B列
1行目 名前     アドレス
2行目 アキラ   akira@xxxx.xx.xx
3行目 タロウ   taro@xxxx.xx.xx
4行目 ジロウ   xxxx@xxxx.xx.xx
  ・
 ・
  ・
999行目 XXX   XXXXXXXXXXXXXXX
と一覧表で管理していると思います。

なので、ループで、
strWORK = Sheets("シート名").Range("B2")  '先頭の人を入れる
For y = 3 to 999
   If Len(Sheets("シート名").Cells(y, "B")) = 0 Then  '文字数0か?
       exit For  'ループを抜ける
   End IF
   '文字があったら ; を前に付け+する
   strWORK = strWORK & ";" & Sheets("シート名").Cells(y, "B")
Next y
とかして、複数の文字を連結したりします。
そして出来上がったstrWORKをBCCに代入したりします。

チョット難しいですが、何かの参考となれば幸いです。

PS.さらに進むと実際はアドレスリストから指定したデータだけ送りたくなるので、
   C列に送信フラグを作り、
       A列      B列              C列
1行目 名前     アドレス          送信フラグ
2行目 アキラ   akira@xxxx.xx.xx   1
3行目 タロウ   taro@xxxx.xx.xx    0
4行目 ジロウ   xxxx@xxxx.xx.xx    1

と、C列が1だけ送りたかったり。
そんな時は、
strWORK = Sheets("シート名").Range("B2")  '先頭の人を入れる
For y = 3 to 999
   If Len(Sheets("シート名").Cells(y, "B")) = 0 Then  '文字数0か?
       exit For  'ループを抜ける
   End IF
   '文字があったら ; を前に付け+する
   'C列が1の時だけ
   If Sheets("シート名").Cells(y, "C") = 1 Then
       strWORK = strWORK & ";" & Sheets("シート名").Cells(y, "B")
   End If
Next y
なんて作ったりするのかなぁ・・・少し長い余談でした。


ページフッター

ここまで、読んでいただきどうもです。ここから下は、三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、

種類別のリンク や 広告など

気になったジャンル↓を選択してください。

人気記事(来場者が多いTOP3):
[VBAでIE,WebBrowserを操作]・・・VBAでIE,WebBrowserを操作する サンプルです
[Access から Excel 連携 CreateObject("Excel.Application")]・・・AccessからExcelを操作したりデータの書き出しなどです
[VBAでOutlookの操作 CreateObject("Outlook.Application" )]・・・VBAからOutlookを使い、メール関係を処理するサンプルです
↑上記3つみたいなCreateObjectで他のアプリケーションを操作するサンプルが人気です。

Excel関係:
[Excel UserFormを操作する]・・・エクセルでユーザーフォームを作成して入力などを行ってます
[ExcelからAccessを操作する]・・・ExcelからAccessのマクロを起動してみました、
[Excel関係 関数、その他]・・・その他Excel関係です

Access関係:
[Access UserForm/サブフォーム 操作]・・・アクセスでフォームを使ったサンプルです
[Access レポート操作]・・・レポートを操作してみました
[Access クエリーやその他関数]・・・あまりまとまってませんが、スポット的な単体関数の解説です

その他:VBAの共通関数やテキストファイルの操作など
[VBAでテキストファイル(TextFile)の操作]・・・普通のテキストファイルを使ったサンプルです
[VBA 標準関数関係とその他解説]・・・その他、グダグタ解説してます

開発時の操作: [F1を押してHELPを見る]/ [Debug.Print と イミディエイトウインドウ]/ [実行時エラーでデバッグ]/ [ウォッチ式とSTOP]/ [参照設定を行う]

仕様書(設計書?) XXXX書類: [基本設計書や要求仕様書]/ [テスト仕様書 テストデータ]/ [バグ票]/ [関数仕様書]/ [流れは 入力・処理・出力]

※↑文章の味付けが変わっていて、お口に合うかわかりませんが。。。
※※読んで、気分を悪くされたらスミマセン。

Blogとリンク:[三流君の作業日記]/ [VBAやASPのサンプルコード]/ 広告-[通販人気商品の足跡]



[三流君(TOP ken3.org へ戻る)] / [VBA系TOPへ] / [VBA系バックナンバー目次へ移動]