如何将MS Access拆分表单选中行信息添加至Outlook邮件
解决方案:将Access拆分表单选中行信息插入Outlook邮件
步骤1:获取表单中勾选的待处理行数据
利用表单的RecordsetClone遍历所有记录,筛选出FHPRejected字段为True的行,收集AutoRID及其他所需业务字段(可根据实际需求调整字段):
Private Function GetRejectedRecords() As String Dim rs As DAO.Recordset Dim emailContent As String Set rs = Me.RecordsetClone rs.MoveFirst emailContent = "<h3>需修正的请求列表:</h3><ul>" Do While Not rs.EOF ' 筛选勾选了FHPRejected的行 If rs!FHPRejected = True Then ' 拼接AutoRID及其他字段信息,示例添加AutoRID和假设的RequestTitle字段 emailContent = emailContent & "<li>请求ID:" & rs!AutoRID & " - 标题:" & Nz(rs!RequestTitle, "无标题") & "</li>" End If rs.MoveNext Loop emailContent = emailContent & "</ul>" GetRejectedRecords = emailContent rs.Close Set rs = Nothing End Function
步骤2:修改现有Outlook邮件生成代码
将上述函数获取的内容整合到邮件正文,替换原有基础邮件内容。以下是完整的按钮点击事件代码:
Private Sub Btn_Rejected_Click() Dim olApp As Object Dim olMail As Object Dim rejectedContent As String ' 获取勾选行的信息 rejectedContent = GetRejectedRecords() ' 校验是否有勾选行 If InStr(rejectedContent, "<li>") = 0 Then MsgBox "请先勾选需要标记为修正的行!", vbExclamation Exit Sub End If ' 调用Outlook生成邮件 Set olApp = CreateObject("Outlook.Application") Set olMail = olApp.CreateItem(0) With olMail .To = "预设收件人邮箱@domain.com" ' 替换为实际预设人员邮箱 .Subject = "需修正的请求通知" .HTMLBody = "您好,以下是需修正的请求列表:<br><br>" & rejectedContent & "<br><br>请及时处理。" .Display ' 若要直接发送,替换为 .Send End With Set olMail = Nothing Set olApp = Nothing ' 可选:标记完成后清空勾选状态 Me.RecordsetClone.MoveFirst Do While Not Me.RecordsetClone.EOF If Me.RecordsetClone!FHPRejected = True Then Me.RecordsetClone.Edit Me.RecordsetClone!FHPRejected = False Me.RecordsetClone.Update End If Me.RecordsetClone.MoveNext Loop Me.Requery End Sub
关键说明
- 若偏好纯文本邮件,将
HTMLBody替换为Body,内容格式改用vbCrLf换行构建纯文本列表。 Nz(rs!RequestTitle, "无标题")用于处理字段为空的场景,避免邮件内容报错。- 末尾的清空勾选状态逻辑,可根据业务需求选择是否保留。
内容的提问来源于stack exchange,提问作者CaptScott
相关产品推荐
相关产品推荐

