是否可以使用 Word 宏将一个邮件合并域替换为另一个域?
Is it possible to use a Word macro to replace one mail merge field with another?
我有插入了合并代码的 Word 邮件合并文档。我想知道我是否可以编写一个 Word 宏来搜索一个邮件合并代码并将其替换为另一个?我试过了,但是我替换的合并代码恢复到原来的值。
我创建了一个 Word 宏并使用 CTRL + H,将数据放入搜索和替换(合并字段)并单击替换。它替换了数据,但在我保存并 return 记录旧的合并代码之后仍然存在。生成以下 vba 代码:
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "F_400"
.Replacement.Text = "F_901"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute
我正在用合并字段 F_901 替换合并字段 F_400。
为了替换 Mergefield 的名称,您需要使用基础字段代码。您通常看到的是 Word 显示的 "pretty view",可以在 "field name" 和功能区中邮件选项卡提供的数据预览之间切换。
为了直接在域代码上使用 Find/Replace,请使用 Alt+F9 切换到域代码视图。然后您应该看到 { MERGEFIELD fieldname }。在此状态下,您可以查找字段名并将其替换为数据源中不同的有效字段名。
为了将域代码显示切换为宏的一部分,以便您可以在 VBA 中使用 Find/Replace,请使用 Window 对象和 View.ShowFieldCodes 属性,例如:
ActiveWindow.View.ShowFieldCodes = True 'False to turn them off
这在使用 Selection.Find 时工作正常。对于 Range.Find 有另一种方法,通过更改用于 Find:
的 Range 对象的 TextRetrievalMode
rngFind.TextRetrievalMode.IncludeFieldCodes
With rngFind
'and so on
IncludeFieldCodes 属性 选取 "hidden" 字段代码进行代码处理,因此字段代码是否显示在屏幕上并不重要。
我有插入了合并代码的 Word 邮件合并文档。我想知道我是否可以编写一个 Word 宏来搜索一个邮件合并代码并将其替换为另一个?我试过了,但是我替换的合并代码恢复到原来的值。 我创建了一个 Word 宏并使用 CTRL + H,将数据放入搜索和替换(合并字段)并单击替换。它替换了数据,但在我保存并 return 记录旧的合并代码之后仍然存在。生成以下 vba 代码:
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "F_400"
.Replacement.Text = "F_901"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute
我正在用合并字段 F_901 替换合并字段 F_400。
为了替换 Mergefield 的名称,您需要使用基础字段代码。您通常看到的是 Word 显示的 "pretty view",可以在 "field name" 和功能区中邮件选项卡提供的数据预览之间切换。
为了直接在域代码上使用 Find/Replace,请使用 Alt+F9 切换到域代码视图。然后您应该看到 { MERGEFIELD fieldname }。在此状态下,您可以查找字段名并将其替换为数据源中不同的有效字段名。
为了将域代码显示切换为宏的一部分,以便您可以在 VBA 中使用 Find/Replace,请使用 Window 对象和 View.ShowFieldCodes 属性,例如:
ActiveWindow.View.ShowFieldCodes = True 'False to turn them off
这在使用 Selection.Find 时工作正常。对于 Range.Find 有另一种方法,通过更改用于 Find:
的 Range 对象的 TextRetrievalModerngFind.TextRetrievalMode.IncludeFieldCodes
With rngFind
'and so on
IncludeFieldCodes 属性 选取 "hidden" 字段代码进行代码处理,因此字段代码是否显示在屏幕上并不重要。