【问题标题】:Retain original paragraph spacing with HTMLbody使用 HTMLbody 保留原始段落间距
【发布时间】:2019-10-21 10:50:41
【问题描述】:

Sub ColdEmail()

Dim OutLookApp As Object
Dim OutLookMailItem As Object
Dim lastrow As Long
Dim iCounter As Long
Dim MailDest As String
Dim subj As String
Dim bod As String
Dim ws As Worksheet
Dim signature As String

lastrow = ThisWorkbook.Worksheets("Prospects").Cells(Rows.Count, "D").End(xlUp).Row 'change worksheet

For iCounter = 2 To lastrow

    Set OutLookApp = CreateObject("Outlook.application")
    Set OutLookMailItem = OutLookApp.CreateItem(0)

     signature = Environ("appdata") & "\Microsoft\Signatures\"
    If Dir(signature, vbDirectory) <> vbNullString Then
        signature = signature & Dir$(signature & "*.htm")
    Else:
        signature = ""
    End If
    signature = CreateObject("Scripting.FileSystemObject").GetFile(signature).OpenAsTextStream(1, -2).ReadAll

    With OutLookMailItem

        subj = ""
        MailDest = ""
        bod = ""

        If Cells(iCounter, 13) = "*" Then

            subj = Cells(iCounter, 14).Value
            MailDest = Cells(iCounter, 7).Value
            bod = Cells(iCounter, 16).Value

            .BCC = MailDest
            .Subject = subj
            .HTMLBody = bod & signature
            .Send
        End If

    End With



Next iCounter

End Sub

上面的代码自动将电子邮件发送到一列电子邮件地址,并从 Excel 中的一列中获取正文段落。

我希望我的邮件在 Outlook 中包含我的默认签名,因此我将代码更改为 HTMLbody。

发出的邮件不保留原来的段落间距:

line 1

line 2

line 3

现在看起来像这样:line1 line2 line3

【问题讨论】:

    标签: html excel outlook vba


    【解决方案1】:

    我会赞同 Scott Holtzman 关于阅读 HTML 的建议。每当我需要在电子邮件中进行 HTML 格式化时,我发现&lt;br&gt; 是最直接的选项。使用&lt;br&gt; 会将文本移动到下一行。要创建空白,(例如,段落之间的空行)使用&lt;br&gt;&lt;br&gt;

    您可以将其放入文本所在的单元格中。括号会将其标记为 HTML,并将在电子邮件中呈现为中断而不是可读文本。

    换句话说:Thanks,&lt;br&gt;Cthulhu 在您的 Excel 单元格中,将呈现为
    “谢谢,
    克苏鲁”
    在您的电子邮件中。

    【讨论】:

      【解决方案2】:

      阅读coding HTML 对您很有帮助。

      目前,您可以这样做:

      要加载默认签名(已在 Outlook 中设置),您可以执行以下操作(并删除您的代码以获取签名):

      With OutLookMailItem
           .Display
           signature = .HTMLBody
           ....
      

      要格式化正文的 HTML,您可以执行以下操作:

      'change font info as needed
      bod = "<BODY style=font-size:12pt font-family:Times New Roman font-color:blue>" _
            & "<p>" & Cells(iCounter, 16).Value & "</p>" _
            & "</BODY>" _
            & signature
      

      【讨论】:

      • 电子邮件使用.BCC正确发送
      • 我尝试了这个编辑,但我的电子邮件仍然没有保留原来的间距 - line1line2line3
      • 原来的间距?我很困惑,因为你只设置了一个细胞的身体?此单元格中是否有回车符来创建间距?
      • 是的,我是 vba 新手,所以我从一个单元格设置我的整个段落。我不知道回车是什么
      • 你能把你的“一个单元格中的整个段落”的屏幕截图贴出来吗?当您在一个单元格中制作段落(创建回车)时,您是否按Ctrl+Enter
      猜你喜欢
      • 2019-09-27
      • 2021-11-22
      • 2016-01-22
      • 1970-01-01
      • 1970-01-01
      • 2011-03-08
      • 2017-05-06
      • 2016-03-05
      • 1970-01-01
      相关资源
      最近更新 更多