【发布时间】:2023-01-10 13:33:37
【问题描述】:
我有一个 MS Access 表,想以表格格式向表中的每条记录发送电子邮件。对于同一个城市或国家的表中的行,我希望 outlook 电子邮件将这些记录放在一个表中。
我包含了一个虚拟表DummyTable,我将使用 SQL 查询检索其记录:SELECT * FROM DummyTable 我已经使用我在这里找到的这个解决方案在 vba 中创建了表 access-vba-to-send-query-results-to-outlook-email-in-table-format
Public Sub NewEmail()
Dim olApp As Object
Dim olItem As Variant
Dim db As DAO.Database
Dim rec As DAO.Recordset
Dim strQry As String
Dim aHead(1 To 7) As String
Dim aRow(1 To 7) As String
Dim aBody() As String
Dim lCnt As Long
'Create the header row
aHead(1) = "Request Type"
aHead(2) = "ID"
aHead(3) = "Title"
aHead(4) = "Requestor Name"
aHead(5) = "Intended Audience"
aHead(6) = "Date of Request"
aHead(7) = "Date Needed"
lCnt = 1
ReDim aBody(1 To lCnt)
aBody(lCnt) = "<HTML><body><table border='2'><tr><th>" & Join(aHead, "</th><th>") & "</th></tr>"
'Create each body row
strQry = "SELECT * From Email_Query"
Set db = CurrentDb
Set rec = CurrentDb.OpenRecordset(strQry)
If Not (rec.BOF And rec.EOF) Then
Do While Not rec.EOF
lCnt = lCnt + 1
ReDim Preserve aBody(1 To lCnt)
aRow(1) = rec("Test1")
aRow(2) = rec("Test2")
aRow(3) = rec("Test3")
aRow(4) = rec("Test4")
aRow(5) = rec("Test5")
aRow(6) = rec("Test6")
aRow(7) = rec("Test7")
aBody(lCnt) = "<tr><td>" & Join(aRow, "</td><td>") & "</td>
</tr>"
rec.MoveNext
Loop
End If
aBody(lCnt) = aBody(lCnt) & "</table></body></html>"
'create the email
Set olApp = CreateObject("Outlook.application")
Set olItem = olApp.CreateItem(0)
olItem.display
olItem.To = "example@example.com"
olItem.Subject = "Test E-mail"
olItem.htmlbody = Join(aBody, vbNewLine)
olItem.display
End Sub
如果我想向表中的国家/地区为 TRNC Country "TRNC" 的姓名发送电子邮件,而对于英国郡,则为电子邮件正文提供单独的表,如 Country "UK",我理想的解决方案是将此表作为电子邮件正文。
我的方法是创建一个数组来保存 DummyTable 中的记录,然后遍历每条记录并为具有相同国家/地区名称的记录创建一个表,但我的实现失败了,我已经用了 2 周了。
【问题讨论】:
-
表格图像中的数据甚至与代码中引用的字段名称不匹配。看起来您没有为您的数据库定制代码示例做太多工作。数据应以文本表格而非图像形式提供。
-
所以您想将相同的记录发送给 Adam 和 Mina?与 Graeme 和 Briann 的记录相同?好吧,如果他们看到彼此的电子邮件,或者这应该是密件抄送地址吗?
-
确切地!应将相同的记录发送给 Adam 和 Mina。 Graeme 和 Briann 也有同样的记录
标签: vba ms-access outlook html-email office-automation