質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

解決済

2回答

4907閲覧

ACCESS 宛先一括取得しメール送信

退会済みユーザー

退会済みユーザー

総合スコア0

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2020/12/15 01:23

編集2020/12/16 10:50

クエリAに以下のようなデータがあります。
ID 氏名 メールアドレス 送信有無
1 あああ aaaa0000@outlook.jp
2 いいい iiii0000@outlook.jp ×
3 ううう uuuu0000@outlook.jp
4 えええ eeee0000@outlook.jp ×
これをsf_メール送信チェックでフォームを作成

フォームAにsf_メール送信チェックを設置。
sf_メール送信チェックの中から送信有無に〇がついている人のアドレスを宛先に表示させて、クエリAを添付してメール送信したいです。
宛先が1件ならばForms!フォームA!sf_メール送信チェック.Form.メールアドレスで設定できるのですが、複数の場合はどのようにすればよいかご教授ください。
※ccは固定なのですが、toは都度変わり件数も上下します。

※宛先が1件の場合は下記のコードで1人目の送信者を宛先にしてメールが立ち上がるのですが、対象者を全て宛先に入れる方法がわかりません。 対象者全員、同じ添付ファイル、同じ本文です。 sub() Dim atesaki As String Dim atesaki_CC As String Dim kenmei As String Dim honbun As String atesaki = Forms!フォームA!sf_メール送信チェック.Form.メールアドレス atesaki_CC = "zzzz0000@outlook.jp ; zzzz1111@outlook.jp" kenmei = "ご確認ください" honbun = "ご担当者様" & vbCrLf & "いつもお世話になっております。" & vbCrLf & "〇〇〇〇本文表示〇〇〇" DoCmd.SendObject acSendQuery, "クエリA", acFormatXLSX, atesaki, atesaki_CC, , kenmei, honbun, True, "" End sub コード

宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/12/15 03:51 編集

質問本文を修正頂いた所で恐縮ですが、 これだとやりたいことの丸投げになります。 そうではなく、やったこととその結果を追記して下さい。 しかも、この質問の仕方だともう結論が出てますよ。 セミコロン区切りで指定するだけです。
subka

2020/12/15 13:25

知りたいことが複数の宛先への送付であれば、busyoda 様の提示した方法でよいのではないですか。 逆にそれで何が解決しないのでしょうか。 既に指摘されていますが、それが分からないと回答のしようがないのではないかと思います。
退会済みユーザー

退会済みユーザー

2020/12/16 06:47

busyoda様、subka様 着手する時間がなく返事が遅くなり申し訳ございません。 宛先を複数にする場合、;区切りで指定するのですが、クエリで抽出された対象者すべての宛先を一括で取得して宛先にセットしたく、常に対処件数も変動します。 それをどのように取得すればよいか検討中です。 クロス集計にて対象者のアドレスを横並びにして、サブフォームに取り込みそれぞれのテキストボックスをアドレスに;で指定してみているところです。
guest

回答2

0

ベストアンサー

他の方で同じような質問をされているのを見つけて参考にしました。
選択クエリを①クロス集計にし、アドレスを列方向に表示する。
①をサブフォームにし、テキストボックスの値を宛先にセットすることで解決しました。

投稿2020/12/16 10:56

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

テキストボックスに表示させる意味が理解できませんが、
セミコロン区切りで複数の宛先を指定できます。

https://docs.microsoft.com/ja-jp/office/vba/api/access.docmd.sendobject

試行錯誤の中身が提示されていないのでどう間違えてるかは分かりませんが、
暫定的に atesaki の値をリテラルで指定した上でプログラムを実行して期待通りの動作になるか確認して下さい。

その結果が期待通りになるのであれば、
その際に利用したリテラルが生成されるように宛先のデータを抽出、加工すれば良いと思います。

追記
コメント頂いた件確認しました。
クエリの出力を配列で受け取って繋げればいいだけと思います。

配列に格納せずレコードセットの操作でも構いません。
BOF から EOF まで回して間にセミコロン入れるだけです。

後、この内容であれば質問内容は複数の宛先への送信方法ではないです。
クエリの出力をどう取得・加工するかの話です。
質問件名と相違があるので修正して下さい。

投稿2020/12/15 03:01

編集2020/12/16 08:49
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/12/15 03:21

コメントありがとうございます。 セミコロン限りで複数指定できるは存じているのですが、複数指定する方法を質問させていただいております。 自分でも解決方法を検討しながら試行錯誤していますが、詳しい方にご教授いただけると助かります。
退会済みユーザー

退会済みユーザー

2020/12/15 03:22

>セミコロン限りで複数指定できるは存じているのですが、複数指定する方法を質問させていただいております。 理解不能です。
退会済みユーザー

退会済みユーザー

2020/12/15 03:24

ありがとうございました。
退会済みユーザー

退会済みユーザー

2020/12/15 03:29

いえ、ありがとうございました、ではなく、文章がおかしいことを理解して下さい。 後、最低限どう試行錯誤した結果、 どの様に上手くいかないのかが提示されない限り、 誰にも正確な回答はできません。 まずは、あなたがどの様に実装しているのかの現状と、 その結果がどの様なものであるかを提示下さい。
退会済みユーザー

退会済みユーザー

2020/12/15 03:34

本件の結論を端的に申し上げると、 「DoCmd.SendObject で複数の宛先を指定する方法は、引数 To にセミコロン区切りで複数の宛先を指定する」です。 それで上手くいかないならあなたが何かミスをしていると考えられます。 現状提示されいてる情報ではそのミスの検討がつきません。 という話をしています。
退会済みユーザー

退会済みユーザー

2020/12/16 10:49

BOF から EOF まで回して間にセミコロン入れるだけです。 全くわかりません...納期の時間もないため遠回りになるかもしれませんが、クエリで対応しようと思います。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問