【質問】アクセスVBAでメールを送信(複数宛先・添付)について

このQ&Aのポイント
  • アクセスVBAを使用して複数の宛先にメールを送信しようとしています。宛先を複数設定する方法と、添付ファイルの数を変える方法について教えてください。
  • アクセスVBAを利用してメールを送信する際、複数の宛先にメールを送信する方法と、宛先ごとに異なる添付ファイルを設定する方法について教えてください。
  • アクセスVBAで複数の宛先にメールを送信しようとしています。宛先を複数設定する方法と、宛先ごとに異なる添付ファイルを設定する方法について教えてください。
回答を見る
  • ベストアンサー

アクセスVBAでメールを送信(複数宛先・添付)

vbaを使用しメールを送信しようとしております。 以下に記載のように設定をしておりますが、2点設定の方法がわかりかねております。 大変お手数ですが、ご教示いただければ幸いです。 (1)宛先を複数設定したい場合はどのように設定すればよろしいでしょうか。 別々に送るのではなく、宛先にアドレス1、アドレス2を設定し1通のメールで送信をしたいです。 (2)添付ファイルを複数添付したいのですが、宛先によって添付ファイルの数が異なります。 たとえば、宛先Aには添付ファイルが1,2があるが、Bには添付ファイル1のみであり添付ファイル2フィール付度はNULLです。 この場合、エラーになってしまうのですが、"添付ファイルフィールドがnullでも無視してそのまま送信する"と設定はできるのでしょうか。 --------------------------------------- テーブル名:テーブル1 フィールド:アドレス1、アドレス2、件名、本文、添付ファイル1、添付ファイル2 --------------------------------------- Sub SAMPLE_0216() Dim db As DAO.Database Dim R1 As Recordset Dim AP As Object Dim ML As Object Dim L1 As String Set db = CurrentDb Set R1 = db.OpenRecordset("テーブル1") Set AP = CreateObject("Outlook.Application") R1.MoveFirst Do Until R1.EOF 'メールを作成 Set ML = AP.createitem(0) 'アドレスをセット ML.To = R1!アドレス1 '件名をセット ML.Subject = R1!件名 '本文をセット ML.Body = R1!本文 'ファイルを添付1 L1 = R1!添付ファイル1 ML.Attachments.Add L1 'ファイルを添付2 L1 = R1!添付ファイル2 ML.Attachments.Add L1 'メールを送信 ML.Send R1.MoveNext Loop End Sub ----------------------------------------- どうぞよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • queuerev2
  • ベストアンサー率78% (96/122)
回答No.1

Accessはわからないのですが、ExcelからのOutlookの操作と基本は同じはずなので一部推定を交えて答えさせていただきます。 まず宛先ですが、";"(セミコロン)で区切れば複数設定できます。 Access VBA の書き方ですが、 ML.To = R1!アドレス1 & ";" & R1!アドレス2 でよさそうに思えるのですがいかがでしょうか。 宛先が1つの場合でも、アドレス1かアドレス2のうち宛先の入っていない方が空文字列(長さ0の文字列)であればこのままで大丈夫なはずです。 次に添付ファイルですが、Nullを無視してそのまま送信可能かどうかはわからないのですが、Nullなら添付しないようにすれば話は簡単だと思います。 Access VBA の書き方ですが、たぶん以下のようなものでいいと思います。 'ファイルを添付1 IF IsNull(R1!添付ファイル1) = False Then L1 = R1!添付ファイル1 ML.Attachments.Add L1 End If 'ファイルを添付2 IF IsNull(R1!添付ファイル2) = False Then L1 = R1!添付ファイル2 ML.Attachments.Add L1 End If (フィールドがNullかどうかの判定は参考URLのページをまねてみたのですがこれでいいでしょうか?) http://okwave.jp/qa/q1223220.html

参考URL:
http://okwave.jp/qa/q1223220.html
Limontulla
質問者

お礼

ご回答ありがとうございます。 お返事が遅くなり申し訳ありません。 ご回答いただいた方法でできました! ありがとうございました。

関連するQ&A

  • ACCESS CreateObjectを使ったMail送信の添付ファイル名

    ACCESSからOutlookのMailを送信したいと思っています。 ------------------------ Dim myOL As Object Dim myMail As Object Set myOL = CreateObject("Outlook.Application") Set myMail = myOL.CreateItem(0) myMail.SentOnBehalfOfName = "" myMail.To = "" myMail.Cc = "" myMail.BCc = "" myMail.Subject = "" myMail.Attachments.Add ("") myMail.Body = "" myMail.Display ------------------------------ そこで、添付したいファイルのフルパスをフォーム上に入力し、 都度それを上の記述に反映したいと思います。 例)me.添付ファイル名 myMail.Attachments.Add ("& me.添付ファイル名 &") でも myMail.Attachments.Add (" me.添付ファイル名 ") でも エラーになってしまいます。 引き続きいろんなパタンを試してみますが、 お分かりになる方、教えて下さい!! (”や’に弱いんです・・・。)

  • AccessからOutlookを立上げファイル添付で自動メールしたいのですが

    以下のようなプログラムでファイルを添付して自動的にメール送信したいと思いました。しかし、.Attachments.Add Me![Attachment]のところで、「オブジェクトは、このプロパティーまたはメソッドは、サポートしていません。」というエラーでうまくいきません。Attachmentsで点を打つとAddが表示され、メンバーとして存在しているのになぜエラーになるのでしょうか?このエラーを回避する方法を教えて頂けないでしょうか?WinXP Professionalで、Access2003を使用しております。 Dim appOutlook As Outlook.Application Dim objMailItem As Outlook.MailItem Set appOutlook = CreateObject("Outlook.Application") Set objMailItem = appOutlook.CreateItem(olMailItem)   ... With objMailItem .To = Me![宛先] .CC = Me![CC先] .Subject = Me![件名] .Attachments.Add Me![Attachment] .Body = Me![内容] .Display .Send End With appOutlook.Quit Set objMailItem = Nothing Set appOutlook = Nothing

  • EXCELVBA メール送信について

    EXCELVBAで加工したデータをメールに添付して送信するツールを作成したいのですが、送信後保存ファイルを削除したい場合の方法分からす困っています。自身(?)を削除する事になるのでうまく動作しません。何方か良い方法があったらご指導を頂けないでしょうか? 宜しくお願いします。 Sub MailSend() Dim app As Object Dim objml As Object Dim moji As String Set app = CreateObject("Outlook.Application") Set objml = app.CreateItem(0) moji = "ご査収ください" objml.To = "xxxx@xxx.xxx.or.jp" '宛先 objml.Subject = "TEST" '件名 objml.Body = moji '本文の代入 objml.Attachments.Add "D:\My Documents\TEST.xls" objml.Send '送信   kill(TEST.xls) →※この部分がどのように処理して良いか分かりません End Sub

  • Accessから複数アドレスにメール送信

    かなり初歩的な質問なのかもしれませんが、どうしても進まないのでどなたかご教授お願い致します。 access2003からBasp21を使用してメール送信フォームを作ってます。複数アドレスに一括で送れるように、宛名フォームから氏名を選択(例として3件)すると、メール送信フォームの「bcc」ボックスに、 "bcc" & vbTab & "abc@xx.com" & vbTab & "def@xx.jp" & vbTab & "ghi@xx.com" と入るようにし、送信ボタンクリックで下記のようなコードを書いてます。 Dim bobj As Object Dim svname As String Dim ID As String Dim Mailto As String Dim MailFrom As String Dim subj As String Dim Body As String Dim pass As String Dim msg As Variant '送信チェック用 'SMTPサーバ名:ポート番号:タイムアウト秒 svname = Me.[smtpサーバー] & ":" & Me.[ポート番号] & ":" & Me.[タイムアウト秒] 'ログインID ID = Me.[ログインID] 'パスワード pass = Me.[パスワード] 'オブジェクトを作成 Set bobj = CreateObject("basp21") '宛先 Mailto = Me.[bcc] '送信者 MailFrom = Me.[送信者] & "<" & ID & ">" & vbTab & ID & ":" & pass '件名 subj = Me.[件名]   '本文 Body = Me.[テキスト169] 'メッセージの送信 msg = bobj.SendMail(svname, Mailto, MailFrom, subj, Body) ' 送信チェック If msg <> "" Then MsgBox "送信できませんでした。" & vbCrLf & msg, vbOKOnly + vbCritical, "エラー" Else MsgBox "送信しました", vbOKOnly + vbInformation, "完了" End If これを実行すると、 「送信できませんでした。 555 5.5.4 Unsupported option: & to "bcc" & vbTab & "abc@xx.com" & vb」 というようなメッセージが出て送信できません。 Mailto = Me.[bcc] の所を、 Mailto ="bcc" & vbTab & "abc@xx.com" & vbTab & "def@xx.jp" & vbTab & "fhi@xx.com" にすれば送信できるのですが、送信先は毎回変わるので Me.[bbc] にアドレスを代入して送信できるようにするにはどうすればいいのでしょうか?

  • EXCEL VBA メール送信でファイル添付

    現在、使用しているVBAを利用したメンバー向け案内メール配信で、ファイルを添付できないかと考えております。 G列に入力したアドレスのファイルを添付して送信できればと思うのですが、ご教授願えませんでしょうか。 現在のVBAは企業名、宛先共に変えられるように下記のような形となっております。 添付ファイルも宛先毎に異なります。 B列:送信先メールアドレス C列:メール件名 D列:送信先所属名 E列:送信先宛名 F列:メール本文 コマンドボタンで一括配信となっております。 【以下記述】 Sub Mail_Send() Dim iMsg As Object Dim iConf As Object Dim strbody As String Dim Flds As Variant Dim i, LastRow As Integer ' CDOオブジェクト初期設定 Set iMsg = CreateObject("CDO.Message") Set iConf = CreateObject("CDO.Configuration") iConf.Load -1 ' CDO Source Defaults Set Flds = iConf.Fields With Flds .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = Worksheets("Sheet1").Range("C2").Value .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = Worksheets("Sheet1").Range("C3").Value .Update End With ' 送信範囲設定 LastRow = Worksheets("Sheet1").Range("B7").End(xlDown).Row ' メール送信ループ For i = 8 To LastRow ' 送信状況メッセージクリア Worksheets("Sheet1").Range("F2").Value = "" ' メール本文作成 strbody = Worksheets("Sheet1").Range("D" & i).Value & vbCrLf & " " & _ Worksheets("Sheet1").Range("E" & i).Value & " 様" & vbCrLf & vbCrLf & _ Worksheets("Sheet1").Range("F" & i).Value ' 改行変換(送信環境によってはここの修正が必要かも) tmpstrbody = Replace(strbody, vbLf, vbCrLf) strbody = Replace(tmpstrbody, vbCr & vbCrLf, vbCrLf) ' メール送信 With iMsg Set .Configuration = iConf .From = Worksheets("Sheet1").Range("C4").Value .To = Worksheets("Sheet1").Range("B" & i).Value .BCC = Worksheets("Sheet1").Range("C5").Value .Subject = Worksheets("Sheet1").Range("C" & i).Value .TextBody = strbody .Send End With ' 送信状況メッセージ更新 Worksheets("Sheet1").Range("F2").Value = Worksheets("Sheet1").Range("B" & i).Value & " まで送信成功!" ' 3秒停止 Application.Wait [ NOW() + "0:00:03" ] Next i End Sub

  • VBAメール添付ファイル付送信

    VBAメール添付ファイル付送信 Win2000 Access2000 添付ファイル付メールの送信を以下の様に組んでおります 以下の組み方ですと本文の下か、上かにしか添付ファイルを付ける事ができません 本文の中間に添付ファイルを付ける事は可能なのでしょうか? 希望する内容↓ ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 本文○○○○○○○○○○○○ ここに添付ファイル 本文○○○○○○○○○○○○ ++++++++++++++++++++++++++++++++++++++++++++++++++++++ With myMail   .To = "メールアドレス"   .Subject = "例:メールタイトル"   .Attachments.Add("サーバに保存してあるEXCELのフルパス")   .Body = "本文 (メッセージ)"   .send End With 宜しくお願いします

  • 送信者もあて先もないのに、メールが届く!?

    一昨日から、今までに3通か4通くらい来たんですが、送信者の所も件名も空欄なんです。 最初は迷惑メールかと思いましたが、送信者のところが空白なのが気になって一度開いたんですが、 送信者なし、あて先(つまり、私のアドレス)なし と書いてありました。 送信者も宛先もないのに、なぜ届くのでしょうか?? もちろん、本文もありませんでした。 これも迷惑メールでしょうか・・・(>_<)

  • ohamail・・・という宛先の、添付ファイルつきのあやしいメール

    数日前から、宛先のアドレスにohamailという文字の入った添付ファイル付きメールが届きます。 宛先は当然自分のアドレスのはずですが、数個使っているアドレスのどれも、そんな表記ではありません。ただ、メール受信中の様子を見ている限りでは、私のどのアドレスに送信されてきているのかをつかむことはできました。きっと、そのアドレスを使って何かのサイトで会員登録でもした関係で、ohamail・・・という総称の宛先となっているのかなあと思います。 メールは何も書いてなかったり、英語で何か書いてあったり、送信者もいろいろです。添付ファイルも付いていますし(開いていません)、ウィルスメールなのではと疑うのですが、ノートンでは反応しません。 同じようなメールが届く方、またこれが何なのかおわかりになる方、教えていただけると助かります。もちろん、添付ファイルを開いてみたりはしていません。 よろしくお願いいたします。

  • エクセルVBAからNotesでメール送信

    一度、知恵袋で質問しましたが、回答に対して聞くことができないので、こちらで質問させて頂きます。 VBAでNotesからメールを送信する際、宛先に複数のアドレスを配列変数で指定すると、 2人目以降にメールが送信されません。 コードの内容はエクセルシートにあるアドレスリストのA列を順に配列にし、 重複しているアドレスを省いて配列変数(adrsarray)を作成し 配列変数に入っている複数の宛先へ、Notesからメールを送信するというものです。 以下、抜粋ですがコードを記します。 Const EMBED_ATTACHMENT As Integer = 1454 Dim nss As Object ' lotus.NOTESSESSION Dim ndb As Object ' lotus.NOTESDATABASE Dim ndoc As Object ' lotus.NOTESDOCUMENT Dim rtitem As Object ' lotus.NOTESRICHTEXTITEM Dim nemb As Object ' lotus.NOTESEMBEDDEDOBJECT Dim fname As String Dim r, lastr, i As Long Dim tmp Dim adrsarray, myarray, mydic, myitm, adrs As Variant 'A列のアドレスを配列変数adrsarrayに代入 For r = 2 To lastr If Cells(r, 1) <> "" Then If r = 2 Then adrsarray = Cells(r, 1) End If If r > 2 Then adrsarray = adrsarray & "," & Cells(r, 1) End If End If Next Set Dic = CreateObject("Scripting.Dictionary") myarray = Split(adrsarray, ",") For i = 0 To UBound(myarray) If Not Dic.Exists(myarray(i)) Then Dic.Add myarray(i), myarray(i) End If Next i '(1)データの重複した配列を初期化し(2)で再度重複無しの配列を格納 adrsarray = "" '(2)重複を除いて配列を作成 myitm = Dic.keys For i = 0 To UBound(myitm) If adrsarray = "" Then adrsarray = myitm(i) Else adrsarray = adrsarray & "," & myitm(i) End If Next Set Dic = Nothing Set nss = CreateObject("Notes.NotesSession") Set ndb = nss.GETDATABASE("", "") ndb.OpenMail Set ndoc = ndb.CREATEDOCUMENT() ndoc.Subject = "データを送ります。" ndoc.SendTo =Array(adrsarray) ↑ ここで以下のように複数名のアドレスを指定すると ndoc.SendTo = Array("○○@○○.com","○○@○○.com","○○@○○.com") 一斉送信できることがわかったのですが、 宛先は固定ではない為、Array(adrsarray)のように 取得した複数アドレスを入れたいのですが 私の作成したコードではうまく動作しません。 長々と申し訳ないですが ndoc.SendTo =array(adrsarray) で送信するにはどうすればよろしいでしょうか。 ご教授よろしく御願い申し上げます。

  • 違う宛先のメールが届きます

    8件の宛先がおかしいメール(詳細は下記)が届きましたが、どうして こんなメールを受診するのでしょうか? メールソフト:Outlook Express 宛先:1件のみ私のアドレスで残り7件は私以外のアドレス    (全て、ybb.ne.jp) 送信者:英語の名前で8件とも違う 件名:A new settings file for the tmr0711@ybb.ne.jp has just been released 添付ファイル:添付ファイル付き WindowsXP-pro sp3、Outlook Express ver.6です。