邮件中的VBA动态HTML正文

时间:2019-08-28 12:37:52

标签: excel vba outlook

我正在使用VBA创建一些邮件模板。想法是将所有模板都放在Excel文档中,每个人都可以在其中轻松更改并添加更多模板。这些人将无法访问VBA代码,因此所有内容都可以从此处读取。

我想将其作为HTML正文来包含签名并设置文本格式,这就是问题所在。

此代码工作正常,这是我要重新创建的布局:

Sub Stackoverflow1()
Set objOutlook = CreateObject("Outlook.Application")
Set objOutlookMsg = objOutlook.CreateItem(olMailItem)
With objOutlookMsg
    .To = "Dennis@Stackoverflow.com"
    .Subject = "MAIL TEST"
    .Display
    .HTMLBody = "<p style='font-family:arial;font-size:13'>" & _
    "Hi" & "<br>" & "<br>" & _
    "TEST TEST TEST TEST" & _
    .HTMLBody
    .Display
End With
End Sub

cell(2,1)是以下字符串:

"Hi" & "<br>" & "<br>" & "TEST TEST TEST TEST" & 

我要按以下方式将其输入到Outlook邮件中:

Sub Stackoverflow2()
StrTEST = Worksheets("Sheet1").Cells(2, 1)                              '<----------------

Set objOutlook = CreateObject("Outlook.Application")
Set objOutlookMsg = objOutlook.CreateItem(olMailItem)
With objOutlookMsg
    .To = "Dennis@Stackoverflow.com"
    .Subject = "MAIL TEST"
    .Display
    .HTMLBody = "<p style='font-family:arial;font-size:13'>" & _
     StrTEST _                                                         '<----------------
    .HTMLBody 
    .Display
End With
End Sub

即使“文本”在技术上是相同的,它显然也不起作用,并且我得到对象必需的错误。有谁知道如何使以上工作而不是将其读取为字符串?

1 个答案:

答案 0 :(得分:0)

我通过将&从单元格中的字符串移动到实际代码并在其中移动一些代码来使其工作。对于字符串,请删除“,然后仅包含
(不带空格)进行换行。

Cell(2,1) = Hi <br> <br> TEST TEST TEST TEST

Sub Stackoverflow3()
StrTEST = Worksheets("Sheet1").Cells(2, 1)

Set objOutlook = CreateObject("Outlook.Application")
Set objOutlookMsg = objOutlook.CreateItem(olMailItem)
With objOutlookMsg
    .To = "Dennis@Stackoverflow.com"
    .Subject = "MAIL TEST"
    .Display
    .HTMLBody = "<p style='font-family:arial;font-size:13'>" & StrTEST & .HTMLBody
    .Display
End With
End Sub