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

VBA生成Outlook邮件如何统一设置字体为Calibri 11号

故障原因

现有代码直接给.HTMLBody传入无样式的纯文本加换行标签,没有显式定义全文的字体、字号规则;同时代码拼接了Outlook新建空白邮件时自动生成的默认.HTMLBody内容,这部分自带Outlook默认配置的Verdana 10号字体样式,会覆盖未指定样式的正文内容,最终出现前后内容格式不统一的问题。

修改方案

给所有正文内容套一层行内样式,显式指定Calibri 11号字体即可。注意Outlook使用Word内核渲染邮件HTML,仅支持标签行内样式,不识别<head>内写的全局CSS规则。

修改后的完整代码如下:

Sub mail_outlook()

Dim OutApp As Object 
Dim OutMail As Object 

Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)

With OutMail 
    .SentOnBehalfOfName = "xxxxxxxxxxxx"
    .Display 

    .To = "xxxxxxxxxxxxxxxxxx"
    ' 给全文套上行内样式指定字体字号,覆盖默认样式规则
    .HTMLBody = "<div style='font-family: Calibri; font-size: 11pt;'>" & _
                "Hello, <br><br>" & _
                "Please find in attachment the Report.<br>" & _
                "We remain available should you have any questions." & _
                "</div>" & .HTMLBody
    .CC = "xxxxxxxxxxxxxxx"
    .BCC = "" 
    .Subject = "Report"
    
End With 

Set OutMail = Nothing 
Set OutApp = Nothing

End Sub
注意事项
  • 字号必须带pt单位,Outlook对无单位的字号值解析存在偏差,会出现字号不符合预期的问题
  • 如果不需要自动加载Outlook默认邮件签名,直接删除.HTMLBody赋值语句末尾拼接的& .HTMLBody即可
  • 不要尝试通过<style>标签写全局CSS控制样式,Outlook的渲染内核对此类写法兼容性极差,大概率不生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 12:48:21