如果olMail.Body = str1 + str2,请更改olMail.Body字体名称和字体大小

时间:2018-05-11 06:33:05

标签: vba excel-vba excel

这是我的代码。

Dim str1 As String
Dim str2 As String
Dim str3 As String
Dim str4 As String

Dim olApp As Outlook.Application
Set olApp = CreateObject("Outlook.Application")

Dim olMail As Outlook.MailItem
Set olMail = olApp.CreateItem(olMailItem)

olMail.To = reviewer_email_id
olMail.Subject = "Task for Review"
olMail.BodyFormat = olFormatHTML
str1 = "Dear Mr. " & reviewer & ", " & vbNewLine & vbNewLine & "Please see below details for review (Workbook attached)." & vbNewLine & vbNewLine
str2 = "Task : " & title & vbNewLine & "Location : " & document_location & vbNewLine & "Start Date : " & start_date & vbNewLine & "End Date : " & end_date & vbNewLine & vbNewLine
str3 = "Await your Feedback." & vbNewLine & vbNewLine
str4 = "Regards " & vbNewLine & assigned_to
olMail.HTMLBody = "<BODY style=font-size:10pt;font-family:Verdana>str1 + str2 + str3 + str4</BODY>"

olMail.send

发送此电子邮件时,它会输出 str1 + str2 + str3 + str4 作为大小为10的Verdana字体的输出。当我删除正文标记并更改olMail.HTMLBody时到olMail.Body,它打印str1,str2,str3&amp;的值。 str4但没有更多的字体大小和家庭变化。

我想打印存储在str1,str2,str3和amp;中的值。 str4,不是变量名,但也想改变font-family和size。

是否可以更改olMail.Body的字体大小和字体系列?

我使用&连接的变量是我从excel表中获得的值。它完美地工作正常。只想将font-size和font-family分别更改为10和Verdana。 感谢。

1 个答案:

答案 0 :(得分:1)

问题是由于不将变量放在双引号之外来获取它们的值。

输入:

"<tag>str1 + str2</tag>"

输出:

<tag>str1 + str2</tag>

为了在邮件正文中获取变量(str1,str2,...)的值并保持格式化,您必须这样做:

Dim str1 as String, str2 as string, str3 as String, str4 as String

str1 = "value1 "
str2 = "value2 "
str3 = "value3 "
str4 = "value4"

olMail.HTMLBody = "<BODY style=font-size:10pt;font-family:Verdana>" & str1 + str2 + str3 + str4 & "</BODY>"

将产生:

<BODY style=font-size:10pt;font-family:Verdana>value1 value2 value3 value4</BODY>

在Win10和Outlook 2016上测试过。