• ベストアンサー

Accessについて

宜しくお願い致します。 社員マスターテーブル 社員ID   テキスト型 氏名   テキスト型 しめい   テキスト型 部署名   テキスト型 メールアドレス テキスト型 クエリで社員マスターの前フィールドを使って人事部の人だけ抽出します。 抽出された人のメールアドレスをメールソフトのBCCにアドレスが入るように設定するにはどうしたらよいでしょうか? よろしくご指導ください。

この投稿のマルチメディアは削除されているためご覧いただけません。

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

  • ベストアンサー
  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.4

#3です > rs.Source = "SELECT * FROM 社員マスター WHERE 部署名 = '人事部';" > ★ rs.Open , CurrentProject.Connection, adOpenForwardOnly, adLockReadOnly 1行目は、「社員マスター」から「部署名」が人事部であるレコードを得るものです。 テーブル名、フィールド名が正しいか確認してみてください。 (テーブル名が違うのでしょうか?) 以下記述にも「社員マスター」「部署名」が出てきますが、それぞれ確認してください。 > 人事部から経理部などに変わった時にも使えるのでしょうか? 部署の選択をコンボボックスで行うとします。(コンボボックス名を「cbx1」と仮定) コンボボックスは非連結です。 そのコンボボックスのプロパティ「値集合ソース」を SELECT DISTINCT 部署名 FROM 社員マスター; とします。 これにより「部署名」に登録されているものを選択できるようになります。 この処理を付加した一連の処理例は以下 Private Sub コマンド12_Click()   Dim rs As New ADODB.Recordset   Dim toAddress As String, ccAddress As String, bccAddress As String   Dim sSubject As String, sMes As String   Dim sTmp As String   toAddress = "aaaa@bbbb.cccc"   ccAddress = ""   bccAddress = ""   sSubject = "業務連絡(明日の予定)"   sMes = "お疲れ様です%0d%0a明日はXXXさん休暇です%0d%0a頑張っていきましょう"   If (Not IsNull(Me.cbx1)) Then     rs.Source = "SELECT * FROM 社員マスター WHERE 部署名 = '" & Me.cbx1 & "';"     rs.Open , CurrentProject.Connection, adOpenForwardOnly, adLockReadOnly     While (Not rs.EOF)       bccAddress = bccAddress & ";" & rs("メールアドレス")       rs.MoveNext     Wend     rs.Close     If (Len(bccAddress) > 0) Then bccAddress = Mid(bccAddress, 2)   End If   sTmp = ""   If (Len(ccAddress) > 0) Then     sTmp = sTmp & "&Cc=" & ccAddress   End If   If (Len(bccAddress) > 0) Then     sTmp = sTmp & "&Bcc=" & bccAddress   End If   If (Len(sSubject) > 0) Then     sTmp = sTmp & "&Subject=" & sSubject   End If   If (Len(sMes) > 0) Then     sTmp = sTmp & "&Body=" & Replace(sMes, Chr(&H20), "%20", , , vbBinaryCompare)   End If   If (Len(sTmp) > 0) Then Mid(sTmp, 1, 1) = "?"   MsgBox "Mailto:" & toAddress & sTmp '  CreateObject("WScript.Shell").Run "Mailto:" & toAddress & sTmp End Sub ※ 文字列が作られているか確認のため最後で MsgBox で表示しています。 大丈夫そうなら、MsgBox をコメントに、次の行を有効にしてください。 ※ コンボボックスで選択されていない時には、BCCは作りません。 ※ toAddress には、自分とか、代表のアドレスを設定してください。

yukirin5_2006
質問者

お礼

\(^o^)/きゃぁ~ありがとうございます。 出来ました。(*^_^*)嬉しいぃ~~~ 本当にありがとうございました。_(_^_)_ 沢山のお時間を拝借して申し訳ございませんでした。 感謝の気持ちでいっぱいです。 社員マスターの文字をコピーして張り付けたら出来まいした!!

その他の回答 (3)

  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.3

#2です。 oWS.Run "Mailto:宛先?Cc=CC先&Bcc=BCC先&Subject=件名&Body=本文" を基本に toAddress = "aaaa@bbbb.cccc" ccAddress = "bbbb@cccc.dddd" bccAddress = "cc@dd.ee;dd@ee.ff;ee@ff.gg" sSubject = "業務連絡(明日の予定)" sMes ="お疲れ様です%0d%0a明日はXXXさん休暇です%0d%0a頑張っていきましょう" と設定していた場合、 oWS.Run "Mailto:" & toAddress _      & "?Cc=" & ccAddress _      & "&Bcc=" & bccAddress _      & "&Subject=" & sSubject _      & "&Body=" & Replace(sMes, Chr(&H20), "%20", , , vbBinaryCompare) の様になります。 sMes 中 %0d%0a は、改行になります。 Replace(sMes, Chr(&H20), "%20", , , vbBinaryCompare) は、 本文中に半角スペースがあるとそこで切れてしまうので、切れないようにするため。 Cc は要らないので指定から外す時には oWS.Run "Mailto:" & toAddress _      & "?Bcc=" & bccAddress _      & "&Subject=" & sSubject _      & "&Body=" & Replace(sMes, Chr(&H20), "%20", , , vbBinaryCompare) になると思いますが、 ? の位置がずれます(今回 ?Bcc) この書き方では、2行目先頭が ? になります。 #1での sBCC 生成では、頭に & を付けているので、 指定の仕方によっては、文字列生成範囲も変わってきます。 > デバッグは出たのですが 状況がわかりません。

yukirin5_2006
質問者

補足

30246kiku様 朝早くから回答を頂き本当に感謝しております。_(_^_)_ 私の知識不足で何度もすみません。_(_^_)_ プログラムの意味が良くわからないのでそのままコピーをして 使わせていただきました。 実行時エラー’-2147217904(80040e10)'; 1つ以上の必要なパラメータの値が設定されていません。 と表示されました。 コードはこのようになっています。 ★マークの所にデバックの黄色い色がつきました。 そして、この記述はクエリの条件を人事部から経理部などに変わった時にも使えるのでしょうか? 大変恐縮ですが、ご教授頂けたら幸いです。 宜しくお願い致します。 Private Sub コマンド12_Click() Dim oWS As Object Set oWS = CreateObject("WScript.Shell") oWS.Run "Mailto:宛先?Cc=CC先&Bcc=BCC先&Subject=件名&Body=本文" '上記の &Bcc=BCC先 部分を作成する一例) Dim rs As New ADODB.Recordset Dim sBCC As String sBCC = "" rs.Source = "SELECT * FROM 社員マスター WHERE 部署名 = '人事部';" ★ rs.Open , CurrentProject.Connection, adOpenForwardOnly, adLockReadOnly While (Not rs.EOF) sBCC = sBCC & ";" & rs("メールアドレス") rs.MoveNext Wend rs.Close If (Len(sBCC) > 0) Then sBCC = "&Bcc=" & Mid(sBCC, 2) 'ここで出来上がった sBCC を以下の様に組み込めばできると思います。 oWS.Run "Mailto:宛先?Cc=CC先" & sBCC & "&Subject=件名&Body=本文" End Sub

  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.2

#1です > WS.Run ・・・・ は oWS.Run ・・・・ の間違いでした

yukirin5_2006
質問者

補足

早々の回答ありがとうございます。_(_^_)_ 早速やってみました。(*^_^*) その結果、クエリで必要なデータを抽出し「Qメール発送」を作成 そして「Qメール発送」をもとにフォームを作成しボタンを作成しました。 クリックした時にイベントを設定をコードビルダに教えて頂いたコードを設定しました。 その結果、デバッグは出たのですがメールが起動され本文の所に本文と言う文字が表示され、 宛先には宛先という文字が表示されました。 どのようにしたらメールアドレスが表示されるのでしょうか? お手数ですがどうぞ後教授お願い致します。_(_^_)_

  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.1

以下がメール起動処理だとします。 Dim oWS As Object Set oWS = CreateObject("WScript.Shell") WS.Run "Mailto:宛先?Cc=CC先&Bcc=BCC先&Subject=件名&Body=本文" 上記の &Bcc=BCC先 部分を作成する一例)   Dim rs As New ADODB.Recordset   Dim sBCC As String   sBCC = ""   rs.Source = "SELECT * FROM 社員マスター WHERE 部署名 = '人事部';"   rs.Open , CurrentProject.Connection, adOpenForwardOnly, adLockReadOnly   While (Not rs.EOF)     sBCC = sBCC & ";" & rs("メールアドレス")     rs.MoveNext   Wend   rs.Close   If (Len(sBCC) > 0) Then sBCC = "&Bcc=" & Mid(sBCC, 2) ここで出来上がった sBCC を以下の様に組み込めばできると思います。 WS.Run "Mailto:宛先?Cc=CC先" & sBCC & "&Subject=件名&Body=本文"

関連するQ&A

  • Access もっと簡単な抽出方法はありますか?

    お世話になります。 Access2010 抽出方法についてご教示下さい。下記のテーブルがあります。 <社員テーブル> 社員番号 氏名   性別  血液型 00100  山田太郎  男性  A 00200  鈴木一郎  男性  A 00300  田中次郎  男性  B 00400  鈴木花子  女性  O <人事テーブル> 社員番号 人事C   部署名C  開始日    終了日 00100   1           2000/04/01  2000/04/01 00100   2     2     2000/04/01  2005/03/31 00100   3     1     2005/04/01  2008/04/01 00100   3     3     2008/04/01 00200   1           2005/04/01  2004/04/01 00200   2     1     2005/04/01  2007/03/31 00200   3     3     2008/04/01 00300   1           2010/10/01  2010/10/01 00300   2     2     2010/10/01 00400   1           2011/04/01  2011/04/01 00400   2     1     2011/04/01  2015/03/31 00400   4           2015/03/31  2015/03/31 ※人事Cの1(入社)の登録では部署名Cは登録されず、別レコードに  登録されます。 <人事マスタ> 人事C 人事  1  入社  2  人事  3  部署移動  4  退職 <部署マスタ> 部署名C  部署名  1    営業部  2    経理部  3    総務部 最終的にフォーム上のリストボックスに下記にように表示したいところです。 社員番号 部署名 氏名   性別 血液型 00100   総務部 山田太郎 男性  A 00200   総務部 鈴木一郎 男性  A 00300   経理部 田中次郎 男性  B 00400   営業部 佐藤花子 女性  O 下記のようにやって、とりあえず抽出はできたのですが。。 もっとよい方法があればお教え頂けたらと思います。 1.人事テーブルで人事Cが2 or 3で抽出し、グループ化、かつ開始日の最大  でクエリを作成   00100 2008/04/01   00200 2008/04/01   00300 2010/10/01   00400 2011/04/01 2.1のクエリと人事テーブルを社員番号と開始日で紐づけてクエリ作成  社員番号  部署名C   開始日    00100    3     2008/04/01  00200    3     2008/04/01  00300          2010/10/01  00300    2     2010/10/01  00400          2011/04/01  00400    1     2011/04/01  このように、00300と00400については入社のレコードも抽出されて  しまうので、ここでさらに部署名CをIs Not Nullとする。  00100    3     2008/04/01  00200    3     2008/04/01  00300    2     2010/10/01  00400    1     2011/04/01 3.社員テーブルと2のクエリ、部署マスタを紐付けます。  社員テーブル---------2のクエリ---------部署マスタ       (社員番号)    (部署名C)  このクエリをリストボックスのソースとしてます。 なお、実際には1と2のクエリはひとつにまとめてます。 SELECT Q.社員番号, 人事テーブル.部署名C FROM (SELECT 人事テーブル.社員番号, Max(人事テーブル.開始日) AS 開始日の最大 FROM 人事テーブル WHERE (((人事テーブル.人事C)=2 Or (人事テーブル.人事C)=3)) GROUP BY 人事テーブル.社員番号) AS Q INNER JOIN 人事テーブル ON (Q.開始日の最大 = 人事テーブル.開始日) AND (Q.社員番号 = 人事テーブル.社員番号) WHERE (((人事テーブル.部署名C) Is Not Null)); もっとシンプルに結果を出せるのでは?ということで質問させて 頂いた次第です。 宜しくお願い致します。

  • AccessのデータをExcelの決まったフォーマットに出力するには?

    Access2002を使っています。 社員マスターテーブルがあります。 フィールドは「社員番号」「氏名」「かな」「年齢」があります。 クエリで対象になるデータを抽出し、それをExcelの決まったフォーマットに出力させたいです。 希望はフォーム上にマクロのボタンを作ってそれをクリックするとエクセルの決まったフォーマットにデータが出力されるようにしたいのです。 お手数をおかけいたしますが、よろしくご指導ください。_(_^_

  • Access2000で複数の検索項目を作りたいのですが・・・

    こんにちわ。 今、Accessで社員録を作成しているんですが、複数の検索について教えて下さい。 ■テーブル テーブル名:社員録 フィールド名:ID・検索名・氏名・所属ID・所属 ■クエリ クエリ名:社員録クエリ フィールド名:ID・検索名・氏名・所属ID・所属 検索名抽出条件:検索名フィールド: Like [Forms]![社員録 縦]![けんさく]         所属フィールド: Like [Forms]![社員録 縦]![抽出検索名] ■フォーム フォーム名:社員録フォーム:テキスト1・テキスト2・ボタン1       社員録サブフォーム:データソース:社員録クエリ テキスト1:所属を入力 テキスト2:検索名を入力 ボタン1:マクロの再クエリを実行する ■ここからが質問です■ (1)テキスト1又は、2が空白のとき社員録全体から検索かフィルタ。 (2)テキスト1・2が、入力されてる時、両条件から検索かフィルタ。 をしたいのですが、何かいい方法がありましたら教えて下さい。 説明が、長くなってしまってスミマセン。。。

  • Access2002の検索について

    社員マスターテーブル 社員ID   テキスト型 氏名   テキスト型 しめい   テキスト型 部署名   テキスト型 研修マスターテーブル 研修ID   数値型 研修名   テキスト型 受講リストテーブル 受付ID   数値型 受付日   日付時刻型 受講日   日付時刻型 社員ID   テキスト型 研修ID   数値型 研修受付クエリ 社員ID   テキスト型(受講リストテーブル) 氏名   テキスト型(社員マスターテーブル) しめい   テキスト型(社員マスターテーブル) 部署名   テキスト型(社員マスターテーブル) 受付ID   数値型  (受講リストテーブル) 受付日   日付時刻型(受講リストテーブル) 受講日   日付時刻型(受講リストテーブル) 研修ID   数値型(受講リストテーブル) 研修名   テキスト型(研修マスターテーブル) 社員が何の研修を受講したのか履歴がほしかったので「社員マスターテーブル」と「研修受付クエリ」を使ってメインサブフォームを作りました。 やりたい事は、このメインサブフォームに検索のボタンを作りたいのです。 社員IDまたは社員名または受講日のいずれかを入力するし検索ボタンをクリックするとメインサブフォームに結果を出したいのです。 マクロのフィルタ?をやってみたのですがよく意味が分からずできませんでした。 どうぞお手数ですがご教授頂けないでしょうか?

  • Access]2つのテーブルを比較してフィールドの一部が一致したデータを抽出

    2つの名簿テーブルを比較してどちらのテーブルにも含まれている個人を抽出したいと考えております。 テーブル名とフィールドは以下のとおりです。 ==================== テーブル名「名簿A」 氏名 電話番号 住所 メールアドレス ==================== テーブル名「名簿B」 姓 名 電話番号 住所 メールアドレス ==================== たとえば、この2つの名簿をメールアドレスで一致したものを抽出する場合は選択クエリのデザインビューで「名簿A」のフィールドを読み込ませ、 メールアドレスフィールドの抽出条件として Like [名簿B].[メールアドレス] を入れれば抽出ができたのですが、メールアドレスは、名簿ごとに記入されていたりしなかったりするので、名前での一致を行いたいと思っています。 ここで問題なのが、名簿Aは「氏名」で入力されているのに対し、名簿Bでは「姓」と「名」が別フィールドになっております。 そこで自分なりにやってみたのが、選択クエリのデザインビューで「氏名」のフィールドの抽出条件として Like (*[名簿B].[姓]*) を設定するものでした。 これがうまくいけば最終的には Like (*[名簿B].[姓]*) And Like (*[名簿B].[名]*) という風にして、名簿Aの「氏名」フィールドに名簿Bの「姓」も「名」も入っているものを抽出できるかな?と考えたのですが、上記のように入力すると、自動的に Like ("*[名簿B].[姓]*") となってしまい、何も抽出されなくなってしまいました。 このような方法では希望する抽出は行えないのでしょうか? お分かりのかた、よろしくお願いいたします。

  • Access2003でメールソフトへハイパーリングするには

    状況 テーブルの社員マスター ☆フィールドに社員番号(主キー)→テキスト型 氏名→テキスト型 メルアド→テキスト型 やりたい事 各社員のメールアドレスをクリックすると自動的に メールソフトが起動し宛先を明記し、できれば件名と 送信者が明記されると嬉です。 本当はフィールドのメルアドをデータ型をハイパーリンクにし 規定値の所に【mailto:】を入れアドレスを入力すると メールソフトが起動されると思うんですが、既にメルアドは 入力されているのでその設定以外で 何か良い方法はないでしょうか? ためしに、フォームを作って、プロパティのハイパーリンクを設定しても 駄目でした。 何か良い方法があったらご指導下さい。 宜しくお願い致します。

  • アクセスのクエリ作成について

    下記のようなテーブルとフィールドがあるとします。 Aテーブル  会社名 分類 都道府県 住所 HPアドレス  Bテーブル  担当者 部署 電話 メールアドレス Cテーブル  受付番号 分類 Dテーブル  受付番号 分類 ここでAテーブルの都道府県で一致するデータを抽出し、 下記のフィールドを表示するクエリを作成したいと思っています。 A 会社名 分類 都道府県 住所 HPアドレス B 担当者 部署 メールアドレス 電話 C 受付番号 D 受付番号 クエリを作成し実行しましたが、何もデータが出てきません。 全フィールド入力していないと抽出できないのでしょうか。 中にはHPアドレス等がない場合もあるのです。 すみませんが、どなたか教えて下さい。 よろしくお願いします。

  • アクセス2010の操作について

    こんばんは! アクセス2010を勉強しておりますが、さまざまの本を読んでもインターネットで検索しても、なかなか基本を理解できず又周囲にも質問できる人がいなく困っております。 以下の内容について数点の質問をさせて頂きますのでご指導をお願いいたします。 作成内容。 社員の成果を入力できるフォームを作成したく、保存したいデータは社員名、社員コード、成果です。社員名は、コンボボックスから選択を行いたい。(できれば社員名を表示すると、自動的に社員コードも表示したいのですが)以下の方法で作成したのですが、うまくできません(質問項目は下段です) ~作成の流れ~ 〇テーブルを作成・・・以下の2つのテーブルを作成し社員データを予め入力。 ・社員マスタ・・・・・・(フィールドは2つ)  「社員名」(テキスト型)  「社員コード」(テキスト型) ※主キー ・入力テーブル・・・・(フィールドは3つ)  「ID」(オートナンバー型)  「社員コード」(テキスト型)  「成果」(テキスト型) ※主キー 〇「社員マスタ」「入力テーブル」の2つのテーブルからクエリを作成。  ・社員コード同士を結合線で結ぶ(自動的に結ばれます)    (フィールド)  ID            社員名     社員コード   成果  (テーブル)   入力テーブル   社員マスタ  社員マスタ   入力テーブル 〇作成したクエリを基にフォームを作成  社員名をコンボボックスから選択できるように変更(値集合ソース→社員マスタ)  社員名をコンボボックスから選択し、社員コードを入力。成果を入力しようとすると。  入力できません。 (質問です)  (1)成果を入力するためにキーボードを押すと、文字が出ずにエラーメッセージ「レコードを追加でき ません。テーブル"入力テーブル"の結合キーがレコードセットにありません」と表示されますがなぜ でしょうか?  (2)、(1)でエラーメッセージが出ても保存を押すと、新規入力画面のコンボボックスに先ほどの入力 内容が追加されてしまうがなぜでしょうか?  (3)クエリとリレーションシップの使い分けの判断は?(今回はクエリから結合線で結びましたが、リレ ーションシップでも似たような事ができます)  (4)入力テーブルのフィールドは上記の3つでよろしいのでしょうか?  (5)このようなものを作成する時の手順を教えて頂けると非常に助かります。 よろしくお願いいたします。  

  • Access2013テーブル結合クエリ

    Access2013 住所録テーブルと面談備忘録テーブルを、氏名で結合したクエリを作成したいのですが。 この二つのテーブルの氏名が重なり合わないものもあります。 この際、重なり合わない氏名などもクエリのデータシートビューに表示させる方法を教えてください。 フィールドの抽出条件になにか記入するのかなと思っています。初心者です。 宜しくお願いします。

  • Accessで BテーブルのフィールドをAフールドに書き換えたい。

    初心者ですが宜しくお願い致します。 Aテーブル →[氏名],[名前] Bテーブル →[氏名],[結婚後氏名] (1)上のようなテーブルがあります。クエリで、AテーブルとBテーブルの[氏名]フィールドをキーにしてリレーションを組み、A,Bテーブルのフィールド全てを表示させます。 (2)(1)で抽出されたデータだけ、Aテーブルの[氏名]フィールドをBテーブルの[結婚後氏名]フィールドに書き換えたいのですが・・・・ なにかよい方法はありますでしょうか。 詳しい方、教えてください。 宜しくお願い致します。