如何在“邮件合并字段名称”中使用句点

本文关键字:句点 字段 合并 | 更新日期: 2023-09-27 18:15:41

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

其中几个Merge字段包含在为文档创建的数据源中。数据源没有保存合并字段名称的数据-合并本身发生在进程的其他地方。

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

WordApplication.MailMerge.OpenDataSource(DataFilePath);

这将按需要将Merge Fields加载到菜单中,但是所有的句号都消失了。我现在有了"HereIsAnExampleMerge_Field",它会在我的应用程序的其他点引起问题。

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

如何在“邮件合并字段名称”中使用句点

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

(参见,例如:Microsoft Word中书签名称的限制是什么?只是在这种情况下,我认为Word会在首字母_之前插入一个"M"。另外,长度超过40个字符的名称会被打乱以产生唯一的名称。)

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

您可以从activedocument . mailmerge . datasource . dataffields或. fieldnames中检索Word实际使用的字段名(即其混乱的名称)。虽然Word有时会重新排列字段以便在"编辑收件人"对话框中显示(例如,它会按照一定的顺序对它认为是地址字段名称的字段名称进行排序),但这些字段的顺序与数据源中的字段相同。因此,这应该允许您将其字段名称与原始名称相匹配。

或者,如果你的代码需要在邮件合并主文档中插入{MERGEFIELD}字段,并且知道数据源中字段的顺序,你可以使用字段号(1表示Word等检索到的第一个字段),例如{MERGEFIELD 1}。但是要注意,因为我从来没有看到微软在任何地方记录过这个功能。