ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 16476|回复: 10

[求助] 邮件合并后,插入域字段文字合并后按预留的位置大小自动填充。

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-4-22 14:46 | 显示全部楼层 |阅读模式
本帖最后由 goodlong 于 2013-4-22 14:59 编辑

近日用邮件合并做合同批量打印的时候遇到一个问题,如gif中演示:
x1.gif



合同样本是定制好的模板,域字段插入的带下划线填充的空白处:
由于每个人姓名不一样,会引起该行文字变动,这个还好,不影响整体布局,但是地址字段影响就大了,原来1行的有可能变成2行,会影响合同的整体布局,而且不美观。


请问有什么方法能让插入的域字段在合并后,在预留的下划线长度中自动填充呢?


把填空处设置成表格的方法除外。




新建文件夹.rar (16.35 KB, 下载次数: 69)









TA的精华主题

TA的得分主题

 楼主| 发表于 2013-5-22 17:26 | 显示全部楼层
自己想到过两个方案:
方案一、将预留填充的的地方变成表格,但是劳动局的模板,每行列数不一样,列宽也不一样,变成表格形式非常麻烦,暂时不考虑这个方案
1111.png

方案二、我的思路是这样的:
  • 对excel户籍地址所在列用lenb公式找出最长的,然后把最长的地址复制到word模板中去,调整好字体大小,使之符合模板的格式。
  • 然后再excel中把户籍地址类列中不足最长地址长度的,在后面用空格补足,调整过后,对excel户籍地址所在列用lenb公式长度都是一样的,即最长的地址的长度。
  • 然后邮件合并,期望户籍地址那块不在因字段长短而变动,但是貌似邮件合并不吃这一套,加不加空格word不引用。
  • 失败。。。。。



关于方案二,有没有办法让word邮件合并后,把空格也引用过去,或者不使用空格,而使用其他字符,结果就是word邮件合并能引用这个字符,然后word打印的时候不显示这个字符呢?

TA的精华主题

TA的得分主题

发表于 2013-5-22 17:53 | 显示全部楼层
goodlong 发表于 2013-5-22 17:26
自己想到过两个方案:
方案一、将预留填充的的地方变成表格,但是劳动局的模板,每行列数不一样,列宽也不 ...

想法美好,结果凄惨。

TA的精华主题

TA的得分主题

发表于 2013-6-17 22:46 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2013-12-19 11:20 | 显示全部楼层
如果不考虑表格的话,可以考虑用文本框。但是,问题在于文本框里面的字体大小好像没办法根据文本框的大小而调整,所以这个方法也是会遇到跟用表格一样的问题。当然,如果可以的话,你只要把地址预留的空白多到足以容纳最宽的地址的尺寸就行了。
至少你可以达到不会改变模板的布局的目的。

TA的精华主题

TA的得分主题

发表于 2014-1-21 11:52 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2014-1-21 14:01 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
最好的办法是用单文本框或是表,还有一种办法是两端对齐。不过你这不行,你这都超过一行了,必然得用文本框。(要是最大距离不超过一行,用两边对齐可以)
另外似乎窗体域不能引用地址域。
01.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-2-28 11:33 | 显示全部楼层
hellohaoyu1985 发表于 2014-1-21 14:01
最好的办法是用单文本框或是表,还有一种办法是两端对齐。不过你这不行,你这都超过一行了,必然得用文本框 ...

最后还是用word中添加表格的方式解决的,弊端是发生变动,维护起来就麻烦了

TA的精华主题

TA的得分主题

发表于 2015-7-8 12:13 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2015-7-8 17:26 | 显示全部楼层
楼主,明显你用的是2007或2010或2013版本,我用的是2003版本,下面是两个《证书调整行数》宏,2003版本的,不知管用不管用,试试吧!(目标:邮件合并后未删除分节符时第2段落强制1行):
*******************
Sub 证书调整行数_New()
    On Error Resume Next
    Dim i As Section, k As Integer, l As String
    For Each i In ActiveDocument.Sections
        i.Range.Paragraphs(2).Range.Select
        Do
            Selection.Paragraphs(1).Range.Select
            Selection.HomeKey Unit:=wdLine
            Selection.EndKey Unit:=wdLine
            If Asc(Selection) <> 13 Then Selection.Paragraphs(1).Range.Select: Selection.Font.Scaling = Selection.Font.Scaling - 2 Else Exit Do
        Loop
    Next
End Sub
Sub 证书调整行数_Old()
    On Error Resume Next
    Dim i As Section, k As Integer, l As String
    For Each i In ActiveDocument.Sections
        i.Range.Paragraphs(2).Range.Select
        CommandBars("Word Count").Controls(2).Execute
        l = CommandBars("Word Count").Controls(1).List(6)
        k = Int(Mid(l, 1, Len(l) - 1))
        If k > 1 Then
            Do
                Selection.Font.Scaling = Selection.Font.Scaling - 2
                CommandBars("Word Count").Controls(2).Execute
                l = CommandBars("Word Count").Controls(1).List(6)
                k = Int(Mid(l, 1, Len(l) - 1))
            Loop Until k = 1
        End If
    Next
End Sub
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-13 19:35 , Processed in 0.026888 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表