- ベストアンサー
Accessについて
宜しくお願い致します。 社員マスターテーブル 社員ID テキスト型 氏名 テキスト型 しめい テキスト型 部署名 テキスト型 メールアドレス テキスト型 クエリで社員マスターの前フィールドを使って人事部の人だけ抽出します。 抽出された人のメールアドレスをメールソフトのBCCにアドレスが入るように設定するにはどうしたらよいでしょうか? よろしくご指導ください。
- みんなの回答 (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 には、自分とか、代表のアドレスを設定してください。
その他の回答 (3)
- 30246kiku
- ベストアンサー率73% (370/504)
#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 生成では、頭に & を付けているので、 指定の仕方によっては、文字列生成範囲も変わってきます。 > デバッグは出たのですが 状況がわかりません。
補足
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)
#1です > WS.Run ・・・・ は oWS.Run ・・・・ の間違いでした
補足
早々の回答ありがとうございます。_(_^_)_ 早速やってみました。(*^_^*) その結果、クエリで必要なデータを抽出し「Qメール発送」を作成 そして「Qメール発送」をもとにフォームを作成しボタンを作成しました。 クリックした時にイベントを設定をコードビルダに教えて頂いたコードを設定しました。 その結果、デバッグは出たのですがメールが起動され本文の所に本文と言う文字が表示され、 宛先には宛先という文字が表示されました。 どのようにしたらメールアドレスが表示されるのでしょうか? お手数ですがどうぞ後教授お願い致します。_(_^_)_
- 30246kiku
- ベストアンサー率73% (370/504)
以下がメール起動処理だとします。 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=本文"
お礼
\(^o^)/きゃぁ~ありがとうございます。 出来ました。(*^_^*)嬉しいぃ~~~ 本当にありがとうございました。_(_^_)_ 沢山のお時間を拝借して申し訳ございませんでした。 感謝の気持ちでいっぱいです。 社員マスターの文字をコピーして張り付けたら出来まいした!!