質問: accessで自動でメールをおくる時に任意のアドレスに送りたい 工場にてaccess97を使い、営業からの発注に対して納期の回答やもろもろのデータをメールにて任意のアドレスに送りたいのですが、当方vbaはまったく使えず、クエリーの使い倒しとマクロにて、結構ややこしい処理をしています。 マクロにてオブジェクトの送信で行うと、 マクロの記述内でアドレスを書きこむかあるいはブランクにしておき、送信時に送り先を入力するかしか手がないのでしょうか? 該当する営業にその人に関わるデータのみ送りたいので 営業全員におくるわけもゆかないのです。 vbを使うしか手がないのでしょうか?
回答: 真剣に取り組んだわけではないので、確かな答えではありませんが、多分、できません。 マクロで使える機能のほとんどはvbaからも扱えるので、ここは一つvbaに取り組まれてはいかがでしょうか。 ちなみに、「オブジェクトの送信」と同等の機能は、 docmd.sendobject ですね。 ヘルプでdocmdの項目をごらんになれば、マクロで使えるほとんどの機能が、docmd.xxx と記述するだけで使えることが分かると思います。 accessを思い通りに使うためには、vbaの記述は避けては通れないことですので、今後ともaccessを使っていくんであれば、さわりの部分だけでも覚えておけばいいんじゃないでしょうか。 ちょっと作ってみましょうか。(どうせヒマですし) 「宛先一覧クエリー」(フィールド名"e-mail")の全員に、「送信内容クエリー」で抽出されたデータを送りたい時は、下記のようにします。 sub sendmail() dim atesakirst as recordset dim atesakistr as string dim mailaddress as string on error goto handleerr '宛先の一覧を、コンマ区切りで生成する '宛先の一覧を取得 set atesakirst = currentdb.openrecordset("宛先一覧クエリー") do until atesakirst.eof mailaddress = nz(atesakirst![e-mail], "") if mailaddress <> "" then 'コンマ区切で、文字列を生成 atesakistr = atesakistr & "," & mailaddress end if atesakirst.movenext loop '先頭のコンマを削除 if left$(atesakistr, 1) = "," then atesakistr = right(atesakistr, len(atesakistr) - 1) end if 'メッセージの送信 docmd.sendobject acsendquery, "送信内容クエリー", acformatxls, , , atesakistr, "題名", "メッセージ" '終了 exithere: exit sub 'エラー処理 handleerr: msgbox "エラー発生!!" & vbnewline & err.description resume exithere end sub 5分で作って5分でバグ取りしただけのものなんで、「ちゃんと使える」かどうかは疑問ですが、まぁ、参考程度にはなると思います。 (ちなみに著作権うんぬんは主張しません。勝手に使ってくださって結構です。)