2012-12-21 43 views
0

我想通過VBA將查詢中的所有記錄寫入電子郵件。VBA基於查詢寫電子郵件正文,Loop?

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

這就是我目前的,它的工作,顯然,直到一點:它只寫入查詢中的第一條記錄。我知道我需要一些循環才能使它工作,但我不能爲我的生活弄清楚它。

編輯:郵件列表定義如下

Set MailList = db.OpenRecordset("qryDateEmail") 

EDIT2:根據要求

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 

在那裏,我有循環我一直在搞亂。

+2

你能請張貼更多的代碼? –

回答

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" 
+0

啊哈! MyBodyText = MyBodyText等等 完美工作。感謝您的時間! – user1706975

相關問題