Microsoft Access Club Access超初心者対象Forum Access初・中級者対象Forum Access VBA Tips Forum DAO、ADO、SQL Forum

     

リストへもどる

投稿記事の一括表示

タイトル顧客一覧フォームで選択した顧客のメールアドレス宛に定型のメールを送信したい
記事No82995
投稿日: 2016/10/13(Thu) 15:24
投稿者あいりん
解決済: ON
OS:Windows8
Access Version:2013

初めて質問させていただきます。
アクセス初心者です。
会社からの命令で顧客管理データベースをつくっています。
下記のようなことがしたいと思い、いろいろ調べてみたのですがどうしても方法がわかりませんので、こちらに聞いてみることにしました。
どうかご教授ください。

【実現したいこと概要】
顧客一覧フォームで選択した顧客のメールアドレス宛に定型のメールを送信したい。

【詳細・データの状況】
・定型メールには選択した顧客の名前や社名が自動で入るようにしたい。
・定型メールは3パターンあり、コンボボックス等で選択できるようにしたい。
・テーブルは、会社番号・会社名が入ったテーブル1と会社番号・個人名・メールアドレスが入ったテーブル2があり、テーブル1とテーブル2は会社番号で紐ついている。
・アクセス2013、メーラーはアウトルック2016を使用。
・メール送信までいかなくても、顧客の名前が自動で入った定型文を表示させてコピーできるようにするだけでもいい。


定型文をテーブルで3パターンつくって選択できるようにしてみましたが、そうすると当たり前ですが顧客の宛名や会社名を自動で入れることができません。。いい方法はないでしょうか。。


このようなことがアクセスで実現可能かどうなのかも含めて教えていただければ幸いです。
どうぞよろしくお願いいたします。

タイトルRe: 顧客一覧フォームで選択した顧客のメールアドレス宛に定型のメールを送信したい
記事No82996
投稿日: 2016/10/13(Thu) 21:34
投稿者hatena
解決済: ON
> 定型文をテーブルで3パターンつくって選択できるようにしてみましたが、そうすると当たり前ですが顧客の宛名や会社名を自動で入れることができません。。いい方法はないでしょうか。。

定型文は下記のように入力しておきます。


【会社名】 【氏名】様
いつも大変お世話になっております。
株式会社山田商事、【部署名】の【担当者名】でございます。
・・・・・

送付する文面を作成するコード例


Dim stHonbun As String

stHonbun = Me.コンボボックス.Column(1)

stHoubun = Replace(stHoubun, "【会社名】", Me.会社名)
stHoubun = Replace(stHoubun, "【氏名】", Me.氏名)
stHoubun = Replace(stHoubun, "【部署名】", Me.部署名)
stHoubun = Replace(stHoubun, "【担当者名】", Me.担当者名)

タイトルRe^2: 顧客一覧フォームで選択した顧客のメールアドレス宛に定型のメールを送信したい
記事No82997
投稿日: 2016/10/16(Sun) 15:20
投稿者あいりん
解決済: ON
hatena様

ご返信誠にありがとうございました。
テーブルの定型文を置き換える方法があるということはわかったのですが、
大変お恥ずかしく情けないことですが、教えていただいたコードをどこでどのように使えばいいのかわかりません。


次のように使いたい場合はどうすればいいのでしょうか。

--------------------------------------------------------------------------
[フォーム1](表形式)


 顧客ID | 社名 | 役職名 | 氏名 | メールアドレス | 【メールボタン】
  .
  .
  .
--------------------------------------------------------------------------


【メールボタン】を押すと、該当の顧客個人の単票フォーム2が開く。



--------------------------------------------------------------------------
[フォーム2](単票フォーム)

 顧客ID
 社名
 役職名
 氏名
 メールアドレス


  [定型文のサブフォーム](単票フォーム)

  定型文ID テキストボックス
  件名 コンボボックス
  本文 テキストボックス(コントロールソース =[Forms]![フォーム2]![定型文のサブフォーム]![件名].[Column](2))
-----------------------------------------------------------------------------

定型文テーブル

 定型文ID
 件名
 本文




コンボボックスで使用したい定型文の件名を選び、
本文のところに、該当の定型文が表示されるようにしました。

[定型文のサブフォーム]件名のプロパティに変更後処理として、下記のように入れてみましたがうまくいきません。



Private Sub 件名_AfterUpdate()

Dim stHonbun As String

stHonbun = Me.件名.Column(2)

stHoubun = Replace(stHoubun, "【社名】", Forms!フォーム2.社名)
stHoubun = Replace(stHoubun, "【氏名】", Forms!フォーム2.氏名)

End Sub


何か根本的に間違っているような気もしますが、一体どうすればいいのかわかりません。
大変お手数をおかけして申し訳ないのですが、ご教授いただけないでしょうか。

タイトルRe^3: 顧客一覧フォームで選択した顧客のメールアドレス宛に定型のメールを送信したい
記事No82999
投稿日: 2016/10/17(Mon) 12:40
投稿者hatena
解決済: ON
変換後の定型文をユーザーが編集することがないなら、
関数にしてしまうといいですね。

標準モジュールに下記の関数を作成します。


Public Function ReplaceTeikeibun(定型文, 社名, 氏名) As String

    If IsNull(定型文) Then Exit Function

    ReplaceTeikeibun = 定型文

    ReplaceTeikeibun = Replace(ReplaceTeikeibun, "【社名】", Nz(社名))
    ReplaceTeikeibun = Replace(ReplaceTeikeibun, "【氏名】", Nz(氏名))


End Function


[定型文のサブフォーム]の[本文]テキストボックスのコントロールソースを下記のように設定します。

=ReplaceTeikeibun([件名].[Column](2), [Parent].[社名], [Parent].[氏名])


こうしておけばこの関数は他のフォームやレポートでも同様に使用できます。

タイトルRe^4: 顧客一覧フォームで選択した顧客のメールアドレス宛に定型のメールを送信したい
記事No83002
投稿日: 2016/10/17(Mon) 21:36
投稿者あいりん
解決済: ON
hatena 様

お返事ありがとうございました。

書かれている通りにコードを入れたら、できました!!
思わず「すごい!!!!」と叫んでしまいました。

本当に本当にありがとうございました。

タイトルRe^5: 顧客一覧フォームで選択した顧客のメールアドレス宛に定型のメールを送信したい
記事No83010
投稿日: 2016/10/20(Thu) 16:41
投稿者あいりん
解決済: ON
申し訳ありません。。
一度解決したと思ったのですが、問題が浮上したので再度質問をさせていただきます。

[定型文のサブフォーム]から件名をコンボボックスで呼び出すと、テーブルの件名がいちいち書き換わってしまうことに気がつきました。
そこで、下記のように変更しました。

--------------------------------------------------------------------------
[フォーム2](単票フォーム)

 顧客ID
 社名
 役職名
 氏名
 メールアドレス


 コンボボックス1(非連結・定型文テーブルから件名を選択)
 テキストボックス2(非連結)←ここに本文を呼び出し、本文中の【社名】【氏名】をフォーム2の社名・氏名と置き換えたい


-----------------------------------------------------------------------------

定型文テーブル

 定型文ID
 件名
 本文



そして、教えていただいたコードを下記のように書き換えましたが、うまくいきません。


標準モジュール

Public Function ReplaceTeikeibun(定型文, 社名, 氏名) As String

If IsNull(定型文) Then Exit Function

ReplaceTeikeibun = 定型文

ReplaceTeikeibun = Replace(ReplaceTeikeibun, "【社名】", Nz(社名))
ReplaceTeikeibun = Replace(ReplaceTeikeibun, "【氏名】", Nz(氏名))


End Function

テキストボックス2コントロールソース

=ReplaceTeikeibun([コンボボックス1].[Column](2), [Parent].[社名], [Parent].[氏名])



他にどこを変更すればいいのでしょうか。
応用力がなく申し訳ありません。。
ご指導よろしくお願いいたします。

タイトルRe^6: 顧客一覧フォームで選択した顧客のメールアドレス宛に定型のメールを送信したい
記事No83012
投稿日: 2016/10/21(Fri) 08:48
投稿者hatena
解決済: ON
今回のVBAは、その件とは関係ないです。

件名のコンボボックスの設定の問題です。

テーブルの件名が書き換わるのは、コンボボックスとテーブルが連結しているからです。
非連結にすればいいでしょう。
具体的にはコントロールソースを空白にします。

タイトルRe^7: 顧客一覧フォームで選択した顧客のメールアドレス宛に定型のメールを送信したい
記事No83015
投稿日: 2016/10/21(Fri) 16:28
投稿者あいりん
解決済: ON
hatena様

いつもご返信ありがとうございます。
サブフォームでも非連結にしたらできました!!
ありがとうございました。

ただ、今度は本文の文字数が多くなると、フォームには途中までしか表示されないという問題が起こりました。
(本文のデータ型は「長いテキスト」に設定しています)

試しに置き換えはおいておいて、

=[件名].[Column](2)と入れると途中までしか表示されず、
=DLookUp("本文","定型文","件名='" & [件名] & "'")と入れると全文表示されました。

そこで、
DLookUp("本文","定型文","件名='" & [件名] & "'")&ReplaceTeikeibun([Parent].[社名], [Parent].[氏名])
といれてみましたが、やはり置き換えはできませんでした。。

これを解決する方法はありますでしょうか。。
何度もしつこくて申し訳ありませんが、どうぞよろしくお願いいたします。

タイトルRe^8: 顧客一覧フォームで選択した顧客のメールアドレス宛に定型のメールを送信したい
記事No83016
投稿日: 2016/10/21(Fri) 16:33
投稿者hatena
解決済: ON
> そこで、
> DLookUp("本文","定型文","件名='" & [件名] & "'")&ReplaceTeikeibun([Parent].[社名], [Parent].[氏名])
> といれてみましたが、やはり置き換えはできませんでした。。

下記でどうですか。

ReplaceTeikeibun(DLookUp("本文","定型文","件名='" & [件名] & "'"), [Parent].[社名], [Parent].[氏名])

タイトルRe^9: 顧客一覧フォームで選択した顧客のメールアドレス宛に定型のメールを送信したい
記事No83017
投稿日: 2016/10/24(Mon) 16:24
投稿者あいりん
解決済: ON
できました!!ありがとうございました。

今回の一連の質問はこちらで教えていただけなかったら一生わからないままだったと思います。
本当にありがとうございました。
アクセスは本当に難しいですね。。
でも、スラスラできるようになるようがんばります。
今後ともどうぞよろしくお願いいたします。

- 以下のフォームから自分の投稿記事を修正・削除することができます -
処理 記事No パスワード

ページの先頭へ 前ページへ戻る