ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 拜托老师帮看一个EXCEL批量生成合同的代码!

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-9 08:49 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
洋务德雷 发表于 2023-3-8 23:20
你这个不能用邮件合并吗?
为啥不用简便方法呢?

我觉得吧,这个其实是比较方便点,意一键就完成了,前期代码好了后,后期应该比右键合并较快些;

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-9 08:50 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
gbgbxgb 发表于 2023-3-8 19:32
大佬不想答,我来答吧。

还有个还是不明白啊,为何不用之前的代码呢?

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-9 10:41 | 显示全部楼层
gbgbxgb 发表于 2023-3-8 19:32
大佬不想答,我来答吧。

1.png




我在后边加了一列金额二,怎么会提示这个错误啊,这个是我哪里对应位置还没有改对吗?

批量生成合同 【修改版】.zip

50.01 KB, 下载次数: 11

TA的精华主题

TA的得分主题

发表于 2023-3-9 13:56 | 显示全部楼层
ziyuan567 发表于 2023-3-9 10:41
我在后边加了一列金额二,怎么会提示这个错误啊,这个是我哪里对应位置还没有改对吗?

不是增加列数造成代码运行失败,错误的原因是你修改了For循环的内层循环,你把该内层循环的终止数设为了111,实际上数据区域列数没有那么多,只有11列(猜测是你手误把代码修改为111的)。代码运行时,arr数组下标越界,产生了错误号,而这个错误号被FileCopy命令捕获,最终造成文件复制失败。

如果你不明白上面说的,就不去纠结了,等日后长VBA经验了,自然明白(事实上,我也才知道FileCopy命令有这样的“洁癖”)。

你重新下载我上传的附件吧(我已更新附件了)。

提醒:你还是用我的最新代码吧,我调试了好长时间,代码应该有其可取之处的。
提示:
1.为什么不用CreateObject("Word.Application")语句创建my_Word对象,而用GetObject("","Word.Application")语句创建对象,你以后有兴趣再研究吧。
2.代码为什么要不断地关闭my_Word对象再不断地重新创建my_Word对象,这里仅提示下,如果不这样做,Word查找和替换的速度将越来越慢,其中的机制无从得知。总之,宁可关闭Word对象再创建它,Word的查找替换操作反而高效且速度稳定。
3.补充下,如果用CreateObject命令创建my_Word对象,其查找和替换速度似乎不会变慢。前文提到了CreateObject和GetObject,此处也不想再码字多说了。总之,本代码想用GetObject,弃用CreateObject。

最后,用一句话作总结:Excel调用Word处理文档总有些细节的问题理不清道不明。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-3-9 14:14 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
ziyuan567 发表于 2023-3-9 08:50
还有个还是不明白啊,为何不用之前的代码呢?

等你有了一定基础,他人的代码你大致瞄下就知道其思路了,然后,你可能觉得这代码思路不对你的思路。再者,你不是嫌指定文件存放路径什么的麻烦嘛,而原代码有不少代码量放在这上面了。

总之,还不如按自己的思路结合楼主你的最新要求重起炉灶写代码。

如果你还是觉得他人重新写代码不可思议,那就是这个原因了,即好多在EH论坛上VBA版块逛的一般都想找个感兴趣的题材写码,一是旧知识要重温,避免时间久了,成生手了;二是感觉这题材曾经有个某地方存在什么难处不能完美解决,就想着借这题材重新体验下。这不,我不就因这题材从你的反馈中知道了FileCopy命令还有意想不到的“要求”,这是搜遍网络也很难得到的知识(经验更贴切吧)啊。套句老话,赠人玫瑰,手有余香。

最后:改他人代码,没多少人感兴趣;写代码,有好多乐趣。

TA的精华主题

TA的得分主题

发表于 2023-3-9 19:25 | 显示全部楼层
合同的word模板,要从excel填入的数据,在word中做成可编辑区域 或者 域对象 比较有利于扩展。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-9 22:49 | 显示全部楼层
gbgbxgb 发表于 2023-3-9 14:14
等你有了一定基础,他人的代码你大致瞄下就知道其思路了,然后,你可能觉得这代码思路不对你的思路。再者 ...

明白了,您说的太贴切了,知道了自己的短板所在,再次感谢您无私分享一些学习心得与方法,也让我明白了后期的学习方向所在;

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-9 22:56 | 显示全部楼层
gbgbxgb 发表于 2023-3-9 13:56
不是增加列数造成代码运行失败,错误的原因是你修改了For循环的内层循环,你把该内层循环的终止数设为了1 ...

感谢您仔细的分析与分享;
终于找到原因了,我试了下,这个没有任何错误提示了,很完美了;

因为是对办公自动化这块还是有比较浓厚的兴趣,也希望通过一些技术手段解决一些遇到的实际问题;

目前来看还是看不懂,以后学习vba的路还很长,等一定好好学习研究您的代码;

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-9 22:58 | 显示全部楼层
jiangxiaoyun 发表于 2023-3-9 19:25
合同的word模板,要从excel填入的数据,在word中做成可编辑区域 或者 域对象 比较有利于扩展。

明白了 ,谢谢,等我研究研究  域对象和可编辑区域,

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-25 13:48 | 显示全部楼层
ddmc 发表于 2023-3-8 22:43
改了下 模板与表格 ,适应 后期通用

遇到一个问题,word模板里有表格,这代码就无法写入了,是怎么回事啊?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-18 06:39 , Processed in 0.035185 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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