订阅者Reyzl Kalifowicz-Waletzky询问使用Word作为电子邮件编辑器时,是否可以强制行长不超过78个字符。在做出回应之前,可能需要进行一些哲学讨论…​

通常有两种类型的电子邮件通过Internet发送。

第一种是纯文本电子邮件。这是传统的电子邮件类型,地球上的每个电子邮件客户端都可以显示文本。

如果您使用的软件(例如邮件列表管理器)期望消息的每一行仅包含一定数量的字符,那么可以肯定的是,它期望使用纯文本电子邮件。

人们发送的另一种电子邮件是HTML电子邮件。如果您收到的消息具有漂亮的背景,挥舞的旗帜,不同的大小类型以及诸如粗体或斜体之类的属性,则该消息就是HTML电子邮件。

即使邮件仅包含文本,也仍然是HTML电子邮件。

这些类型的消息使用Web页面中存在的相同格式代码,以控制文本在电子邮件客户端中的显示方式。

问题在于,并非所有电子邮件客户端都可以显示HTML电子邮件。如果他们无法显示该消息,则很可能他们看不到您的消息。 (这又是为什么某些程序(例如邮件列表管理器)可能需要纯文本消息的原因。)此外,HTML电子邮件消息总是比等效的纯文本消息大,这是因为存在其他格式与消息一起发送的信息。

Word用作电子邮件编辑器时,主要用于创建HTML消息。不幸的是,Word中没有控制行长的设置,因为行长不是HTML消息的问题。因此,如果需要创建纯文本电子邮件,建议使用专门为此目的设计的程序来创建。大多数电子邮件客户端(包括Outlook,Outlook Express和Eudora)都会创建纯文本电子邮件。它们甚至允许您指定最大行长。

如果必须使用Word作为电子邮件客户端,则可以采取一些措施来解决此问题。一种方法是使用等宽字体,设置页边距,以使每行最多包含78个字符,然后使用“仅带换行符的文本”格式保存文件。 (如果使用的是Word 2002或Word 2003,则应使用MS-DOS文本和布局格式保存文件。)

当然,按照以下步骤操作将使您的文件具有适当的行长,但不会获得具有适当的行长的电子邮件。您仍然需要找到一种方法来获取作为电子邮件发送的文件。例如,您可以将保存的文件重新加载到Word中,然后发送。

您可以使用的另一种方法是创建一个宏以按所需的行长分割行。使用该宏的原因是,您必须在每行上计算实际字符,然后将回车符放置在所需长度或之前。为了使事情复杂化,宏需要确保仅在出现空格时才中断行。

幸运的是,VBA允许您检查文档中的单词,该单词会自动在空格处断开。下面的宏将文档分解为所需的行长。

Sub ForceTo78()

Const cstrPunct As String = "!%*)}]:;>,."

Dim rngChar As Range

For Each rngChar In ActiveDocument.Words         If rngChar.Information(wdFirstCharacterColumnNumber) > 77 Then             If InStr(1, cstrPunct, Left(rngChar, 1), _               vbTextCompare) = 0 Then rngChar.InsertParagraphBefore         End If     Next rngChar End Sub

请注意,此宏会破坏超过77个字符的所有内容。原因很简单:VBA在检查文档中的“单词”时,认为在字符和尾随的标点符号之间出现了断点。该宏仅检查返回的单词,如果它们以标点符号开头,它将忽略该单词。

最重要的是,宏将正确处理在第78个字符位置出现单个标点符号的段落。

但是,如果有效字词以标点符号开头(例如“ .com”)

并且该单词位于第78个字符位置,则宏仍将忽略该单词,并使其停留在行上。在极少数情况下,这可能导致一行超过78个字符。

注意:

如果您想知道如何使用此页面(或_WordTips_网站上的任何其他页面)中描述的宏,我准备了一个包含有用信息的特殊页面。

_WordTips_是您进行经济有效的Microsoft Word培训的来源。

(Microsoft Word是世界上最流行的文字处理软件。)本技巧(1572)适用于Microsoft Word 97、2000、2002和2003。