求助:在VBA批量Outlook邮件中添加称呼及多行正文
解决批量邮件添加个性化问候与多行正文的VBA修改方案
没问题,我帮你调整了VBA代码,既能给邮件开头加上带客户姓名的个性化问候,也能让正文分成多行显示,完美适配你的Excel批量发邮件需求:
修改后的完整代码
Sub Send_email_fromexcel() Dim edress As String Dim subj As String Dim message As String Dim filename As String Dim outlookapp As Object Dim outlookmailitem As Object Dim myAttachments As Object Dim path As String Dim lastrow As Integer Dim attachment As String Dim x As Integer ' 新增变量存储客户姓名 Dim custName As String x = 2 Do While Sheet1.Cells(x, 1) <> "" Set outlookapp = CreateObject("Outlook.Application") Set outlookmailitem = outlookapp.createitem(0) Set myAttachments = outlookmailitem.Attachments path = "" edress = Sheet1.Cells(x, 1) subj = Sheet1.Cells(x, 2) filename = Sheet1.Cells(x, 3) ' 从Excel第四列(D列)读取客户姓名,若你的姓名列不是D列,修改这里的数字4即可 custName = Sheet1.Cells(x, 4) attachment = path + filename outlookmailitem.To = edress outlookmailitem.cc = "" outlookmailitem.bcc = "" outlookmailitem.Subject = subj ' --- 核心修改:个性化问候+多行正文 --- outlookmailitem.body = custName & "您好," & vbCrLf & vbCrLf & _ "请查收附件中的对账单。" & vbCrLf & _ "烦请核对清单内容并予以确认,如有任何问题请随时联系我们。" ' --- 核心修改结束 --- myAttachments.Add (attachment) outlookmailitem.display ' 测试时用display,确认没问题后改成outlookmailitem.send lastrow = lastrow + 1 edress = "" x = x + 1 Loop Set outlookapp = Nothing Set outlookmailitem = Nothing End Sub
关键改动说明
- 新增客户姓名读取:添加了
custName变量,从Excel第四列(D列)读取客户姓名,你可以根据自己的表格结构修改列号(比如姓名在E列就改成Sheet1.Cells(x, 5)) - 个性化问候开头:正文开头拼接了
custName & "您好,",实现每个邮件的专属问候 - 多行正文排版:用
vbCrLf(VBA里的换行符)来拆分段落,vbCrLf & vbCrLf可以实现段落之间的空行,让邮件排版更清晰 - 修正原代码语法错误:原代码里的字符串拼接写法有误,现在调整为正确的VBA字符串连接格式,确保换行符生效
额外提示
如果你的Excel表格里暂时没有客户姓名列,建议新增一列单独存储,这样比从邮箱地址提取姓名更准确。如果必须从邮箱提取(比如邮箱前缀是姓名),可以留言我再帮你调整这部分逻辑。
内容的提问来源于stack exchange,提问作者Vinay Chandrashekhar
相关产品推荐
相关产品推荐

