我将邮件合并附加到需要重新格式化的SQL查询中。已插入“ action_name”字段,并且可以正常工作。 [编辑:为澄清起见,所有数据都出现在一个名为“ action_name”的合并域名称下。]
例如,它将出现在这样的字母中:
PersonA, You are missing the following items: 'A, B, C, D, E and F.'
PersonB, You are missing the following items: 'A and B'
PersonC, You are missing the following items: 'A'
PersonD, You are missing the following items: 'A, B, C and D'
当然每个人都会收到自己的来信,因此他们只会看到自己的失踪物品。
当我们将信件交给其他部门时,他们每次必须手动按Enter键以重新格式化该信件,并使它看起来像这样:
PersonA, You are missing the following items:
'A,
B,
C,
D,
E,
F'
在此示例中,我只会做PersonA。我想你明白了。
如何使用邮件合并中的代码(或SQL代码)执行此操作,以便其他人不必手动执行此操作?我已经知道\ v垂直格式对此无效。我读到它是针对东亚语言的。感谢您的提示!
答案 0 :(得分:1)
根据您的描述,“ A,B,C,D,E和F”以及“ A和B”都是通过单个合并字段输出的。 Word没有用于将中断插入此类内容的字段编码机制。如果输出是由单独的mergefields生成的,则插入中断将是微不足道的。您当然可以在mailmerge主文档中添加一个宏,以自动进行合并后的处理。例如,以下宏会拦截“合并到单个文档”操作以执行所有处理:
Sub MailMergeToDoc()
Application.ScreenUpdating = False
ActiveDocument.MailMerge.Execute
With ActiveDocument.Range.Find
.ClearFormatting
.Replacement.ClearFormatting
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchWildcards = True
.Text = "('[A-Z],)"
.Replacement.Text = "^l\1"
.Execute Replace:=wdReplaceAll
.Text = "([A-Z],) "
.Replacement.Text = "\1^l"
.Execute Replace:=wdReplaceAll
.Text = "([A-Z]) and ([A-Z])"
.Replacement.Text = "\1,^l\2"
.Execute Replace:=wdReplaceAll
End With
Application.ScreenUpdating = True
End Sub
答案 1 :(得分:0)
您可以使用SQL在每个列表项进入Word之前在它们之间插入一个换行符。取决于您所使用的系统,语法会有所不同,但是您应该具有连接ascii字符代码10的功能。
例如在Transact-SQL / SQL Server上:
SELECT 'A' + char(10) + 'B' + char(10) + 'C'
或用换行符替换逗号:
SELECT replace('A, B, C', ',', char(10))