You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

开发Outlook VBA宏:将原收件人移至抄送并添加新收件人

Outlook VBA宏:转移原收件人至抄送并添加新收件人

以下是实现需求的完整VBA代码,包含关键逻辑优化和格式修正:

Option Explicit

Sub ReplyWithRecipientsMovedToCC()
    Dim olItem As Outlook.MailItem
    Dim olReply As Outlook.MailItem
    Dim olRecip As Outlook.Recipient
    Dim originalRecip As Outlook.Recipient
    Dim newRecipients As Variant
    Dim pickupDate As String
    
    ' 定义需要添加的两位新收件人邮箱
    newRecipients = Array("Joesmith@gmail.com", "Janedoe@company.com")
    
    ' 格式化次日取件日期为易读格式
    pickupDate = Format(Date + 1, "dddd, mmm d yyyy")
    
    For Each olItem In Application.ActiveExplorer.Selection
        ' 仅处理邮件类型项
        If olItem.Class = olMail Then
            ' 创建基础回复邮件(初始默认发给原发件人)
            Set olReply = olItem.Reply
            
            ' 清空默认收件人(若需保留原发件人,删除此行)
            olReply.To = ""
            
            ' 添加两位新收件人至收件人(To)栏
            Dim newRecip As Variant
            For Each newRecip In newRecipients
                Set olRecip = olReply.Recipients.Add(newRecip)
                olRecip.Type = olTo
            Next newRecip
            
            ' 将原邮件所有收件人(To/CC)转移至抄送(CC)栏
            For Each originalRecip In olItem.Recipients
                Set olRecip = olReply.Recipients.Add(originalRecip.Address)
                olRecip.Type = olCC
                olRecip.Name = originalRecip.Name ' 保留原收件人显示名称
            Next originalRecip
            
            ' 拼接邮件正文,使用HTML换行保证格式正确
            olReply.HTMLBody = "Hi, This customer would like to request a pickup on " & pickupDate & "<br><br>" & olReply.HTMLBody
            
            ' 显示邮件(如需自动发送,替换为olReply.Send)
            olReply.Display
        End If
    Next olItem
End Sub

核心逻辑说明

  • 原收件人转移:遍历原邮件的Recipients集合,将所有收件人(无论原To/CC类型)统一添加到回复邮件的CC栏,同时保留原显示名称。
  • 新收件人添加:通过数组批量定义新收件人,循环添加到回复邮件的To栏,方便后续修改。
  • 正文格式修复:将原代码中的vbCrLf替换为HTML标签<br>,解决纯文本换行在HTML邮件中失效的问题。
  • 错误防护:增加邮件类型校验,避免选中日历、任务等非邮件项时触发错误。

自定义调整指南

  1. 修改newRecipients数组中的邮箱地址为实际需要的收件人。
  2. 若需要保留原邮件发件人在To栏,删除olReply.To = ""语句。
  3. 若无需预览直接发送邮件,将olReply.Display替换为olReply.Send(建议先测试确认逻辑无误)。

内容的提问来源于stack exchange,提问作者FalconWing 1813

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 12:55:31