Outlook VBA宏优化:如何从输入邮箱提取名填充邮件模板
实现自动从邮箱提取FirstName填充邮件正文的VBA方案
当然可以搞定这个需求!我帮你调整VBA代码,让它先弹出输入框让你输入收件人邮箱,自动提取FirstName、填充邮件正文,还能直接把收件人添加到邮件的「收件人」栏里,彻底省去手动操作的麻烦。
修改后的完整代码如下:
Sub QuickAttachementTemplateWithAutoFill() Dim recipientEmail As String Dim firstName As String Dim temp As MailItem ' 弹出输入框让用户输入收件人邮箱 recipientEmail = InputBox("请输入收件人邮箱地址:", "输入邮箱", "FirstName.LastName@company.com") ' 判断用户是否取消输入 If recipientEmail = "" Then Exit Sub ' 从邮箱地址中提取FirstName(拆分@前的部分,取第一个点号前的内容) firstName = Split(Split(recipientEmail, "@")(0), ".")(0) ' 打开邮件模板 Set temp = Application.CreateItemFromTemplate("C:\Users\WillacyMe\AppData\Roaming\Microsoft\Templates\AttachmentTemplate.oft") ' 设置收件人 temp.To = recipientEmail ' 填充邮件正文(保持你需要的格式) temp.Body = "致 " & firstName & vbCrLf & _ "请查收附件。" & vbCrLf & _ "此致," & vbCrLf & _ "WillacyMe" ' 显示邮件 temp.Display Set temp = Nothing End Sub
代码说明:
- 输入邮箱:用
InputBox弹出输入框,引导你输入收件人邮箱,默认提示格式帮你快速回忆正确写法。 - 提取FirstName:通过
Split函数先拆分邮箱的@部分,再拆分.部分,直接拿到FirstName。 - 自动填充:把提取到的FirstName插入到正文的对应位置,同时自动把邮箱添加到收件人栏。
- 格式保留:用
vbCrLf来实现换行,确保正文和你想要的格式完全一致。
使用注意:
- 把原来的
QuickAttachementTemplate宏替换成上面的代码即可。 - 如果你的模板本身已经有正文内容,代码里的
temp.Body会覆盖原有内容;如果想保留模板里的其他格式,可以改用temp.HTMLBody来编写带格式的正文(比如用<br>代替vbCrLf)。
测试的时候,输入类似John.Doe@company.com的邮箱,邮件会自动填充收件人,正文里的「致 John」也会自动生成,直接添加附件就能发送啦!
内容的提问来源于stack exchange,提问作者WillacyMe
相关产品推荐
相关产品推荐

