你目前正处于脱机状态,正在等待 Internet 重新连接

如何在 Word 2002 和更高版本的 Word 中使用邮件合并创建按类别排序的列表

针对 Office 2003 的支持已终止

Microsoft 已于 2014 年 4 月 8 日终止了针对 Office 2003 的支持。该更改已影响到您的软件更新和安全选项。 了解这一措施对于您的含义以及如何继续保持受保护状态。

有关本文的 Microsoft Word 2000 版本,请参见 211303
有关本文的 Microsoft Word 98 版本,请参见 181731
有关本文的 Microsoft Word 97 版本,请参见 181730
有关本文的 Microsoft Word 95 版本,请参见 181729
概要
本文介绍如何使用 Word 中的邮件合并功能创建按类别排序和分隔的数据列表,并提供可用于创建此类列表的说明和示例。

设置数据文件

对数据文件进行排序,以使关键字域类别(作为排序依据的域)具有相同值的所有记录显示在一起,如示例数据文件中所示。下面的示例列表按“CITY”域排序(在本示例中,“CITY”为关键字域)。

CityEmployeeSales
AtlantaGalos $3,000
AtlantaDelaney $50,000
AtlantaHenningsen $10,000
HoustonJohnson $8,000
HoustonKelly $9,000
HoustonPak $0

设置主文档

注意:在下面的示例中,¶(即“段落标记”)表示 段落标记。要键入段落标记,请按 Enter。

为了使此过程能够工作,必须在设置主文档时选择“目录”文档类型。要将主文档设置为目录,请按照下列步骤操作:
  1. 在新的空白文档中,启动邮件合并。

    Word 2002

    在“工具”菜单上,单击“信函与邮件”,然后单击“邮件合并向导”。

    Word 2003

    在“工具”菜单上,单击“信函与邮件”,然后单击“邮件合并”。
  2. 在“邮件合并”任务窗格的“选择文档类型”下方,单击以选择“目录”。
  3. 单击“下一步: 正在启动文档”。
  4. 在“选择开始文档”下,单击以选择“使用当前文档”。
  5. 单击“下一步: 选取收件人”。
  6. 在“使用现有列表”下,单击“浏览”。
  7. 在“选择数据源”对话框中,选择在 设置数据文件 部分中创建的示例文件。
  8. 如果出现“确认数据源”对话框,请选择一种与在设置数据文件 部分中所创建的文件类型相适应的数据类型。例如,如果该文件是在 Microsoft Excel 中创建的,请选择“通过 DDE 的 MS Excel 工作表(*.xls)”或“通过 ODBC 的 Excel 文件(*.xls)”。
  9. 在“邮件合并收件人”对话框中,单击“确定”。
  10. 将下面的示例用作参考,先插入域,然后将每行中的关键字域与其前一行中的关键字域进行比较,如果它们不同,则插入一个文本字符串,否则插入另一个文本字符串。
示例

本示例使用 设置数据文件 部分中的示例数据并将 { MERGEFIELD CITY} 用作关键字域。

注意:要插入域大括号,请按 Ctrl+F9。
{ IF{ MERGESEQ} = "1" "{ MERGEFIELD CITY }
" "" }{ SET Place1{ MERGEFIELD CITY }}
{ If{ Place2} <> { Place1 }
{ MERGEFIELD CITY }

{ MERGEFIELD EMPLOYEE}{ MERGEFIELD SALES}" "{ MERGEFIELD EMPLOYEE}{ MERGEFIELD SALES}" }{ SET Place2{ MERGEFIELD CITY }}
本示例中展示的域将生成一个已排序列表,如下所示:
Atlanta

Galos $3,000
Delaney $50,000
Henningsen $10,000

Houston

Johnson $8,000
Kelly $9,000
Pak $0

将每个新类别强制到新的页面

与前一示例相同,此示例中的关键字域仍为 { MERGEFIELD City }。当数据文件中的 CITY 值更改为其他城市时,将向合并结果中添加一个新页并在下一页的顶部继续合并。要插入域大括号,请按 Ctrl+F9。
{ If{ MERGESEQ} = "1" "{ MERGEFIELD CITY }
" ""}{ SET Place1{ MERGEFIELD CITY }}
{ If{ Place2} <> { Place1 }
----------------------------Page Break--------------------------------
{ MERGEFIELD CITY }

{ MERGEFIELD EMPLOYEE}{ MERGEFIELD SALES}" "{ MERGEFIELD EMPLOYEE}{ MERGEFIELD SALES}" }{ SET Place2{ MERGEFIELD CITY }}
注意:要插入分页符,请按 Ctrl+Enter,也可以单击“插入”菜单上的“分隔符”,选择“分页符”,然后单击“确定”。

本示例中展示的域将生成一个跨页列表,如下所示:
Atlanta

Galos $3,000
Delaney $50,000
Henningsen $10,000

----------------------------Page Break-----------------------------
Houston

Johnson $8,000
Kelly $9,000
Pak $0

设置关键字域的格式

本示例中的关键字域为 {MERGEFIELD CITY}。要将 {MERGEFIELD CITY} 结果的格式设置为全部大写,可以插入格式开关 \* Upper。要插入域大括号,请按 Ctrl+F9。
{ If{ MERGESEQ} = "1" "{ MERGEFIELD CITY \* Upper }
" "" }{ SET Place1{ MERGEFIELD CITY }}
{ IF{ Place2} <> { Place1 }
{ MERGEFIELD CITY \* Upper }

{ MERGEFIELD EMPLOYEE}{ MERGEFIELD SALES}" "{ MERGEFIELD EMPLOYEE}{ MERGEFIELD SALES}" }{ SET Place2{ MERGEFIELD CITY }}
本示例中展示的域将生成一个城市显示为全部都是大写字母的列表,如下所示:
ATLANTA

Galos $3,000
Delaney $50,000
Henningsen $10,000

HOUSTON

Johnson $8,000
Kelly $9,000
Pak $0
注意:可以向关键字域 { MERGEFIELD City } 应用其他格式,方法是选择整个域(包括域大括号 { }),然后将该域设置为您的首选格式。要设置域的格式,请单击“格式”菜单上的“字体”。

包括其他文本

如果需要在合并文档中显示其他文本,必须将此文本包括在 IF 域中的引号组内。这样,仅当数据源中的信息符合 IF 域中定义的条件(例如,当数据源中当前行的 CITY 名称不同于前一行中的 CITY 名称时)时,才会显示该文本。

如果将文本置于主文档中的 IF 域之外,则在合并文档中,此文本将在数据源的每个新行内出现一次,而不是在每个新关键字域中出现一次。在设置数据文件 部分所创建的示例中,该文本将在每个“Employee”中出现一次,而不是在每个“City”中出现一次。

本示例将用一个简短的介绍性语句对列表中的每个城市进行介绍:
{ IF{ MERGESEQ} = "1" "These are the sales totals for{ MERGEFIELD CITY }
" "" }{ SET Place1{ MERGEFIELD CITY }}
{ If{ Place2} <> { Place1 }
These are the sales totals for{ MERGEFIELD CITY }

{ MERGEFIELD EMPLOYEE}{ MERGEFIELD SALES}" "{ MERGEFIELD EMPLOYEE}{ MERGEFIELD SALES}" }{ SET Place2{ MERGEFIELD CITY }}
本示例中展示的域将生成一个每个城市都带有介绍性文本的列表,如下所示:
These are the sales totals for Atlanta:

Galos $3,000
Delaney $50,000
Henningsen $10,000

These are the sales totals for Houston:

Johnson $8,000
Kelly $9,000
Pak $0

此过程的工作原理

在上述示例中,第一个 IF 域仅为邮件合并中的第一条记录插入城市名称和段落标记。对于所有后续记录,此 IF 域不插入任何内容 ("")。它通过将 MERGESEQ 域(此域返回当前记录的序列号)与数字“1”加以比较来识别第一条邮件合并记录。

仅当第二个 IF 域确定当前记录包含的城市名称不同于前一记录时,才会插入一个换行符(如果将每个城市强制到新页,则插入分页符)、城市名称,然后再插入两个换行符、员工姓名和销售额(按所述顺序排列)。如果 Word 确定当前记录包含的城市名称与前一记录相同,Word 将仅插入下一个员工姓名和销售额。

此 IF 域通过比较两个 SET 域中指定的书签文本来识别新的城市名称。书签“Place1”的文本始终等于当前记录的“City”域值,而书签“Place2”的文本则等于前一记录的“City”域值。
参考
有关邮件合并的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
294688如何在 Word 2002 和更高版本的 Word 中设计和设置邮件合并地址列表
290408 关于 Word 2002 中邮件合并的常见问题
294693 如何在 Word 2002 和更高版本的 Word 中使用邮件合并创建目录
294683 如何在 Word 2002 和更高版本的 Word 中使用邮件合并创建套用信函
OfficeKBHowTo invoice catalog phone directory conditional mailmerge group report detail inf WD2003
属性

文章 ID:294686 - 上次审阅时间:12/08/2006 20:01:00 - 修订版本: 2.0

  • Microsoft Office Word 2003
  • Microsoft Word 2002 标准版
  • kbhowtomaster kbmerge kbdta kbfield kblayout KB294686
反馈
ript" src="https://c.microsoft.com/ms.js" '="">