-PR-
締切り
済み

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

  • すぐに回答を!
  • 質問No.5971
  • 閲覧数374
  • ありがとう数4
  • 気になる数0
  • 回答数4
  • コメント数0

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

回答 (全4件)

  • 回答No.1
レベル13

ベストアンサー率 46% (643/1383)

真剣に取り組んだわけではないので、確かな答えではありませんが、多分、できません。 マクロで使える機能のほとんどはVBAからも扱えるので、ここは一つVBAに取り組まれてはいかがでしょうか。 ちなみに、「オブジェクトの送信」と同等の機能は、 DoCmd.SendObject ですね。 ヘルプでDoCmdの項目をごらんになれば、マクロで使えるほとんどの機能が、DoCmd.XXX と記述するだけ ...続きを読む
真剣に取り組んだわけではないので、確かな答えではありませんが、多分、できません。

マクロで使える機能のほとんどは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

このシステム初めて使うのですが、
どうやって、回答頂いた方に点数を入れるのですか?
投稿日時 - 2000-08-04 22:47:16
お礼コメント
noname#1745

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

投稿日時 - 0000-00-00 00:00:00


  • 回答No.2

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

点数の入れ方は、至って簡単で、質問者の方が、
「回答する・回答を締め切る」というリンクを
クリックすれば、点数を入れられるページに
いくので、そこで、選択すればOKです。

ちなみに、そこのところは、ヘルプに書かれて
いるので、参考にしてください。
ではでは☆
  • 回答No.3
レベル13

ベストアンサー率 46% (643/1383)

>VBA(VB)を基礎から分かりやすく解説しているような お勧めの書籍には何がありますか。 私がVBを習得したのがもう5~6年前になるので、今となっては、どれが良かったのか、よく覚えていません。(お役に立てなくて申し訳無いです) ただ、VB等の言語を学習するときには、同じような内容の本が2~3冊程度は必要だと思います。 同じ事柄についてかかれている部分でも、本によって考え方や ...続きを読む
>VBA(VB)を基礎から分かりやすく解説しているような
お勧めの書籍には何がありますか。

私がVBを習得したのがもう5~6年前になるので、今となっては、どれが良かったのか、よく覚えていません。(お役に立てなくて申し訳無いです)

ただ、VB等の言語を学習するときには、同じような内容の本が2~3冊程度は必要だと思います。

同じ事柄についてかかれている部分でも、本によって考え方やとらえ方が違ってたりしますし、何よりもサンプルプログラムの量が増えるのがいいです。

同じ動作をするプログラムを見比べながら学習すると、一つだけの場合に比べ、かなり学習効率が高くなるんですよね。

>といってすべてシステム会社にお願いする予算もない
というありさまです

今回の場合のように、機能1個だけ、という場合には、それほど料金はかからないと思いますよ。
請け負う会社にもよりますが、数千円から数万円程度で、お使いのシステムに機能を組み込んでくれると思います。

タウンページなどで、お近くのソフトウェア開発会社を検索し、問い合わせてみられたらいかがでしょうか。

それ以外の方法としては、Accessを教えてくれるパソコン教室に入学して、「授業」と称して先生に無理やり作ってもらうってのも有りなんじゃないでしょうか(笑)。

↓インターネット上の「タウンページ」です。
  • 回答No.4
レベル5

ベストアンサー率 33% (1/3)

・・・。VBA出来ないとムズイもしくは、遅いかも。 VBAで書けば? 今やってるオブジェクトの送信は下記のVBAを使ってます。 DoCmd.SendObject acSendTable, "書き出しテーブル名", acFormatXLS,TO(宛先), CC, BCC, "件名", "本文" でっ問題の任意のアドレスってヤツだが一 ...続きを読む
・・・。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 & "'", "", "", "件名", "本文"

'ソースが汚いのは素人だから許せ!
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ