【发布时间】:2012-12-06 16:18:13
【问题描述】:
尊敬的 Stackoverflow 员工,
我想用手动换行符(^ l).
我无法通过 Google 找到解决方案,但我可能搜索错误。
我对每封收到的电子邮件都使用以下代码作为规则:
(仅供参考,此代码适用于文本)
Sub testing(MyMail As MailItem)
MyMail.HTMLBody = Replace(MyMail.HTMLBody, "example", "changedtext")
MyMail.Save
End Sub
现在我尝试将第二行更改为:
MyMail.HTMLBody = Replace(MyMail.HTMLBody, "^p", "^l")
和
MyMail.HTMLBody = Replace(MyMail.HTMLBody, "chr(13)", "chr(10)")
但这些似乎不起作用。
不幸的是,我对 VBA 编码不是很熟悉。
我刚刚被告知我需要使用 chr(),但我不知道该怎么做。
一些背景资料:
我使用 2 条规则,1 条用 ^l 更改每个 ^p,另一条规则是将电子邮件从 HTML 转换为纯文本。
如果我只是在不先用 ^l 更改 ^p 的情况下转换它,它将有所有这些额外的空行。
例子:
有人愿意帮助我吗?
我真的很感激!
问候,
克里斯
【问题讨论】:
-
您确定
^p是2 个字符,而不仅仅是1 的表示吗?^可以表示控制键,^p相当于 ctrl+p (chr(21)) -
我不太确定。尽管如此,当使用普通的查找和替换时,它确实可以通过将 ^p 更改为 ^l 来工作。此外,当我打开电子邮件的源代码时,它不会保存为 ^p 或 ^l,因为它是 HTML 格式的。收到的电子邮件也将采用 HTML 格式,并由
代码替换。我目前有一个修复程序,但我认为它不适用于每封电子邮件。
-
用 chr,你不需要双引号,即,你应该使用
Replace(MyMail.HTMLBody, chr(13), chr(10)) -
@Kris 尝试我的解决方案运气好吗?
标签: html vba outlook replace plaintext