Excel VBA生成HTML邮件时,无法将“Site”设为红色且标签显示为字符串
解决VBA邮件中HTML标签不生效、无法设置字体颜色的问题
- 问题核心:你添加HTML标签后显示成纯字符串,是因为邮件默认使用纯文本格式,未启用HTML渲染。必须将邮件对象的格式切换为HTML,同时用
HTMLBody属性替代Body属性传递内容。 - 具体修改方案:
- 给邮件对象添加格式设置:
objMail.BodyFormat = olFormatHTML(针对Outlook的MailItem对象) - 重构内容拼接逻辑,用HTML换行标签
<br>替换vbCrLf,给“Site”套上红色字体的HTML标签 - 将拼接好的HTML内容赋值给
objMail.HTMLBody,而非原有的Body属性
- 给邮件对象添加格式设置:
修改后的代码片段示例:
For Each emailAdress In emailInformation Set colLines = emailInformation(emailAdress) sBodyInfo = "" For Each line In colLines sBodyInfo = sBodyInfo & _ "Appareil : " & line.appareil & "<br>" & _ "<span style=""color:red;"">Site</span> : " & line.site & "<br>" & _ Next line ' 假设objMail是你的Outlook邮件实例 Set objMail = Outlook.CreateItem(olMailItem) objMail.BodyFormat = olFormatHTML ' 关键:开启HTML格式 objMail.HTMLBody = sBodyInfo ' 用HTMLBody传递内容 ' 补充邮件其他设置 objMail.To = emailAdress objMail.Subject = "你的邮件主题" objMail.Display ' 或objMail.Send直接发送 Next emailAdress
- 注意事项:
- VBA中字符串内的双引号需要转义,所以HTML样式里的引号要写成
"" - 原有纯文本格式的内容需全部转换为HTML兼容格式,比如段落可用
<p>标签包裹 - 若在Excel等非Outlook软件中编写VBA,需提前引用Outlook对象库
- VBA中字符串内的双引号需要转义,所以HTML样式里的引号要写成
内容的提问来源于stack exchange,提问作者Jena Alissa
相关产品推荐
相关产品推荐

