VBA:如何在Outlook电子邮件中设置单行间距?

时间:2012-07-30 09:06:55

标签: vba email outlook spacing

我正在Excel中创建一封电子邮件。电子邮件创建后,我需要在顶部添加一两条评论。我已经弄清楚如何设置字体样式,但Outlook在Carriage Return上添加了一个双线空间,我真的不想要。我怎么能改变这个?

以下代码:

Sub CreateDailyEmail()

    Dim oApp As Object
    Dim oMail As Object

    Set oApp = CreateObject("Outlook.Application")
    Set oMail = oApp.CreateItem(0)

    With oMail
        .To = Range("EMAIL_TO")
        .Cc = Range("EMAIL_CC")
        .Subject = Range("EMAIL_SUBJECT")
        .Attachments.Add (Range("PATH"))
        .HTMLBody = "<p style=""font-family: Calibri; font-size: 14px; color: #00f; line-height: 1;""><br /></p>" & RangetoHTML(ActiveWorkbook.Worksheets("Daily").Range("B6:H65"))
        .Display
    End With

    Set oMail = Nothing
    Set oApp = Nothing

End Sub

2 个答案:

答案 0 :(得分:2)

看起来您正在使用优秀的Ron De Bruin代码从Excel发送和发送电子邮件(因此使用RangetoHTML()公式)。

我一直在使用同一段代码,可以在http://www.rondebruin.nl/win/s1/outlook/mail.htm

找到

不使用.HTMLBody中的段落HTML标记,而是使用body标签并将行高设置为1.然后当RangetoHTML返回您想要的范围时,它将只与单个空间中的任何文本分开! 这使得代码....

private Plugin plugin;

public InventoryClassName(Plugin plugin){

this.plugin = plugin;

}

答案 1 :(得分:0)

我不完全确定我理解你在问什么,因为我不确定回车单中的单元格中是否发生了回车,或者只是在Outlook中的html中,但我脑子里有两种方法: / p>

您可以替换单元格中的回车符和换行符(http://stackoverflow.com/questions/2321078/how-can-i-remove-blank-line-breaks-from-an-excel-cell-with -VB-或-A-式 )处理间距问题,例如

Substitute(Substitute(A1, CHAR(10), ""), CHAR(13), "")

如果它出现在你的文档的html部分,那么这是一个特定于Outlook的问题,因为使用你的设置的html示例工作正常:

<!DOCTYPE html>

<html>

<head>

<meta name="description" content="A Jack Orange 

Lantern Example" />

<style type="text/css">

p
{
font-family: "Calibri"; 
font-size: 20px;
color: #00f;
line-height: 1;
} 

</style>


</head>

<title> What's Up? </title>

<body>



<p> This is totally a paragraph </p>

<p> this is totally a paragraph <br /> + a line 

break </p>

<p> this is totally a paragraph with a line break 

afterwards <br /> </p>

<p> Totally... yeah. <br /> </p>

</body>

</html>

对于outlook,您应该能够使用Replace函数替换回车:

stringNewText = Replace(stringOldText, vbCr, "")

或者,可能:

stringNewText = Replace(stringOldText, vbCr, <br>)

或者,或者:

stringNewText = Replace(stringOldText, vbCr, vbCrLf)

MSDN文档直接解决了Microsoft使用项目主体的教程中的替换功能:http://msdn.microsoft.com/en-us/library/office/dd492012(v=office.12).aspx

vbaexpress的教​​程似乎至少在外围解决了这个问题,并可能提供进一步的说明:http://www.vbaexpress.com/forum/showthread.php?t=39348