【发布时间】:2019-09-11 15:11:02
【问题描述】:
我正在尝试使用 Excel 宏生成并预览电子邮件。本质上,我正在使用CreateItem(0) 创建一个新的MailItem,设置HTMLBody 属性,然后调用myemail.Display。 myemail.Display 在 Outlook 的检查器中打开电子邮件,AFAIK 首先通过某种 Microsoft Word 解析器运行电子邮件,该解析器去除了大部分格式。如果我不调用myemail.Display 而只是调用myemail.Send,则电子邮件的格式正确,但在这个用例中,我们真的希望能够先预览电子邮件。
被剥离的特定格式是所有左对齐的文本都居中。这不是什么大不了的事,但如果我能理解这种行为就好了。一些潜在的解决方案/答案可能包括: 1.如何格式化HTML,这样Word就不会剥离格式 2.如何完全关闭Word解析引擎 3. 如何关闭Word自动居中
我尝试过的最有希望的事情是制作一个左对齐的表格,但是 Outlook/Word 在表格之后添加了一个额外丑陋的两个空行。许多解决方案看起来都不错,但格式化/预览的重点是因为电子邮件正在发送给重要的人,所以我希望它看起来尽可能好。
这是一个 Outlook/Word 将自动居中文本的示例
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = "someemail@email.com"
.BCC = ""
.Subject = "a subjhect"
.SentOnBehalfOfName = "anotheremail@email.com"
.HTMLBody = "here is some text that will be auto centered"
.Display
End With
【问题讨论】:
-
我从未遇到过这个问题。您能否分享您用于“.HTMLBody”的确切字符串
-
Word 默认不设置居中格式。 Word 中的格式由样式 控制。听起来好像正在应用于电子邮件的模板中的 Normal 样式已更改为居中。我不是 Outlook 专家,所以不太确定如何查找和编辑此模板,我只记得(因为几个 Office 版本)有一个单独的电子邮件模板。如果没有 Outlook 人员跳到这里,研究可能会让您更进一步。或者询问如何在最终用户论坛中找到它。
-
在 Outlook 中控制样式的模板是 NormalEmail.dotm。通常可以在 C:\Users\
\AppData\Roaming\Microsoft\Templates 中找到它。要编辑此模板 1) 关闭 Outlook,2) 在 Word 中打开模板,3) 保存对模板的更改,4) 打开 Outlook 并创建新邮件。您所做的更改不会应用于现有的邮件或草稿。 -
例如,如果您使用
.HTMLBody = "<html><body><p align=""left"">here is some text that will be auto centered</p></body></html>",那么至少在我的 Outlook 中(如果您的计算机速度很慢),您实际上可以看到电子邮件开始左对齐,然后文本将居中。另一件需要注意的事情是,如果您不调用 .Display 而只是调用 .Send,则电子邮件将被正确格式化。另一件事是,如果您创建一个模板,添加一些右对齐或左对齐的文本,然后调用.CreateItemFromTemplate(myTemplte),然后调用.Display,Outlook 将使文本居中。
标签: html excel vba outlook ms-word