Excel 在VBA中更改HTML电子邮件正文字体类型和大小

Excel 在VBA中更改HTML电子邮件正文字体类型和大小,excel,vba,outlook,Excel,Vba,Outlook,我有一个VBA脚本,当在给定的工作表中按下VBA按钮时,它会生成并发送电子邮件 该脚本当前以相对较小的字体生成电子邮件。我想知道是否有办法将字体设置为Calibri,文本设置为11 以下是当前的VBA脚本: Private Sub CommandButton1_Click() Dim OutApp As Object Dim OutMail As Object Dim strbody As String Dim strUser As String Dim signature As String

我有一个VBA脚本,当在给定的工作表中按下VBA按钮时,它会生成并发送电子邮件

该脚本当前以相对较小的字体生成电子邮件。我想知道是否有办法将字体设置为Calibri,文本设置为11

以下是当前的VBA脚本:

Private Sub CommandButton1_Click()

Dim OutApp As Object
Dim OutMail As Object
Dim strbody As String
Dim strUser As String
Dim signature As String
Dim sTo As String
Dim sCC As String
    'For To field
    Set emailRng = Worksheets("Send Email").Range("D3:I6")

    For Each cl In emailRng
        sTo = sTo & ";" & cl.Value
    Next

    sTo = Mid(sTo, 2)

    'For CC field
    Set emailRngCC = Worksheets("Send Email").Range("D8:I11")

    For Each cl In emailRngCC
        sCC = sCC & ";" & cl.Value
    Next

    sCC = Mid(sCC, 2)


Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
    With OutMail
    .Display
    End With
        signature = OutMail.HTMLBody


    strbody = "<FONT SIZE = 3>Good Morning;<p>We have completed our main aliasing process for today.  All assigned firms are complete.  Please feel free to respond with any questions.<p>Thank you."

    With OutMail
        .SentOnBehalfOfName = ""
        .To = sTo
        .CC = sCC
        .BCC = ""
        .Subject = "Data Morning Alias Process - COMPLETE"
        .HTMLBody = strbody & signature
        .Display
    End With
End Sub
Private子命令按钮1\u单击()
Dim OutApp作为对象
将邮件变暗为对象
像弦一样暗的链子
像弦一样的暗弦
作为字符串的数字签名
将sTo设置为字符串
将sCC设置为字符串
“去田里吧
设置emailRng=工作表(“发送电子邮件”)。范围(“D3:I6”)
对于emailRng中的每个cl
sTo=sTo&“;”和cl.值
下一个
sTo=Mid(sTo,2)
'对于CC字段
设置emailRngCC=工作表(“发送电子邮件”)。范围(“D8:I11”)
对于emailRngCC中的每个cl
sCC=sCC&“;”和cl.值
下一个
sCC=Mid(sCC,2)
Set-OutApp=CreateObject(“Outlook.Application”)
Set-OutMail=OutApp.CreateItem(0)
发邮件
.展示
以
签名=OutMail.HTMLBody
strbody=“早上好;我们已经完成了今天的主要别名流程。所有指定的公司都已完成。请随时回答任何问题。谢谢。”
发邮件
.SentonBehalfName=“”
.To=sTo
.CC=sCC
.BCC=“”
.Subject=“数据处理-完成”
.HTMLBody=strbody和签名
.展示
以
端接头
我知道这部分代码:

strbody = "<FONT SIZE = 3.5>Good Morning;<p>We have completed our main aliasing
strbody=“早上好;我们已经完成了主要的别名设置
是与电子邮件正文文本大小相关的部分。但是设置3太小了,设置4太大了。所以我想知道是否有办法将字体设置为11,并将文本格式化为Calibri


谢谢!

我做了一些研究,能够编写以下代码:

strbody = "<BODY style=font-size:11pt;font-family:Calibri>Good Morning;<p>We have completed our main aliasing process for today.  All assigned firms are complete.  Please feel free to respond with any questions.<p>Thank you.</BODY>"
strbody=“早上好 我们已经完成了今天的主要别名处理。所有指定的公司都已完成。请随时回答任何问题。谢谢。”
显然,通过设置
“font size=11pt”
而不是设置字体大小
, 它允许您像通常在文本编辑器中那样选择特定的字体大小,而不是像我的代码最初那样从1-7中选择一个值


这篇来自simpLE MAn的给了我一些很好的信息。

仅供参考,我也做了一些研究,如果您要应用的字体系列的名称包含空格(例如Gill Alt One MT Light),您应该这样写:

strbody= "<BODY style=" & Chr(34) & "font-family:Gill Alt One MT Light" & Chr(34) & ">" & YOUR_TEXT & "</BODY>"
strbody=”“&您的文本(&U)

设置不同大小和样式的文本,以及单元格中文本的大小和样式(带范围)

Sub-EmailManuellAbsenden()
Dim ghApp作为对象
作为字符串的Dim ghOldBody
作为字符串的新主体
Set ghApp=CreateObject(“Outlook.Application”)
使用ghApp.CreateItem(0)
.To=范围(“B2”)
.CC=范围(“B3”)
.主题=范围(“B4”)
.GetInspector.Display
ghOldBody=.htmlBody
ghNewBody=”“&_
“Arial文本14”和_
范围(“B5”)和“
”和_ 范围(“B6”)&_ “西勒21”& 范围(“B5”) .htmlBody=ghNewBody和ghOldBody 以 端接头 '在B2至B6中填入一些测试用字母 ““”=适用于所有范围对象
如果它是HTML,它可能是这样的:
这是一些文本!

我从中获取了这个。虽然“.”似乎没有被考虑在内,所以
font size=“5”
=
font size=“5.1”
=
font size=“5.9”
这可能是您想要的,从:

这是一些文字

谢谢你的帮助,我查看了你发布的网站,它为我在谷歌上搜索什么提供了基础。
Sub EmailManuellAbsenden()

Dim ghApp As Object
Dim ghOldBody As String
Dim ghNewBody As String

Set ghApp = CreateObject("Outlook.Application")
With ghApp.CreateItem(0)
.To = Range("B2")
.CC = Range("B3")
.Subject = Range("B4")
.GetInspector.Display
 ghOldBody = .htmlBody

 ghNewBody = "<font style=""font-family: Calibri; font-size: 11pt;""/font>" & _
 "<font style=""font-family: Arial; font-size: 14pt;"">Arial Text 14</font>" & _
 Range("B5") & "<br>" & _
 Range("B6") & "<br>" & _
 "<font style=""font-family: Chiller; font-size: 21pt;"">Ciller 21</font>" &
 Range("B5")
 .htmlBody = ghNewBody & ghOldBody

 End With

End Sub
'Fill B2 to B6 with some letters for testing
'"<font style=""font-family: Calibri; font-size: 15pt;""/font>" = works for all Range Objekts