在VBA生成的电子邮件中签名之前删除空行

时间:2019-06-21 16:36:24

标签: vba outlook

我有一个用于创建电子邮件的宏,当它添加签名时,它还会在其前面添加3行间距(在打开新电子邮件时为默认)。 我尝试了各种替换和修整解决方案,但没有用。代码的相关部分是这样的:

 Set objEmail = app_Outlook.CreateItem(olMailItem)

        Dim signature As String


        strSalutation = "<html><head></head><body>" & sGreeting & " " & Sheets("Tabelle2").Cells(i, 5) & "," & "</body></html>"

        objEmail.SentOnBehalfOfName = "address@mail.com"

        objEmail.Display

        objEmail.To = sEmail_Address

        objEmail.Subject = sTitle

       sSignature = Replace(objEmail.HTMLBody, Chr(13), "")

        objEmail.HTMLBody = strSalutation & "<p>" & sTemplate & objEmail.HTMLBody

也许值得一提的是,我需要在任何人的笔记本电脑上工作,而不仅仅是用我的签名。

3 个答案:

答案 0 :(得分:0)

在上面的示例代码中:

 trSalutation = "<html><head></head><body>" & sGreeting & " " & Sheets("Tabelle2").Cells(i, 5) & "," & "</body></html>"
 ...
 objEmail.HTMLBody = strSalutation & "<p>" & sTemplate & objEmail.HTMLBody

在关闭</html>标签之后,您添加了一个新的HTML元素。

相反,您需要将称呼内容粘贴到<body></body>元素中。结果,您将获得格式正确的HTML字符串。

答案 1 :(得分:0)

您可以使用样式删除边距,如下所示:

"<html><head><style>p{margin-top:0;margin-bottom:0;}</style></head><body>"

答案 2 :(得分:0)

您可以尝试以下方法:

sSignature = Replace(objEmail.HTMLBody, "<p class=MsoNormal><o:p>&nbsp;</o:p></p>", "")