0

クエリ内のすべてのレコードを電子メールに書き込みたい。

これにより、クエリの最初のレコードが書き込まれます。

MyBodyText = MailList("AccountName") & "   -   " & MailList("ExpirationDate")

私はある種のループが必要であることを知っています。

メールリストは次のように定義されています

Set MailList = db.OpenRecordset("qryDateEmail")
Option Compare Database
Option Explicit

Public Function ExpirationDate()

Dim strSQL
Dim db As DAO.Database
Dim MailList As DAO.Recordset
Dim MyOutlook As Outlook.Application
Dim MyMail As Outlook.MailItem
Dim Subjectline As String
Dim BodyFile As String
Dim fso As FileSystemObject
Dim MyBody As TextStream
Dim MyBodyText As String
Dim MyDecision As String
Dim strReportName As String
Dim strEnroll As String
Dim strWho As String
Dim strEmail As String

Set fso = New FileSystemObject
Set MyOutlook = New Outlook.Application
Set db = CurrentDb()
Set MailList = db.OpenRecordset("qryDateEmail")

Subjectline$ = "Expiration Date" & " " & Date

Set MyMail = MyOutlook.CreateItem(olMailItem)

Do While Not MailList.EOF
    MyBodyText = MailList("AccountName") & "   -   " & MailList("ExpirationDate")
    MailList.MoveNext
Loop

MyMail.To = "" & ""
MyMail.CC = CurrentUser() & ""

MyMail.Subject = Subjectline$

MyMail.Body = MyBodyText
MyMail.Display

strEmail = Now()
strWho = CurrentUser()

Set MyMail = Nothing
Set MyOutlook = Nothing

End Function
4

1 に答える 1

1

レコードセットをループして、各行の値を本文に追加できます。

未テストの航空コード:

With MailList
    Do While Not .EOF
        MyBodyText = MyBodyText & !AccountName & _
            "   -   " & !ExpirationDate & vbCrLf
        .MoveNext
    Loop
End With

質問に同様のコードを追加したことがわかりました。MyBodyText問題は、コードがループのたびに値を上書きすることです。テキストを置き換える代わりにMyBodyText毎回追加する...

MyBodyText = MyBodyText & "new text"

それ以外の ...

MyBodyText = "new text"
于 2012-12-21T17:44:55.473 に答える