Access多行文本框设为字段内换行,邮件合并CRLF致间距过大求助
解决Access地址字段邮件合并间距过大的问题
针对你遇到的Access文本框存CRLF导致邮件合并间距过大的问题,不用保存副本,有几个更高效的处理方式:
在Word邮件合并中直接转换换行符
无需修改Access数据源,直接在Word里用域代码替换CRLF为软换行(LF):- 插入邮件合并域后,选中该域,按
Alt+F9切换到域代码视图 - 将原代码
{ MERGEFIELD 你的地址字段名 }修改为:{ SET addr { MERGEFIELD 你的地址字段名 } }{ =SUBSTITUTE(SUBSTITUTE(addr, "^p", "^l"), "^m", "^l") } - 按
Alt+F9切回正常视图,预览邮件合并就能看到紧凑的换行效果。这里^p代表CRLF硬回车,^l代表LF软换行,两次替换是为了覆盖可能存在的手动换行符。
- 插入邮件合并域后,选中该域,按
在Access查询中预处理字段
创建一个专门用于邮件合并的查询,在查询设计视图的字段行输入:处理后地址: Replace([原地址字段名], vbCrLf, vbLf)用这个查询作为邮件合并的数据源,Word读取的就是LF换行符,间距会和Access表单里一致。
在Access表单输入时直接存LF
如果希望从源头解决,给文本框添加BeforeUpdate事件的VBA代码:
打开表单设计视图,右键文本框选「事件生成器」,输入:Private Sub 地址文本框_BeforeUpdate(Cancel As Integer) Me.地址文本框 = Replace(Me.地址文本框, vbCrLf, vbLf) End Sub这样用户输入的回车会被自动转换成LF存储,既不影响表单内的显示,邮件合并时也不会出现大间距。
内容的提问来源于stack exchange,提问作者liz
相关产品推荐
相关产品推荐

