email - 将电子邮件地址传递给 VBA 中的 SendObject 方法

标签 email vba ms-access-2007

我想从我的表“GetContact_TempTbl”中获取电子邮件地址并将报告发送到该电子邮件地址。此电子邮件将根据收到的公司而变化。我目前提取相关电子邮件地址并将其存储在临时表中. 我目前收到 Object Required 错误。

非常感谢您的建议。

Dim db As Database
Dim rs As Recordset
Dim stRecipients As String
Dim stDocName As String

Set db = CurrentDb()
Set rs = db.OpenRecordset("GetContact_TempTbl")
Set stRecipients = rs.Fields("Contact_Email")
stDocName = "License CODs"
stRecipietns = stRecipients

DoCmd.SendObject acReport, stDocName, acFormatPDF, stRecipients, , , "Thank You for your purchase"

最佳答案

如果您的记录集为您要发送电子邮件的每个收件人保留一行,请遍历记录集以收集它们,而不是只读取第一行的收件人。

Const stDocName As String = "License CODs"
Dim db As DAO.database
Dim rs As DAO.Recordset
Dim stRecipients As String

Set db = CurrentDb()
Set rs = db.OpenRecordset("GetContact_TempTbl")
With rs
    Do While Not .EOF
        stRecipients = stRecipients & ";" & !Contact_Email
        .MoveNext
    Loop
    .Close
End With

If Len(stRecipients) > 0 Then
    ' discard leading ";"
    stRecipients = Mid(stRecipients, 2)
    DoCmd.SendObject acReport, stDocName, acFormatPDF, _
        stRecipients, , , "Thank You for your purchase"
Else
    MsgBox "No recipients to email!"
End If

Set rs = Nothing
Set db = Nothing

但是,如果我的解释不正确,并且记录集总是包含只有一个 Contact_Email 的一行,那么您甚至不需要记录集。您可以使用 DLookup 简单地检索 Contact_Email

stRecipients = Nz(DLookup("Contact_Email", "GetContact_TempTbl"), "")

关于email - 将电子邮件地址传递给 VBA 中的 SendObject 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14469957/

相关文章:

vba - Excel 宏非 VBA

sql-server - Access 传递查询能否查看使用 ADO 和/或 SSMS 创建的 SQL Server 上的全局临时表?

c# - Access 2007 已锁定

ruby-on-rails - 在Rails中,为什么仅在测试中我的邮件正文为空?

php - 应用程序想要从本地主机发送电子邮件

linux - 按主题内容对邮件进行排序

sql - 按条件 Access 跨行分组

c# - 使用 ASP.NET MVC 发送 500 封电子邮件 : throttling

vba - 在 VBA 中逐行读取大文件的超快方法是什么?

vba - 查找并替换某个范围内所有出现的字符串