利用Outlook日历自动发送邮件的技术问题咨询
Outlook 2016 日历约会自动发邮件VBA宏优化方案
针对你遇到的两个问题,以下是修改后的宏代码及解决方案说明:
修改后的完整VBA代码
Private WithEvents olRemind As Outlook.Reminders Dim strSubject As String Private Sub Application_Reminder(ByVal Item As Object) Set olRemind = Outlook.Reminders '仅处理日历约会项 If Item.MessageClass <> "IPM.Appointment" Then Exit Sub End If '仅处理标记为"Send Message"分类的约会 If Item.Categories <> "Send Message" Then Exit Sub End If strSubject = Item.Subject Dim objMsg As MailItem Set objMsg = Application.CreateItem(olMailItem) objMsg.To = Item.Location objMsg.BCC = "" objMsg.Subject = strSubject '问题1修复:同步带格式的正文 objMsg.HTMLBody = Item.HTMLBody '问题2修复:复制约会中的附件到邮件 Dim objAttachment As Attachment For Each objAttachment In Item.Attachments objAttachment.CopyTo objMsg.Attachments Next objAttachment objMsg.Send 'objMsg.Display '如需预览可取消注释 Set objMsg = Nothing Set objAttachment = Nothing End Sub Private Sub olRemind_BeforeReminderShow(Cancel As Boolean) For Each objRem In olRemind If objRem.Caption = strSubject Then If objRem.IsVisible Then objRem.Dismiss Cancel = True End If Exit For End If Next objRem End Sub
问题解决说明
1. 同步日历约会的正文格式
原代码使用Item.Body只能获取纯文本内容,所有格式信息会丢失。改用Item.HTMLBody可以直接获取约会正文的HTML格式代码,将其赋值给邮件的HTMLBody属性后,就能完整保留高亮、下划线、文字颜色等样式。
如果邮件中仍存在格式显示异常,可检查约会正文是否使用了Outlook专属的样式标签,必要时可以手动调整约会内的格式(比如避免使用过于特殊的自定义样式)。
2. 直接引用日历约会的附件
移除原代码中硬编码的本地文件路径,通过遍历Item.Attachments集合,将约会中的所有附件逐个复制到邮件的附件列表中。这种方式无需依赖本地固定路径,只要约会中添加了附件,宏就会自动同步到邮件里。
内容的提问来源于stack exchange,提问作者Robl
相关产品推荐
相关产品推荐

