从MS Access表单自动填充Outlook邮件的相关问题求助
修复后完整VBA代码
Private Sub Command20_Click() Dim LastName As Variant Dim Email As Variant Dim Notes As Variant Dim Insurer As Variant Dim Premium As Variant Dim RenewalDate As Date Dim objOutlook As Object Dim objEmail As Object ' 读取表单所有字段值,补充缺失的RenewalDate赋值 LastName = Forms("ClientListfrm").LastName Email = Forms("ClientListfrm").EmailAddress Notes = Forms("ClientListfrm").Notes Insurer = Forms("ClientListfrm").Insurer Premium = Forms("ClientListfrm").Premium RenewalDate = Forms("ClientListfrm").RenewalDate Set objOutlook = CreateObject("Outlook.Application") Set objEmail = objOutlook.CreateItem(0) With objEmail .To = Email .Subject = "transfer " & LastName & " from James" ' 每个字段后加HTML换行标签<br>,同时格式化日期 .HTMLBody = Insurer & "<br>" & _ Premium & "<br>" & _ Format(RenewalDate, "yyyy-mm-dd") & "<br>" & _ Notes .Display ' 替换原.Send方法,弹出预览窗口 End With Set objEmail = Nothing Set objOutlook = Nothing End Sub
修复说明
- 取消自动发送:将原代码中的
.Send方法替换为.Display,Outlook会直接弹出邮件编辑窗口,用户确认内容后可手动点击发送。 - HTMLBody字段换行:由于使用的是
HTMLBody属性,内容遵循HTML语法规则,换行需要使用<br>标签,在每个字段拼接时追加该标签即可实现每个字段单独占一行。 - RenewalDate显示异常:原代码仅声明了
RenewalDate变量,未从表单中读取对应值,导致变量为默认初始值,出现异常时间格式。补充从表单读取该字段的赋值语句,同时使用Format()函数对日期做标准化格式化,确保显示效果和表单一致。
内容的提问来源于stack exchange,提问作者James
相关产品推荐
相关产品推荐

