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

如何在Outlook宏生成的邮件中替换[NAME]和[REPORT]占位符?

替换Outlook模板邮件中的占位符

刚好处理过类似的需求,其实实现起来很简单——你只需要在调用msg.Display显示邮件之前,对模板生成的邮件正文执行字符串替换操作,把[NAME]和[REPORT]占位符替换成InputBox获取的内容就行。

修改后的完整宏代码

Sub Governance_Email()
 Dim UserName, ReportName, msg_1, msg_2, Title, Default
 Default = "1"
 Title = "Email Form"
 msg_1 = "Enter User"
 msg_2 = "Enter Report Name"
 UserName = InputBox(msg_1, Title, Default)
 ReportName = InputBox(msg_2, Title, Default)
 
 ' 增加判断,避免用户取消输入导致内容缺失
 If UserName = "" Or ReportName = "" Then
    MsgBox "请输入完整的用户和报告名称哦!", vbExclamation
    Exit Sub
 End If
 
 Set msg = Application.CreateItemFromTemplate("<path_to_file>\template_addDescription.oft")
 
 ' 替换纯文本正文里的占位符
 msg.Body = Replace(Replace(msg.Body, "[NAME]", UserName), "[REPORT]", ReportName)
 
 ' 如果你的模板是HTML格式(带排版、图片等),请注释上面的Body行,取消下面这行注释
 ' msg.HTMLBody = Replace(Replace(msg.HTMLBody, "[NAME]", UserName), "[REPORT]", ReportName)
 
 msg.Display
End Sub

关键细节说明

  • 嵌套Replace函数:用两次嵌套的Replace函数,先把正文里的[NAME]替换成UserName,再把结果里的[REPORT]替换成ReportName,一步完成两个占位符的替换。
  • 选对正文属性:
    • 如果你的模板是纯文本格式,直接用msg.Body修改就行;
    • 如果模板是HTML格式(比如有字体样式、图片、表格),一定要用msg.HTMLBody来替换,不然会破坏原有的HTML结构,导致格式错乱。
  • 路径注意事项:记得把<path_to_file>替换成你的oft模板的实际路径,比如"C:\My Outlook Templates\template_addDescription.oft",路径里有空格也没关系,直接写在字符串里就行。

这样调整后,你的宏就能自动把用户输入的内容填充到模板的对应位置啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 16:32:49