Word 2010 中的邮件合并功能

Word 2010 中的邮件合并功能

我有这个 Excel 文件,其中有多张工作表,我想将其导入 Microsoft Word 的信函格式。

首先,我开始将邮件合并到这个 excel 文件并选择这个特定的工作表/表格,然后我在信件中填充必要的字段就完成了。

之后我想再次将邮件合并到同一个文件,但这次选择了另一个表格,其中包含我希望用这些数据填充信件的不同列。当我尝试这样做时,我收到一个错误,提示我必须删除之前填充的字段并将其替换为这个新选择的字段。

错误信息:

此合并字段在主文档中使用,但在数据源中不存在。您可以从主文档中删除无效的合并字段。或者,您可以用数据源中的有效合并字段替换它。

我需要的列来自 Excel 文件中的不同表,这就是我单独检索数据的原因。

我该如何改正错误?

答案1

多个文档的邮件合并应该有一个单独的表,每个条目占一行。最简单的方法是合并您的工作表,这样您就有一个单独的表。使用该表填充将创建x文档,其中x是表中非标题行的数量。

多个文档的示例数据表

答案2

我认为,除非您有良好的编码资源,否则 jmac 建议的方法可能是最简单、最可靠的。或者接受您必须复制和修改邮件合并主文档才能合并每张工作表中的数据。

还有其他方法,但大多数涉及编程或方法,我认为这些方法对于典型场景来说不够可靠,而另一种方法仅在某些情况下才有效。

可以使用什么还取决于您是否要将多张工作表中的所有数据合并为一个输出,或者是否要每张工作表进行单独的输出。

如果您使用依赖于字段映射的 ADDRESSBLOCK 或 GREETINGLINE 字段,事情就会变得更加棘手。

对于“每张纸单独输出”,

a. 如果每张工作表都使用相同的列,但名称不同,则可以使用列号代替名称。例如,假设您的工作簿包含 2 张工作表,即 Sheet1 和 Sheet2,并且 Sheet1 上的第 1 列称为 namea,Sheet2 上的第 1 列称为 nameb。然后(使用 Alt-F9 查看字段名称)您将需要在 Sheet1 的邮件合并主文档中输入以下内容:

{ 合并字段名称a }

对于 Sheet2

{ 合并字段 nameb }

{ 合并字段 1 }

应该在两种情况下都有效。(据我所知,没有任何地方记录这一点)。

b. 您可以使用“地址字段”而不是“数据库字段”。这有一个限制,我通常认为这是一个致命问题(我稍后会描述它),但它的工作原理如下:

您无需通过 { MERGEFIELD namea } 使用列名(“namea”),而是使用如下地址字段

{ MERGEFIELD "名字" \m }

这将使用一组标准字段名称,您可以将其“匹配”(或“映射”)到 Excel 表中的列名称。您可以通过选择“地址”选项而不是默认的“数据库”选项从完整的“插入字段”对话框中选择这些字段,然后可以使用该对话框中的“匹配字段...”按钮重新映射字段。您需要检查记住此计算机上此组数据源的匹配底部的框。这样,当您从一个数据源切换到另一个数据源时,Word 应该会记住正确的映射。

这是理论,但在实践中,我认为在大多数情况下,这种方法是行不通的。这是因为 Word 只记住(在 Windows 注册表中)每个数据库名称的一个映射。因此,如果您在一张表中有一个名为 namea 的字段,并且您需要将其映射到 First Name,但在另一张表中您需要将 namea 映射到 Last Name,那么您无法做到这一点(就我而言)。更糟糕的是,如果有人更改了映射,现有的合并文档最终可能会提取错误的数据,而用户根本不会收到任何警告。

涉及编程的方法包括:

c. 您有代码(例如 VBA 代码)来收集并保存每个工作表中所需的名称,然后为每个 MERGEFIELD 字段插入正确的名称。您可以使用嵌套字段来实现这一点,实际上是在进行自己的映射。再次使用 (a) 中的示例,例如,您可以有一个名为“thename”的文档变量,使用 VBA 用 namea 或 nameb 填充它,并使用以下嵌套字段:

{ MERGEFIELD { DOCVARIABLE 名称 } }

(并且这仅当您能让 VBA 在 Word 尝试验证字段名称之前进行替换时才有效)

d.(如果您需要将所选工作表合并为一次合并,而不是每张工作表合并一次),您可以编写代码来自动执行 Excel 以使用 Excel 对象模型合并工作表,或者让 Excel(或 Access)通过设置 UNION 查询来合并工作表。再次使用我们的示例,UNION 可能如下所示:

选择 1 作为 [工作表],namea 作为 [名称] 从 [Sheet1$]

联盟

从 [Sheet2$] 中选择 2,nameb

尽管您可以在 Word VBA 中设置类似这样的查询,但 Word 的 MailMerge 查询限制为 511 个字符,您很可能会超出这个限制。您可以在新的 Excel 工作簿中设置查询来执行类似操作,但我不知道该产品是否有查询长度或其他限制。此外,您可能会丢失任何“备忘录”数据(超过 255 个字符),因此,这仅是某些类型的数据源的一个选项。

答案3

您是否尝试过进入“选择收件人”并再次选择源工作表?如果没有,请执行此操作并选择正确的工作表。

相关内容