Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1341 / 2272 ツリー ←次へ | 前へ→

【7577】メール自動配信 furau 06/3/24(金) 17:21 質問[未読]
【7578】Re:メール自動配信 Gin_II 06/3/24(金) 17:36 回答[未読]
【7584】Re:メール自動配信 furau 06/3/27(月) 12:18 質問[未読]
【7586】Re:メール自動配信 Gin_II 06/3/27(月) 12:40 回答[未読]
【7617】Re:メール自動配信 furau 06/3/30(木) 10:46 お礼[未読]
【7579】Re:メール自動配信 たぬき 06/3/24(金) 18:27 発言[未読]
【7585】Re:メール自動配信 furau 06/3/27(月) 12:21 質問[未読]
【7587】Re:メール自動配信 たぬき 06/3/27(月) 13:36 回答[未読]
【7616】Re:メール自動配信 furau 06/3/30(木) 10:44 お礼[未読]

【7577】メール自動配信
質問  furau  - 06/3/24(金) 17:21 -

引用なし
パスワード
   こんにちは
どうしても先に進めず困りました。質問させて頂きます。よろしくお願いします。

今、あるツール終了後にツールで集計した結果の報告をメールで自動的に
配信しようとしているのですが、どうしても一人にしかアドレスが作れず困っています。

配信先用にT_Mailと言うテーブルに送りたい人達のアドレスを記入しているのですが、
一番最後のレコードの人にしか配信できません。
どのようにしたらテーブル全員へ配信出来ますでしょうか?

【7578】Re:メール自動配信
回答  Gin_II  - 06/3/24(金) 17:36 -

引用なし
パスワード
   >配信先用にT_Mailと言うテーブルに送りたい人達のアドレスを記入しているのですが、
>一番最後のレコードの人にしか配信できません。
>どのようにしたらテーブル全員へ配信出来ますでしょうか?

プログラムのロジックが間違っているのでしょうけど、そのプログラムを
提示されないと、どこが間違っているのか指摘はできないと思いますが ^^;

【7579】Re:メール自動配信
発言  たぬき  - 06/3/24(金) 18:27 -

引用なし
パスワード
   ▼furau さん:
Accessのバージョンとどのようにメールを送信しているかも
書いてください。
2000だと不具合もあるので・・・。

【7584】Re:メール自動配信
質問  furau  - 06/3/27(月) 12:18 -

引用なし
パスワード
   ▼Gin_II さん:たぬき さん

>>配信先用にT_Mailと言うテーブルに送りたい人達のアドレスを記入しているのですが、
>>一番最後のレコードの人にしか配信できません。
>>どのようにしたらテーブル全員へ配信出来ますでしょうか?
>
>プログラムのロジックが間違っているのでしょうけど、そのプログラムを
>提示されないと、どこが間違っているのか指摘はできないと思いますが ^^;

>>>Gin_IIさん、たぬきさん、せっかくの返答に答えが遅くてすみません。ありがとうございます。
>>>お粗末ながら、

Public Sub MailSubmit2()

Dim dbDAO As DAO.Database
Dim rsDAO, rsMDAO, rsM2DAO As DAO.Recordset
Dim strEmail, strEmail2 As Variant '-----送信先とCCのEmailアドレスです。
Dim strSubject As String    '-----件名です。
Dim strText As String      '-----署名を含む本文です。
Dim strDate As String      '-----対象期間として差し込む日付文字列です。
Dim strSQLM, strSQLM2 As String
Dim i As Integer
   
 strSQLM = _
 "SELECT * FROM T_Mail where flg = 1"
  
 Set dbDAO = CurrentDb
 Set rsDAO = dbDAO.OpenRecordset("Q_対象期間2", dbOpenDynaset)
 Set rsMDAO = dbDAO.OpenRecordset(strSQLM)
  
 DoCmd.SetWarnings False
  
  
  rsMDAO.MoveFirst
  Do Until rsMDAO.EOF = True
    'strEmail = rsMDAO(0) & ";"
    strEmail = rsMDAO!Mail & ";"
    rsMDAO.MoveNext

  Loop

  If Right(strEmail, 1) = ";" Then
    strEmail = Left(strEmail, Len(strEmail) - 1)
  End If
  Next
'------------------------------------------------------以下CC用
  strSQLM2 = _
  "SELECT * FROM T_Mail_CC where flg = 1"
  
  Set db = CurrentDb
  Set rs = db.OpenRecordset("Q_対象期間2")
  Set rsM2 = db.OpenRecordset(strSQLM2)
  
  DoCmd.SetWarnings False
  
  rsM2DAO.MoveFirst
  Do Until rsM2.EOF
    strEmail2 = rsM2(0) & ";"
    strEmail2 = rsM2DAO!Mail
    rsM2DAO.MoveNext
  Loop

  If Right(strEmail2, 1) = ";" Then
    strEmail2 = Left(strEmail2, Len(strEmail2) - 1)
  End If
  
  
  '-----件名は動的に差込み
  strSubject = "テスト & DateDiff("ww", #1/1/2003#, Date) - 21 & "-Web資料請求(デイリー)投入しました"
  
  rs.MoveFirst
    strDate = rs!対象期間 & "〜"
  rs.MoveLast
  '-----以下の式が成り立てば対象日付は複数あるので、・・・
  If Left(strDate, Len(strDate) - 1) <> rs!対象期間 Then
    strDate = strDate & rs!対象期間
  Else
  '-----対象日付が1日のみであれば、「〜」の文字列を省く
    strDate = Left(strDate, Len(strDate) - 1)
  End If
  
  '-----以下、メール文言ココカラ(署名含む)
  strText = vbCrLf & "   各位" & vbCrLf & vbCrLf & _
  "   『" & DateDiff("ww", #1/1/2003#, Date) - 21 & "-資料請求(デイリー)』の投入が完了致しました。" & vbCrLf & _
  "   コール可能な状態になっております。" & vbCrLf & vbCrLf & _
  "   対象期間:" & strDate & vbCrLf & vbCrLf & _
  "   件数:" & DLookup("Count", "Q_Count") & " 件" & vbCrLf & vbCrLf & _
  "   ご確認ください。" & vbCrLf & vbCrLf & vbCrLf & _
  "   株式会社 ○○" & vbCrLf & vbCrLf & _
  "   △△事業本部 ××営業部" & vbCrLf & _
  "   furau" & vbCrLf & _
  "   e-mail : x-xxxx2@xx.com" & vbCrLf & _
  "   TEL:xx-xxxx-xxxx/FAX:xx-xxxx-xxxx"
  '-----メール文言ココマデ


DoCmd.SendObject acSendNoObject, , acFormatHTML, strEmail, strEmail2, , strSubject, strText, True
  DoCmd.SetWarnings True
  
  rsMDAO.Close: Set rsM = Nothing
  rsDAO.Close: Set rs = Nothing
  dbDAO.Close: Set db = Nothing

End Sub

【7585】Re:メール自動配信
質問  furau  - 06/3/27(月) 12:21 -

引用なし
パスワード
   ▼たぬき さん:
>▼furau さん:
>Accessのバージョンとどのようにメールを送信しているかも
>書いてください。
>2000だと不具合もあるので・・・。

>>ご返信ありがとうございます。えっと、ごめんなさい、VBAはGin_IIさんの方に
>>書かせてもらいました。バージョンは2000なんです...

【7586】Re:メール自動配信
回答  Gin_II  - 06/3/27(月) 12:40 -

引用なし
パスワード
   > Dim rsDAO, rsMDAO, rsM2DAO As DAO.Recordset

この書き方だと、rsM2DAO 以外は、Variant 型となりますよ。


> DoCmd.SendObject acSendNoObject, , acFormatHTML, strEmail, strEmail2, , strSubject, strText, True

この前の行あたりで、
Debug.Print "strEmail;" & strEmail & " strEmail2;"; strEmail2
のようにして、メールアドレスがきちんと取得できているかを確認してください。


> バージョンは2000なんです...

[ACC2000]SendObjectを使用すると複数回目でメール送信ができない
http://support.microsoft.com/kb/417909/ja

[ACC2000]SendObjectメソッドのsubjectに2バイト文字を使用するとエラー
http://support.microsoft.com/kb/414212/ja

のように、Access2002で修正しました。
なんてバグがいくつかあります。

Access 2000 でオートメーションを使用して Microsoft Outlook のメッセージを送信する方法
http://support.microsoft.com/kb/209948/JA/

こちらか、CDO を利用するとかにした方がいいと思います。

【7587】Re:メール自動配信
回答  たぬき  - 06/3/27(月) 13:36 -

引用なし
パスワード
   ▼furau さん:
Access 2000の問題はService Pack 3で直ってるようなのでバー
ジョンを確認してください。

http://support.microsoft.com/default.aspx?scid=kb;ja;JP260819

Do Until rsMDAO.EOF = True
    strEmail = rsMDAO!Mail & ";"
    rsMDAO.MoveNext
Loop

これだと多分最後のデータしかstrEmailに入らないのではないかと
思います。
strEmail = strEmail & rsMDAO!Mail & ";"
の様にすると繋がっていくと思います。

Service Pack 3なければAccess 2002にするとか、BASP21等の検討の
必要があります。

【7616】Re:メール自動配信
お礼  furau  - 06/3/30(木) 10:44 -

引用なし
パスワード
   たぬきさん
レスが悪く本当にすみません。仕事が立て込んで、まったくツールをいじる時間がないのです。
教わった内容で色々試してみます。また教えてくれたらと。
とにかくまずはお礼を言います。

ありがとうございます。時間が出来次第結果報告します!

【7617】Re:メール自動配信
お礼  furau  - 06/3/30(木) 10:46 -

引用なし
パスワード
   GinIIさん

すみませんレスが悪くて。まったく時間がとれず、手をつけられない状態なんです。
時間が出来次第、試したいと思います。その折、また宜しくお願いします!

まずは、お礼を言わせてください。

ありがとうございます!またお願いします。結果報告します。

1341 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078228
(SS)C-BOARD v3.8 is Free