我正在通过VBA创建一个Outlook电子邮件,该电子邮件通过Access表单按钮单击运行。对于.Body,我使用以下连接字符串设置我的'strBody'字符串对象:
strBody = "First Line of text here." & vbNewLine & _
vbNewLine & _
"Second Line of text here." & vbNewLine & _
Chr(187) & "Third Line of text here." & vbNewLine & vbTab & _
Chr(187) & "Fourth Line of text here." & vbNewLine & vbTab & _
Chr(187) & "Fifth Line of text here." & vbNewLine & vbTab & vbTab & _
Chr(187) & "Sixth Line of text here." & vbNewLine & vbTab & _
Chr(187) & "Seventh Line of text here." & vbNewLine & _
"Eighth Line of text here"
电子邮件正文中的结果文本应为:
这里的第一行文字
这里的第二行文字。
这里的第三行文字。
这里的第四行文字。
这里的第五行文字
第六行文字。
这里有第七行文字。
这里有第八行文字。
当debug.print(ing)时,它在即时窗口中看起来很完美。但是,当它在Outlook窗口中创建时,它会对每行进行双重排列,以便您得到:
这里的第一行文字
这里的第二行文字。
这里的第三行文字。
这里的第四行文字。
这里的第五行文字
这里的第六行文字。
这里有第七行文字。
这里有第八行文字。
我已尝试过新行命令的每个组合(vbcrlf,vbcr,vblf,vbnewline等),每当我得到vba字符串中的需要时,每个命令都会产生相同的双倍间距结果。我也试过在.Body和这里显示的字符串对象中进行这种连接......这两种方法都有相同的结果。
关于如何防止这种双重间隔发生的任何想法?或者,如果没有,是否有办法在创建电子邮件正文时将行间距操作为0pt?
提前感谢您的任何帮助。
答案 0 :(得分:1)
我最近把它整理出来了(我有不同的情况,但解决方案是一样的。我会试着解释它为什么会发生:
您正在创建邮件的HTML正文。每行显示以下格式(或至少 - 类似):
<p><span style="color: #1f497d;">THISISSOMETEXT</span></p>
但你知道吗? 'p'代表段落,默认情况下,MS Office将段落拆分为大段(新行)。为避免这种情况,请在为电子邮件创建HTML正文时使用以下格式:
<span style="color: #1f497d;">THISISSOMETEXT</span>
并使用<BR>
作为新行。示例HTML正文:
<span style="color: #1f497d;">Hello,</span>
<BR><BR>
<span style="color: #1f497d;">REPLACEMEWITHGENERATEDSENTENCE</span>
<BR><BR>
<span style="color: #1f497d;">PLEASELETMEKNOWIFYOUHAVEANYISSUES</span>
<BR><BR>
<span style="color: #1f497d;">Regards,</span><BR><BR>
但等等,还有更多!使用BodyHTML属性而不是Body时,不会添加签名。创建新功能:
Function getSignature() As String
signature = Environ("appdata") & "\Microsoft\Signatures\"
If Dir(signature, vbDirectory) <> vbNullString Then
signature = signature & Dir$(signature & "*.htm")
Else:
signature = ""
End If
getSignature = CreateObject("Scripting.FileSystemObject").GetFile(signature).OpenAsTextStream(1, -2).ReadAll
End Function
最后,使用类似的东西:
htmlBodyCode = "<span>This is HTML body</span>"
outMail.HTMLBody = "<p>" & htmlBodyCode & "</p>" & getSignature()
希望这有帮助!我目前正在使用此设置在我目前正在工作的公司中从Excel生成大量电子邮件。