【发布时间】:2016-01-07 22:04:41
【问题描述】:
正在尝试通过 Excel 使用 VBA 自动化 Outlook 电子邮件。
在我的代码末尾,我在 Excel 单元格中有一个值字符串,由 ;# 分隔(例如:;#abacus;#bicycle;#cheese;#)。
进入电子邮件创建部分的 .HTMLBody 部分后,我将使用 Replace() 删除分隔符。
.HTMLBody = Replace(.HTMLBody, ";#", ", ")
这很棒,因为它用逗号分隔列表。我还有另一个处理开头的部分(列表开头之前的;#)。这会查找“List:”的特定实例
.HTMLBody = Replace(.HTMLBody, "List: , ", "List:")
现在应该改为:“列表:算盘、自行车、奶酪,”
我现在正在尝试删除列表末尾的多余逗号和空格(“奶酪”应以“奶酪”结尾)。列表中总会有不同长度的不同值,不一定以奶酪结尾,但根据值分隔符总是以;#结尾。
我知道最后一个值总是在电子邮件中返回< br >,但是当我尝试此代码时,它不起作用(换行符在括号中包含空格以不破坏代码块,它们不会在我真正的 VBA 代码中):
.HTMLBody = Replace(.HTMLBody, ", < br >< br >", "< br >< br >")
基于我疯狂的替换值系统(在这种情况下,目标是替换 3 次),我觉得它应该可以工作,但事实并非如此。
VBA 是否无法搜索带有换行符的字符串并将其替换为仅换行符?
我也觉得有更好的方法来做到这一点 - 我的 VBA 充其量是次品。
【问题讨论】:
-
尝试 .HTMLBody = Left(.HTMLBody, len(.HTMLBody)-2) 去掉尾随的逗号和空格。不确定我是否理解问题的第二部分。
-
<br>是 HTML 中的换行符。但是chr(13)+chr(10)或vbCrLf是您在VBA 中表示回车+换行的方式。也许试试那些? -
任何机会你都可以显示整个 HTML 字符串(作为原始 HTML)——或者至少是一个样本来覆盖开始、结束和被修改的区域,无论是原样还是你想要的看起来像?
标签: vba excel email line-breaks