現在、MS Accessで顧客の情報を管理しています。名前・住所の他にEメールも
登録しているんですが、このEメールに同じ内容のメールを送りたいと考えて
います。

テキストでエクスポートしてアドレス張に変換せずに、条件を検査後ワンタッチ
で、メーラーのBCCにアドレスを入れる事とかは出来ないでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (3件)

VBAって、Accessのモジュールのことですから、Accessの機能ですよ。



BASP21は、Accessの機能ではありませんが、それほど難しいものではありませんよ。

下記は、サンプルです。

Sub メール送信()
' SMTPサーバーのアドレス
Const sSvName As String = "ご自分のSMTPサーバーのアドレス(xxx.co.jpってやつ)"
' メールのFromに入れるアドレス
Const sFrom As String = "自分のメールアドレス"
' BASP21
Dim bobj As Basp21
' BASP21のメッセージ
Dim sMsg As String
' データベース
Dim cnn As ADODB.Connection
' レコード
Dim rec As New ADODB.Recordset
' 送信先のアドレスを入れる変数
Dim sTo As String

' BASP21のオブジェクトを作成
Set bobj = CreateObject("BASP21")

' 現在のAccessのDBと接続
Set cnn = CurrentProject.Connection

' テーブルを開く
rec.Open "テーブル名またはクエリー名を書く", cnn, adOpenForwardOnly, adLockReadOnly, adCmdTableDirect

Do Until rec.EOF
' 送信先のアドレスをテーブルから取得
sTo = rec.Fields("送信先のメールアドレスが入っているフィールドの名前").Value

' メールの送信
sMsg = bobj.SendMail(sSvName, sTo, sFrom, "メールの表題", "メールの本文", "")

If sMsg <> "" Then
'送信に失敗した場合のメッセージ
MsgBox sMsg
End If
'テーブルの次のレコードを読む
rec.MoveNext
Loop

' テーブルを閉じる
rec.Close

' 後始末
Set rec = Nothing
Set cnn = Nothing
Set bobj = Nothing

End Sub

アウトルックを使う方法もあると思いますが、VBAは避けてとおれないと思うのですが・・・
    • good
    • 1

はっきり言うとVBAを使用しないと難しいと思います。


VBAのメールの添付は、それほど難しくないのでがんばってください。

1.フォームにコマンドボタンを一つ作ってください。
2.右クリックからプロパティを選択
3.イベントの「クリック時」を選択して「…」をクリックしてコードビルダ
を選択してください。
4・↓の記述をコピー&ペーストして下さい。
DoCmd.SendObject objectType:=acSendTable, _
objectname:="添付したいテーブル名", _
outputformat:=acFormatTXT, _ '←TEXT形式に自動添付Excel形式も可
To:=相手先のメールアドレス, _ '←~@~.ne.jpってやつ
subject:="お疲れ様です。", _  '←題名
messagetext:="???.Txtを添付致しました。後処理願います。" '内容
5.×で保存してコマンドボタンをクリックしてみて下さい。
以上です。
※3行目のacFormatTXTをacFormatXLSにするとExcel形式で自動添付することが
できます。
もしわからなければ追記して下さい。
    • good
    • 1

VBAでのプログラミングが出来るのでしたら、BASP21を使用すれば、簡単にメールができます。



参考URL:http://www.hi-ho.ne.jp/babaq/basp21.html

この回答への補足

VBAは分からないんです。。。

なんとか、Accessの昨日のみで、テーブルのあるデータからメールをおくること
はできないでしょうか?

補足日時:2001/12/01 10:14
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QMS ACCESSを利用して複数へのメール送信

現在、Microsoft Accessを利用したクレーム管理表を作成中で、そのクレーム内容を複数名にて情報共有したいと思っています。そこで、皆様のアドバイスを頂戴できれば助かります。

Accessのフォーム内に複数のメールアドレスを表示させ、その中から選択したアドレスに対してクレーム内容(レポート)をメール送信(OUTLOOK又はOE)したい。

(できれば、チェックボックスを利用して、チェックを入れたアドレス(又は人名)に対してメール送信を行いたいと思います。)

素人質問で申し訳ございませんが、宜しくお願い致します。

Aベストアンサー

sendobjectはマクロでもできますが、一旦VBAを覚えるとそちらの方が分かりやすいのでVBAの例を記述しました。

それでは、もっと詳しくご説明します。

フォーム上にメール送信ボタンを作成します。
そのボタンのプロパティーに「イベント」があると思います。
そこの「クリック時」で「イベントプロシージャー」を選択して、右端の「・・・」をクリックしてください。

VBA記述画面が表示されるはずです。
その中のprivate sub と end subの間に前述の内容を貼り付けて完成です。

もちろん、to_adrとcc_adrのアドレス記述は実際に存在するメールアドレスに変更してくださいね。

QアクセスVBAでメールを送信(複数宛先・添付)

vbaを使用しメールを送信しようとしております。
以下に記載のように設定をしておりますが、2点設定の方法がわかりかねております。
大変お手数ですが、ご教示いただければ幸いです。

(1)宛先を複数設定したい場合はどのように設定すればよろしいでしょうか。
別々に送るのではなく、宛先にアドレス1、アドレス2を設定し1通のメールで送信をしたいです。

(2)添付ファイルを複数添付したいのですが、宛先によって添付ファイルの数が異なります。
たとえば、宛先Aには添付ファイルが1,2があるが、Bには添付ファイル1のみであり添付ファイル2フィール付度はNULLです。
この場合、エラーになってしまうのですが、"添付ファイルフィールドがnullでも無視してそのまま送信する"と設定はできるのでしょうか。

---------------------------------------
テーブル名:テーブル1
フィールド:アドレス1、アドレス2、件名、本文、添付ファイル1、添付ファイル2
---------------------------------------
Sub SAMPLE_0216()
Dim db As DAO.Database
Dim R1 As Recordset
Dim AP As Object
Dim ML As Object
Dim L1 As String

Set db = CurrentDb
Set R1 = db.OpenRecordset("テーブル1")
Set AP = CreateObject("Outlook.Application")

R1.MoveFirst

Do Until R1.EOF
'メールを作成
Set ML = AP.createitem(0)
'アドレスをセット
ML.To = R1!アドレス1
'件名をセット
ML.Subject = R1!件名
'本文をセット
ML.Body = R1!本文
'ファイルを添付1
L1 = R1!添付ファイル1
ML.Attachments.Add L1
'ファイルを添付2
L1 = R1!添付ファイル2
ML.Attachments.Add L1

'メールを送信
ML.Send

R1.MoveNext
Loop

End Sub
-----------------------------------------


どうぞよろしくお願いいたします。

vbaを使用しメールを送信しようとしております。
以下に記載のように設定をしておりますが、2点設定の方法がわかりかねております。
大変お手数ですが、ご教示いただければ幸いです。

(1)宛先を複数設定したい場合はどのように設定すればよろしいでしょうか。
別々に送るのではなく、宛先にアドレス1、アドレス2を設定し1通のメールで送信をしたいです。

(2)添付ファイルを複数添付したいのですが、宛先によって添付ファイルの数が異なります。
たとえば、宛先Aには添付ファイルが1,2があるが、Bには添付フ...続きを読む

Aベストアンサー

Accessはわからないのですが、ExcelからのOutlookの操作と基本は同じはずなので一部推定を交えて答えさせていただきます。

まず宛先ですが、";"(セミコロン)で区切れば複数設定できます。
Access VBA の書き方ですが、
ML.To = R1!アドレス1 & ";" & R1!アドレス2
でよさそうに思えるのですがいかがでしょうか。
宛先が1つの場合でも、アドレス1かアドレス2のうち宛先の入っていない方が空文字列(長さ0の文字列)であればこのままで大丈夫なはずです。

次に添付ファイルですが、Nullを無視してそのまま送信可能かどうかはわからないのですが、Nullなら添付しないようにすれば話は簡単だと思います。
Access VBA の書き方ですが、たぶん以下のようなものでいいと思います。
'ファイルを添付1
IF IsNull(R1!添付ファイル1) = False Then
L1 = R1!添付ファイル1
ML.Attachments.Add L1
End If
'ファイルを添付2
IF IsNull(R1!添付ファイル2) = False Then
L1 = R1!添付ファイル2
ML.Attachments.Add L1
End If
(フィールドがNullかどうかの判定は参考URLのページをまねてみたのですがこれでいいでしょうか?)
http://oshiete.goo.ne.jp/qa/1223220.html

参考URL:http://oshiete.goo.ne.jp/qa/1223220.html

Accessはわからないのですが、ExcelからのOutlookの操作と基本は同じはずなので一部推定を交えて答えさせていただきます。

まず宛先ですが、";"(セミコロン)で区切れば複数設定できます。
Access VBA の書き方ですが、
ML.To = R1!アドレス1 & ";" & R1!アドレス2
でよさそうに思えるのですがいかがでしょうか。
宛先が1つの場合でも、アドレス1かアドレス2のうち宛先の入っていない方が空文字列(長さ0の文字列)であればこのままで大丈夫なはずです。

次に添付ファイルですが、Nullを無視してそのまま送信...続きを読む

QAccessでメール一括送信ソフトを作りたい

Access初心者です。

同じ内容の文章を複数の人に送信できるソフトを
Accessで作りたいのですが、どうやったらいいでしょうか?
なにか参考になるサイト・情報等教えてください!!!

Aベストアンサー

> インストール後にどうやったら使えるのでしょうか??

参照設定しない場合は・・・
Dim bobj As Object
Set bobj = CreateObject("basp21")

Dim result As String
result = bobj.SendMailEx("C:\logFile.txt", _
"smtp Server のアドレス", _
"相手(受信者)のアドレス", _
"自分(送信者)のアドレス", _
"件名", _
"本文", _
"")

それぞれの引数は文字列型でパラメータを指定します。
最後の "" は「添付ファイル無し」の場合です。
これでメールをチクチクと 1通ずつ送信するのもよいですが、FlushMail メソッドで一気に送信するのもよいでしょう。
http://www.hi-ho.ne.jp/babaq/faq.html#M021

参考URL:http://www.hi-ho.ne.jp/babaq/basp21.html#0003

QACCESSから、メール送信を行いたいです

ACCESS(2007)から、新規にデータが登録された際に、そのタイトルと
本文の内容を含めた、メールを送信したいです。

BASP21を組み込み、それ自体メールを送信することはできたのですが、
登録フォームの内容と、送信内容をどう組み合わせればいいのか、わかりません。
記述方法など教えていただけないでしょうか

Aベストアンサー

例えば下記のようなVBAを登録したコマンドボタンを作成した、メール編集用のフォームを作ります。
この例では、フォームの中に送信相手のアドレスを複数選択可能なリストボックス(送信先:MailAdress1、CC:MailAdress2)として作成します。件名、内容のテキストボックスを配置し、この中に新規データの内容を代入するようにします。付記事項等追加し、SendMailコマンドボタンをクリックすると指定した送信先に送信されます。コマンドボックスのクリック時イベントプリシージャーは下記のとおりです。参照設定で、Microsoft Outlook 11.0 Object Libraryを参照する必要があります。これでアクセスから直接メール送信できます。

Private Sub SendMail_Click()
On Error GoTo Err_SendMail_Click
Dim appOutlook As Outlook.Application
Dim objMailItem As Outlook.MailItem
Dim i As Variant, MailAddressTo As String, MailAddresscc As String

If IsNull(Me.内容) Then
MsgBox "メール本文が入力されていません!", vbExclamation + vbOKOnly, "確認"
Exit Sub
End If

Set appOutlook = CreateObject("Outlook.Application")
If appOutlook Is Nothing Then
MsgBox "Outlook 11.0 is not installed on your PC."
Exit Sub
End If
Set objMailItem = appOutlook.CreateItem(olMailItem)
MailAddressTo = ""
For Each i In Me![MailAddress1].ItemsSelected
If MailAddressTo <> "" Then MailAddressTo = MailAddressTo & ";"
MailAddressTo = MailAddressTo & Me![MailAddress1].ItemData(i)
Next i

MailAddresscc = ""
For Each i In Me![MailAddress2].ItemsSelected
If MailAddresscc <> "" Then MailAddresscc = MailAddresscc & ";"
MailAddresscc = MailAddresscc & Me![MailAddress2].ItemData(i)
Next i

With objMailItem
.To = MailAddressTo
.CC = MailAddresscc
.Subject = Me.件名
.Body = Me.内容
.Display
.Send
End With
appOutlook.Quit
Set objMailItem = Nothing
Set appOutlook = Nothing

Exit_SendMail_Click:
Exit Sub

Err_SendMail_Click:
MsgBox Err.Description
Resume Exit_SendMail_Click
End Sub

例えば下記のようなVBAを登録したコマンドボタンを作成した、メール編集用のフォームを作ります。
この例では、フォームの中に送信相手のアドレスを複数選択可能なリストボックス(送信先:MailAdress1、CC:MailAdress2)として作成します。件名、内容のテキストボックスを配置し、この中に新規データの内容を代入するようにします。付記事項等追加し、SendMailコマンドボタンをクリックすると指定した送信先に送信されます。コマンドボックスのクリック時イベントプリシージャーは下記のとおりです。参照設...続きを読む

QAccessのマクロからメールを送信しています。

Accessのマクロからメールを送信しています。
メールソフトをoutlook expressからoutlook2010に変更したのですが、
セキュリティの確認画面が出てきて、都度都度「許可」をしなければなりません。
この確認画面が表示されない状態でメール送信をしたいのですが…。
オプション→セキュリティ→「プログラムによるアクセス」の部分だと思ったのですが、
ラジオボタンがグレーになっていて変更ができませんでした。

よろしくお願いします。

Aベストアンサー

ANo.2 の回答に誤りがありました。Outlook 2010 では以下のキーになります。(キーが無ければ作成してください。)

キー: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Outlook\Security
値の名前:ObjectModelGuard
値の種類:REG_DWORD
値のデータ : 2

QAccessのRefresh・Requery・Repaintの違い

Requeryはもう一度ソースレコード(テーブル)を読み込むようです。このとき、テーブルの先頭レコードに移動してしまいます。
Refreshは最新のレコード(テーブル)を再表示するような気がします。レコードの移動は起こらない気がします。
Repaintは、VBAでキャプションなどを変更したとき使っています。
でも、よくわかっていません。
どんなときにどんなメソッドを使えばいいのでしょうか?
詳しい方、よろしくお願いいたします。

Aベストアンサー

たびたびすみません。
調べてたらこんなのがでてきました。
http://www.nurs.or.jp/~ppoy/access/access/acF007.html

参考URL:http://www.nurs.or.jp/~ppoy/access/access/acF007.html

QACCESSでフォームを使って、テーブルを参照、データ入力、データ更新をしたいのです

フォームを使って、テーブルを参照、データ入力、データ更新をしたいのです。

売上テーブル

 ID   商品コード  日付    金額 
 1    G1     20080101  532153
 2    G1     20080101  564281
 3    G1     20080301  538123
 4    J4     20080301  124531
 5    J4     20080302  125483

ID:オートナンバー 商品コード:数値型 日付:数値型 金額:数値型

これを使い、
フォームではまず

レコードナンバーを入力画面
       ↓
レコード番号を入れると、そのレコードのデーターが画面に表示され、
その画面で修正可能
       ↓
 保存 ボタンで保存

という流れです。

レコードナンバーはIDを使おうと思っています。

データの量が莫大な為、コンポボックスなどは使えません。

できるだけ、VBAなどは使わずに作りたいです。

よろしくお願い致します。

フォームを使って、テーブルを参照、データ入力、データ更新をしたいのです。

売上テーブル

 ID   商品コード  日付    金額 
 1    G1     20080101  532153
 2    G1     20080101  564281
 3    G1     20080301  538123
 4    J4     20080301  124531
 5    J4     20080302  125483

ID:オートナンバー 商品コード:数値型 日付:数値型 金額:数値型

これを使い、
フォームではまず

レコードナンバーを入...続きを読む

Aベストアンサー

まずそのテーブルを基にしてフォームを作成します。
そのフォームのヘッダー部分にテキストボックスを配置後、一旦
上書き保存。
フォームのレコードソースを
SELECT *
FROM テーブル名 WHERE ID=[Forms]![フォーム名]![テキストボックス名]
とします。
次にテキストボックスの更新後処理に
Me.Requery
とすれば完成です。
フォームを開いてテキストボックスにID入力後エンターしてください。

保存に関しては、コマンドボタン作成後クリック時イベントに
DoCmd.RunCommand acCmdSaveRecord
とすれば良いでしょう。

この手のモノは検索すれば相当数ヒットするので、そちらを参考にされるのもよろしいかと。

QACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ

ACCESSで空白のデーターをクエリで判定/識別する方法を教えてください。
EXCELでは空白を""で判定/識別表していますがACCESSではどうなるのでしょうか。

下の例はフィールドに試験番号があればその番号を、空白なら”欠席”と表示しようとしています。
IIf(([試験番号]="空白の場合何を入れる?"),[試験番号],"欠席")

Aベストアンサー

もうひとつの書き方は
式1: IIf([試験番号] Is Not Null,[試験番号],"欠席")
第2、第3引数の、質問の順序にあわせるとこうなる。

QAccessで別テーブルの値をフォームに表示したい

初めてのAccessで分からない事があり質問させてください。

<会社テーブル>
会社ID
会社名
住所

<社員テーブル>
会社ID
社員名
ソート番号

*1社に対し複数の社員レコードが存在

以上のようなテーブルがあるとします

現在「会社テーブル」を表形式で一覧表示しています
会社ID,会社名、住所とフィールドが並んでいるのですが、その後ろに「社員テーブル」のソート番号が一番若い社員名を表示したいと考えています(現状は番号関係なく表示させる方法すら分かりません)

色々いじくりまわしたのですが、初めてAccessをさわる事もあってよくわかりません

リレーション等でひっぱってくる事ができるのでしょうか?

どなたか教えて頂けませんでしょうか

何卒よろしくお願い致します

PS.Access2013で作成中です

Aベストアンサー

単純にテーブル[会社]のみでフォームを作成し、社員表示用テキストボックスを追加。そして、そのプロパティを表示し

コントロールソース=DBLookup("SELECT 社員名 FROM 社員 WHERE 会社ID=" & [会社ID] & " ORDER BY ソート番号")

これは、以下の標準モジュールに登録したユーザ関数 DBLookup()を使っています。これで、クエリを用意しなくても目的を達成できます。

さて、かかるユーザ関数を標準ライブラリに登録したくない場合、

1、"社員ソートクエリ"を作成します。

SELECT 社員.会社ID, 社員.社員名
FROM 社員
ORDER BY 社員.ソート番号;

2、コントロールソースに次のように書きます。

=DLookUp("社員名","社員ソートクエリ","会社ID=" & [会社ID])

http://office.microsoft.com/ja-jp/access-help/HA001228825.aspx

DLookup()については、マイクロソフトの解説を参照されてください。

【DLookup()の限界を破るにはVBAで同じ関数を作るしかない】

マイクロソフトの解説を読めば判りますが、ORDER BY 節を指定する引数が用意されていません。ですから、どうしても、"社員ソートクエリ"を作成するという手間が必要となります。そこで、SQL文を引数とするDBLookup()をVBAで書けば、その手間を省けるという算段になります。この辺りは、好みと趣味の問題。どっちでも良いと思います。そういうお断りをした上で DBLookup()を紹介しておきます。なお、ADOは、つぎのように参照設定しないと利用できません。

http://www.happy2-island.com/access/gogo03/capter00307.shtml

Public Function DBLookup(ByVal strQuerySQL As String, _
             Optional ByVal ReturnValue = Null) As Variant
On Error GoTo Err_DBLookup
  Dim DataValue
  Dim rst     As ADODB.Recordset

  Set rst = New ADODB.Recordset
  With rst
    .Open strQuerySQL, _
       CurrentProject.Connection, _
       adOpenStatic, _
       adLockReadOnly
    If Not .BOF Then
      .MoveFirst
      DataValue = .Fields(0)
    End If
  End With
Exit_DBLookup:
On Error Resume Next
  rst.Close
  Set rst = Nothing
  DBLookup = IIf(Len(DataValue & ""), DataValue, ReturnValue)
  Exit Function
Err_DBLookup:
  MsgBox "SELECT 文の実行時にエラーが発生しました。(DBLookup)" & Chr$(13) & Chr$(13) & _
      "・Err.Description=" & Err.Description & Chr$(13) & _
      "・SQL Text=" & strQuerySQL, _
      vbExclamation, " 関数エラーメッセージ"
  Resume Exit_DBLookup
End Function

単純にテーブル[会社]のみでフォームを作成し、社員表示用テキストボックスを追加。そして、そのプロパティを表示し

コントロールソース=DBLookup("SELECT 社員名 FROM 社員 WHERE 会社ID=" & [会社ID] & " ORDER BY ソート番号")

これは、以下の標準モジュールに登録したユーザ関数 DBLookup()を使っています。これで、クエリを用意しなくても目的を達成できます。

さて、かかるユーザ関数を標準ライブラリに登録したくない場合、

1、"社員ソートクエリ"を作成します。

SELECT 社員.会社ID, 社員.社員名
FR...続きを読む

QACCESSで条件によってフォーム上のフィールドの色を変更

一覧形式のフォームがあり、条件によって色を変更したいのですが、その条件というのが下記のような感じです。

フィールドA | フィールドB | フィールドC | チェックボックス
チェックボックスのチェックがあったら、フィールドA・B・Cの色をグレーにする。
チェックがなかったら白いまま。

というものです。
条件付書式だと、色を変更するフィールドそのもののデータを参照にしないといけないんですよね?
フォームオープンのところにVBAをかいてみたんですが、ひとつひとつは認識してないみたいで…。
どのようにすればいいのでしょうか?

よろしくお願いします。

Aベストアンサー

フォームのデザイン画面で3つのフィールドすべて選択し条件付書式画面を表示させる。
条件1のコンボで”式”を選択。
右側の欄に[チェックボックスのコントロール名]=True
と入力し、バケツアイコンでグレーを選択。
(もちろん1フィールドづつ設定してもOK)


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報