VBA Excel电子邮件格式问题

时间:2018-08-01 13:13:15

标签: html excel vba excel-vba outlook

我的数据设置如下:

-在Excel上,我有一个工作表“ Test1”,其中包含要向其发送电子邮件的人员的列表。像这样;

No.    Version  Company  Name    Email
 1       R         x     Max     max@abc.com
 2       E         y     Bill    bill@abc.com
 3       C         z     Scott   scott@abc.com

我要发送的电子邮件类型有所不同。我当前的代码如下:

Sub mailTest()

Dim olApp As Outlook.Application
Dim olMail As Outlook.MailItem

For i = 2 To 3

   Set olApp = New Outlook.Application
   Set olMail = olApp.CreateItem(olMailItem)

    mailBody = Worksheets("BODY").Cells(1, 1).Value & Worksheets("Test1").Cells(i, 4) _
 & Worksheets("BODY").Cells(2, 1).Value



   With olMail
       .To = Worksheets("Test1").Cells(i, 5).Value
       .Subject = Worksheets("Test1").Cells(i, 3).Value
       .HTMLBody = mailBody
       .Display

End With


   Set olMail = Nothing
   Set olApp = Nothing

Next



End Sub

上面的代码显示电子邮件,因为主体位于工作表“ BODY”的单元格A2中。 “ Hello”存储在单元格A1中,并且由于在这两个单元格中都有HTML编码以将字体设置为Calibri并将大小设置为3,因此显示也很好。

问题是,当我使用代码从第4列的工作表Test1中提取人员姓名时;

 & Worksheets("Test1").Cells(i, 4)

它以不同的字体显示,默认为Times New Roman。我剩下的是Calibri中显示的所有内容,而在Times New Roman中只是拉了他们的名字。

是否可以解决此问题而无需在每个名称单元中添加HTML代码?我正在处理的实际文件大约有500个名称,因此手动操作会很麻烦...

谢谢大家。

1 个答案:

答案 0 :(得分:1)

尝试替换

.HTMLBody = mailBody

使用

.HTMLBody = "<!DOCTYPE html><html><head><style>"
.HTMLBody = .HTMLBody & "body{font-family: Calibri, ""Times New Roman"", sans-serif}"
.HTMLBody = .HTMLBody & "</style></head><body>"    
.HTMLBody = .HTMLBody & mailBody & "</body></html>
相关问题