• 締切済み

ACCESSで自動でメールをおくる時に任意のアドレスに送りたい

工場にてACCESS97を使い、営業からの発注に対して納期の回答やもろもろのデータをメールにて任意のアドレスに送りたいのですが、当方VBAはまったく使えず、クエリーの使い倒しとマクロにて、結構ややこしい処理をしています。 マクロにてオブジェクトの送信で行うと、 マクロの記述内でアドレスを書きこむかあるいはブランクにしておき、送信時に送り先を入力するかしか手がないのでしょうか? 該当する営業にその人に関わるデータのみ送りたいので 営業全員におくるわけもゆかないのです。 VBを使うしか手がないのでしょうか?

noname#1745
noname#1745

みんなの回答

  • popokun
  • ベストアンサー率33% (1/3)
回答No.4

・・・。VBA出来ないとムズイもしくは、遅いかも。 VBAで書けば? 今やってるオブジェクトの送信は下記のVBAを使ってます。 DoCmd.SendObject acSendTable, "書き出しテーブル名", acFormatXLS,TO(宛先), CC, BCC, "件名", "本文" でっ問題の任意のアドレスってヤツだが一番簡単な方法で、、、 テーブル→新規作成→デザイン→フィールド名(Mail:テキスト型) (送信:Yes/NO型)を作成して適当に2~3件入力しといてくれ! テーブル保存名は、[メアドマスタ]で保存。 ※その後、サブフォームを作って開けるようにすればなお可。 フォーム→新規作成→デザイン→コマンドボタン追加 →コマンド右クリック→プロパティ→クリック時→... (3点リーダー)→【↓をコピペ】でボタン押してみ! Dim dbo As DAO.Database 'DAO使用時のお決り文句 Dim rst As DAO.Recordset 'DAO使用時のお決り文句 Dim sSqlStr As String 'SQL文 Dim sTO As String 'sTO = "宛先のアドレス入れ。" Dim sCC As String 'sCC = "カーボン・コピー" Dim sBCC As String 'sBCC = "目隠しのCCだっけ?" '「メアドマスタ」テーブルのチェックが付いている物だけを抽出。 sSqlStr = "SELECT mail FROM メアドマスタ WHERE (送信=True)" Set dbo = CurrentDb Set rst = dbo.OpenRecordset(sSqlStr) Do Until rst.EOF If sTO = "" Then sTO = Trim(rst.Fields("mail")) Else sTO = sTO & ";" & Trim(rst.Fields("mail")) End If rst.MoveNext Loop rst.Close dbo.Close '↑【sTO】変数の中に【my@my.com;you@you.com;who@who.com】って '感じに文字を当てはめる作業をしている。 'ちなみにCCやBCCもチョットソース変えれば使えるよん。sTO → sCCに変えたりとか。 DoCmd.SendObject acSendTable, "メアドマスタ", acFormatXLS, "'" & sTO & "'", "", "", "件名", "本文" 'ソースが汚いのは素人だから許せ!

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.3

>VBA(VB)を基礎から分かりやすく解説しているような お勧めの書籍には何がありますか。 私がVBを習得したのがもう5~6年前になるので、今となっては、どれが良かったのか、よく覚えていません。(お役に立てなくて申し訳無いです) ただ、VB等の言語を学習するときには、同じような内容の本が2~3冊程度は必要だと思います。 同じ事柄についてかかれている部分でも、本によって考え方やとらえ方が違ってたりしますし、何よりもサンプルプログラムの量が増えるのがいいです。 同じ動作をするプログラムを見比べながら学習すると、一つだけの場合に比べ、かなり学習効率が高くなるんですよね。 >といってすべてシステム会社にお願いする予算もない というありさまです 今回の場合のように、機能1個だけ、という場合には、それほど料金はかからないと思いますよ。 請け負う会社にもよりますが、数千円から数万円程度で、お使いのシステムに機能を組み込んでくれると思います。 タウンページなどで、お近くのソフトウェア開発会社を検索し、問い合わせてみられたらいかがでしょうか。 それ以外の方法としては、Accessを教えてくれるパソコン教室に入学して、「授業」と称して先生に無理やり作ってもらうってのも有りなんじゃないでしょうか(笑)。 ↓インターネット上の「タウンページ」です。

参考URL:
http://itp.ne.jp/servlet/jp.ne.itp.sear.SCMSVTop
noname#9414
noname#9414
回答No.2

回答ではありません。 点数の入れ方は、至って簡単で、質問者の方が、 「回答する・回答を締め切る」というリンクを クリックすれば、点数を入れられるページに いくので、そこで、選択すればOKです。 ちなみに、そこのところは、ヘルプに書かれて いるので、参考にしてください。 ではでは☆

参考URL:
http://www.okweb.ne.jp/help.php3
  • ARC
  • ベストアンサー率46% (643/1383)
回答No.1

真剣に取り組んだわけではないので、確かな答えではありませんが、多分、できません。 マクロで使える機能のほとんどは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分でバグ取りしただけのものなんで、「ちゃんと使える」かどうかは疑問ですが、まぁ、参考程度にはなると思います。 (ちなみに著作権うんぬんは主張しません。勝手に使ってくださって結構です。)

noname#1745
質問者

お礼

早速のご回答有難うございます。 お書き頂いたVBAの記述なんとなく、ほんの少し わかるような気がします。 当方、中堅製造メーカーで現場のあわただしさの中で 夜まではほとんど静かにプログラムをかじれるような環境ではなく、おまけに年齢的に頭もなかなか回らなくなりVBA(VB)にはずっと踏み込む勇気がない状態です。 かといってすべてシステム会社にお願いする予算もない というありさまです。 VBA(VB)を基礎から分かりやすく解説しているような お勧めの書籍には何がありますか。 本屋には余りにも多すぎて選択が困難です。 今から約20年前ですけどBASIC、FORTRANは学生時代に かじりました。 しかし、その後はまったく空白です。 脳みそもかなり腐ってきていると感じていますが、、 そういう人間向けの書籍がありましたら宜しくお願いします。

noname#1745
質問者

補足

このシステム初めて使うのですが、 どうやって、回答頂いた方に点数を入れるのですか?

関連するQ&A

  • Accessのマクロを使って複数人にメールを送る方法を教えてください。

    Accessのマクロを使って複数人にメールを送る方法を教えてください。 Access2003を使用しています。 いつも、マクロの「オブジェクトの送信」を流用して複数人にメールを送っています。 ・「オブジェクトの送信」だけど、「オブジェクトの種類」や「オブジェクト名」はブランク ・「出力形式」もブランク ・「メッセージ」のところに、メール本文を書く ・「宛先」に送る人間の名前を入れる この方法で問題なくOutlookが起動しメールが配信できたのですが、今回配信したい本文はかなり長文で「メッセージ」部分に入りきりません(文字数オーバーで後半が切れる)。 そこで、 ・「オブジェクトの送信」だけど、「オブジェクトの種類」や「オブジェクト名」はブランク ・「出力形式」もブランク ・「メッセージ」も「宛先」も「件名」もブランク ・「テンプレート ファイル」にテンプレート格納先のフォルダとファイル名のパスを記入 にしたのですが、テンプレートとして認識してくれませんでした。 (何もかもブランクのOutlookが一枚立ち上がるのみ・・・) どこがいけなかったのでしょう? というか、そもそもマクロの「オブジェクトの送信」では、テンプレートを使用したメール配信は無理、VBAを使わないとダメなのでしょうか? 詳しい方教えてください。よろしくおねがいします。 (VBAしか使えない場合、書き方も教えていただけると助かります)

  • アクセス2000:マクロで「オブジェクトの送信」のアドレス変更

    マクロ機能の「オブジェクトの送信」では送信先が一つだけしか入れられません。 選んだオブジェクトがフォームで1レコードであるときに、そのレコードに入力しているメールアドレスを自動的に送信先に指定するにはVBAを使うしかないのでしょうか?

  • VB6とVBAのマクロのアクセス方法を教えてください。

    VB6とVBAのマクロのアクセス方法を教えてください。 用途は、 (1)VB6からVBAマクロを起動する。 (2)VBAマクロの途中経過をVB6のオブジェクトへ通知する。 VBAはPC外部接続機器をコントロールします。 VB6での実装サンプルが用意されていない為、VBAを使用しております。) (3)VB6は通知結果を、拾って別ルーチンの処理を実行する。 (1)では、下記の様な方法にてマクロ実行を考えていたのですが、 マクロが終了するまで、次コードへ移らない為、 シェル関数の様な形でマクロをキックしたい。 xlApp.run ("VBA_TEST(" & Chr(&H22) & strarg & Chr(&H22) & " )") (2)では、VBAとVB6と平行に実行したい為、フラグをやり取りするのに、 VB6のオブジェクトを使用したい。

  • ACCESS2000 クエリをテーブル化するマクロ(VBA)おしえてください

    こんにちは。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1801262 の質問者です。コレの続きを教えてください。 まとめますと、クロス集計クエリや、ユニオンクエリをそのまま扱うと、データや計算式がからまってエラーになったり、処理が遅かったりするので、テーブル化してからいじりたいのです。 マクロは データベース変換 変換の種類…インポート データベースの種類…MS ACCESS データベース名…L:\パス\パス\ファイル名.MDB オブジェクトの種類…クエリ オブジェクト名…クエリ名 変換先名…テーブル名 テーブル構造のみ変換…いいえ としてみましたが、クエリとしてインポートされてしまいます。 いちどCSVか何かでエクスポートしてから、テキスト変換するという手もありますが、もっとスマートな方法がありましたら教えてください。 VBA も勉強中なので、VBAでお答えいただいてもけっこうです。 よろしくお願いします。

  • アクセスのメニュー(続編・・)

    先程下記の質問をしてマクロでの実行方法をご教授いただいた者です。解決してしまったのですが、参考までに、VBAでの実行方法もむずかしくないようなら教えていただけないでしょうか・・・ (^^; ----ここから先程の質問---- access2000ですが、書籍についてきたものをちょっとだけ手を加えたいのです。TOPメニュー(フォーム)にボタンを追加して、それをクリックしたときに特定の「更新クエリ」を実行する簡単な設定方法を教えていただけないでしょうか。このクエリはオブジェクト/クエリ/のところに最初から作成済みのクエリです。 #accessの知識はほとんどありません。 #VBAもいじったことがありません。 #TOPメニューへのボタンの追加はできます。

  • アクセスのマクロ解析ツール?

    素人ながら、アクセス97で発注・仕入処理を クエリーを使い倒し、マクロを用いて、 どうにかこうにか、システムを作って、運用しています。 ところが、クエリーの数も200個以上になり、 マクロも小さな処理も含めて100は超えています。 こうなってくると、どこでどのマクロを使っていたのか、 すっかり忘れてしまうこともあり、変更の都度、あちこち をたどって行かねばなりません。 VBA(VB)を使えれば良いのですが、今更一から勉強するような時間の余裕すらありませんので、 かといってシステム屋さんに頼もうにも、 業務を全く知らないので、その打ち合わせをする時間で ある程度のもななら自分らで作れるので、 苦労して作っています。 そこで、教えていただきたいのは、マクロまでの処理で 作る場合、あとあとのメンテナンスの時、このマクロは どこで使われているのか、逆引きできたり、どのフォームから実行されているのか、などわかりやすく解析できる ツールのようなものは有りませんでしょうか? ドキュメントツールとなると、たいそうなものでしょうか? アクセスの機能にある、データベースの解析など やたら、紙面が増えて使いづらいことこの上なしなので 何か良いツール(安価かフリーなもの)を教えてください。

  • AccessのクエリをEXCELのVBAを使用して置き換える方法をご教

    AccessのクエリをEXCELのVBAを使用して置き換える方法をご教示願います。 AccessデータはE:¥生産管理¥生産.mdbで現状データ内 受注残とゆうクエリ (受注NO 品番 品名 納期 受注残で並んでいます)を Office Links→Excelの出力処理にてExcelデータに変換しこのデータを 元データにし品番を縦ならび、納期を横並びにしてどの日付に何個受注が残っているかが わかるようにVBAで処理するようにしております。 横並びにする理由は資材発注などで結構先の受注を確認して自動計算するためです。 上記のように自動化されていない Office Links→Excelの出力処理をVBAでやる方法が 検索方法が悪いせいかわかりません。 Office Links→Excelの出力処理もしくは クエリから直接データを引き込む方法をご教授お願いいたします。

  • VBA未使用でシステム開発は可能?(Access)

    (1)一般的な給与・勤怠管理システムを 作るのにVBAを使わずにシステムを 作り上げるのは可能でしょうか? (使うのはクエリー、マクロなど。) (2)難易度はプログラミングを専業にしない人でも 作れるレベルでしょうか? (3)私はVBプログラマなのでVBAを駆使した方が簡単だと思うのですがどうでしょうか?

  • アクセスのメニュー

    access2000ですが、書籍についてきたものをちょっとだけ手を加えたいのです。TOPメニュー(フォーム)にボタンを追加して、それをクリックしたときに特定の「更新クエリ」を実行する簡単な設定方法を教えていただけないでしょうか。このクエリはオブジェクト/クエリ/のところに最初から作成済みのクエリです。 #accessの知識はほとんどありません。 #VBAもいじったことがありません。 #TOPメニューへのボタンの追加はできます。

  • アクセスから差し込み文書のメール送信の自動化

    現在アクセスのデータをワードへの差し込み文書からメール送信しています。 この一連の操作をクリック1回で行う設定は可能でしょうか? 現在の手順は以下のとおりです。 (1) ワードで作成した差し込み文書を立ち上げる。(差し込み元のアクセスのファイルも同時に起動) (2) 差し込み文書からメール送信。 (3) 送信を完了したら、アクセスのテーブルにチェックを入れる。 マクロとかVBAを利用してできるものでしょうか?

専門家に質問してみよう