【发布时间】:2019-04-15 21:35:59
【问题描述】:
我正在运行一个查询 EmailList,它会提取访问表单上显示的人员的电子邮件地址。查询本身运行正常,用预期的收件人填充字段电子邮件。我想使用 VBA 将此查询中显示的电子邮件复制到新电子邮件中,并将它们列为收件人。我需要电子邮件为 html,因为我在电子邮件正文中附加了一个超链接。
Set OutApp = CreateObject("outlook.application")
OutApp.Session.Logon
Set OutMail = OutApp.createitem(0)
Dim rs As DAO.Recordset
Dim qry As DAO.QueryDefs
Dim CurrentDb As DAO.Database
Dim OlApp As Object
Dim OlMail As Object
Dim ToRecipient As String
Set OlApp = CreateObject("Outlook.Application")
Set OlMail = OlApp.createitem(olmailitem)
Set rs = CurrentDb.OpenRecordset("SELECT Email FROM [EmailList]")
Do While rs.EOF = False
ToRecipient = rs!Email
OlMail.Recipients.Add ToRecipient
rs.MoveNext
Loop
With OutMail
.Subject = "MOC"
.HTMLbody = "<a href=""X:\MOC Training.accdb"">Click Here for Training</a><br>"
.Display
End With
Set OutMail = Nothing
Set OutApp = Nothing
玩这个时,我的收件人只有空白,或者我的“Set rs”行项目出错。我对 VBA 很陌生,所以我不明白这个错误。
参见下面的 SQL 代码:
SELECT Employees.Email
FROM Employees LEFT JOIN Names2 ON Employees.Employee = Names2.[Names Trainee]
WHERE (((Names2.MOC)=[Forms]![Input MOC]![cboMOC#]));
【问题讨论】:
-
编辑问题以发布查询 SQL 语句。假设代码运行时表单是打开的?这段代码在那个表格后面?为什么你在开头有那些 SET 行?模块头中有
Option Explicit吗?您正在为同一类型的对象声明多个变量,然后不一致地使用变量。不要使用CurrentDb作为声明变量 - 它已经是一个内在常量。 -
我附上了用于查询的 SQL 代码。 SELECT Employees.Email FROM Employees LEFT JOIN Names2 ON Employees.Employee = Names2.[Names Trainee] WHERE (((Names2.MOC)=[Forms]![Input MOC]![cboMOC#]));