如何在MailMerge字段名称中使用句点?

时间:2014-07-30 11:44:11

标签: c# .net ms-word office-interop mailmerge

我有一个传递到我的应用程序的合并字段名称列表以及Word文档。合并字段包括句点和下划线,格式为" Here.Is.An.Example.Merge_Field"。这些分隔符是必需的 - 字符可以更改,但不能完全删除。

其中一些合并字段包含在为文档创建的数据源中。数据源没有合并字段名称的数据保存 - 合并本身发生在流程的其他位置。

我将文档附加到数据源,如下所示:

WordApplication.MailMerge.OpenDataSource(DataFilePath);

这会根据需要将合并字段加载到菜单中,但所有句点都已消失。我现在有" HereIsAnExampleMerge_Field",这会导致我的应用程序中的其他点出现问题。

如何阻止Word删除这些字符?

1 个答案:

答案 0 :(得分:1)

我认为你不能,因为AFAIK的合并字段名称被修改为有效的书签名称,这有一定的限制

(参见例如What are the limitations for bookmark names in Microsoft Word?进行讨论,除非在这种情况下,我认为Word会在初始" _"之前插入" M"。长40个字符会被修改以产生唯一的名称。)

所以做什么真的取决于你面临的问题。

您可以从ActiveDocument.MailMerge.DataSource.DataFields或.FieldNames中检索Word实际使用的字段名(即其错位名称)。 AFAIK这些与数据源中的字段的顺序相同,即使Word有时会重新排列要在“编辑收件人”对话框中显示的字段(例如,它按照特定顺序对它认为是地址字段名称的字段名称进行排序)。因此,应该允许您将其字段名称与原件匹配。

或者,如果您的代码需要在邮件合并主文档中插入{MERGEFIELD}字段并且知道数据源中字段的顺序,则可以使用字段编号(对于Word等检索的第一个字段为1) ,例如{MERGEFIELD 1}。但请注意,因为我从未见过微软在任何地方都记录过该设施。

相关问题