ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] excel用vba批量生成word合同,如何替换图片

[复制链接]

TA的精华主题

TA的得分主题

发表于 2022-12-23 16:07 | 显示全部楼层 |阅读模式

论坛的大神们,大家好!

刚接触宏命令两天,在网上找到的生成带图片的合同,多数都是用邮件合并或用excel批量生成word工具。一直没找到用代码生成的办法。

在网上找到一个我能看懂的,超简单的代码,试着改了一下。

现在有两个问题无法解决。请问各位大佬,我该怎么解决这两个问题
1、不在excel增加一列每日工资的大写的情况下,如何把数字转成大写数字,然后替换到合同中。
2、如何在搜索文件夹中的图片并替换到合同中。

excel文件人员信息如下图
image.png

合同模板如图
劳动合同书(模板)_页面_1.jpg 劳动合同书(模板)_页面_2.jpg 劳动合同书(模板)_页面_5.jpg

用的是wpsvb宏,电脑上也装有MicrosoftOfficeLTSC专业增强版2022
代码哪下
  1. Sub 生成合同()
  2. '
  3. Dim mypath, docname, i, wApp
  4. '定义变量

  5. 'MkDir ThisWorkbook.Path & "\批量生成合同"
  6. '在当前路径下创建名为“批量生成”的文件夹,用于存放生成的文件

  7. mypath = ThisWorkbook.Path & ""
  8. '指定“mypath”(本例定义的工作路径)为“批量生成”文件夹

  9. For i = 2 To [a1048576].End(xlUp).Row
  10. '指定后面执行的循环范围,从第2行开始,到最后一个非空单元格为止

  11. docname = Range("A" & i) & "劳动合同书" & "(" & Range("B" & i) & ")" & ".docx"
  12. '定义自动生成的文件名为“杆塔基础征地合同-”+“B列i行的值(相应的姓名)”+“C列i行的值(相应的姓名)”+“.docx”

  13. FileCopy ThisWorkbook.Path & "" & "劳动合同书(模板).docx", mypath & docname
  14. '复制当前路径下的“0劳动合同书(模板).docx”文件到指定路径(就是“批量生成”文件夹),并按上述规则重命名

  15. Set wApp = CreateObject("word.application")
  16. '调用word程序打开文件,执行后面操作

  17. With wApp

  18. .Visible = False

  19. .Documents.Open mypath & docname
  20. '打开上面复制并重命名的文件

  21. Do While .Selection.Find.Execute("【姓名】")
  22. '在文件中检索“【姓名】”字符串

  23. .Selection.Text = Range("B" & i).Text
  24. '使用表格C列i行的值(即相应的姓名)替换找到的“【姓名】”字符串

  25. .Selection.HomeKey Unit:=6
  26. '光标置于文件开头

  27. Loop
  28. '循环

  29. '(直到找不到【姓名】为止,当前文档中所有【姓名】字符串都已被替换)

  30. Do While .Selection.Find.Execute("【ID】")

  31. .Selection.Text = Range("D" & i).Text

  32. .Selection.HomeKey Unit:=6

  33. Loop

  34. Do While .Selection.Find.Execute("【性别】")

  35. .Selection.Text = Range("C" & i).Text

  36. .Selection.HomeKey Unit:=6

  37. Loop

  38. Do While .Selection.Find.Execute("【手机】")

  39. .Selection.Text = Range("J" & i).Text

  40. .Selection.HomeKey Unit:=6

  41. Loop

  42. Do While .Selection.Find.Execute("【地址】")

  43. .Selection.Text = Range("K" & i).Text

  44. .Selection.HomeKey Unit:=6

  45. Loop

  46. Do While .Selection.Find.Execute("【日期】")

  47. .Selection.Text = Range("H" & i).Text

  48. .Selection.HomeKey Unit:=6

  49. Loop

  50. Do While .Selection.Find.Execute("【岗位】")

  51. .Selection.Text = Range("L" & i + 1).Text

  52. .Selection.HomeKey Unit:=6

  53. Loop

  54. Do While .Selection.Find.Execute("【小写】")

  55. .Selection.Text = Range("G" & i).Text

  56. .Selection.HomeKey Unit:=6

  57. Loop

  58. Do While .Selection.Find.Execute("【大写】")

  59. .Selection.Text = Range("G" & i).Text

  60. .Selection.HomeKey Unit:=6

  61. Loop

  62. Do While .Selection.Find.Execute("【卡号】")

  63. .Selection.Text = Range("F" & i).Text

  64. .Selection.HomeKey Unit:=6

  65. Loop

  66. Do While .Selection.Find.Execute("【开户行】")

  67. .Selection.Text = Range("E" & i).Text

  68. .Selection.HomeKey Unit:=6

  69. Loop

  70. Do While .Selection.Find.Execute("【身份证正面】")

  71. .Selection.Text = Range("P" & i).Text

  72. .Selection.HomeKey Unit:=6

  73. Loop

  74. .Documents.Save

  75. .Quit

  76. End With

  77. Next

  78. Set wApp = Nothing

  79. End Sub
复制代码



例子.zip

259.22 KB, 下载次数: 29

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-12-23 16:10 | 显示全部楼层
原来注册的帐号无法更改密码,点击链接是这样,这是新注册的号
1671782975557.png
image.png

TA的精华主题

TA的得分主题

发表于 2022-12-24 09:55 | 显示全部楼层
word中插入照片的帖子,十一月份至少回过十个这样的帖子,自己找找看看呀

TA的精华主题

TA的得分主题

发表于 2022-12-24 19:40 | 显示全部楼层
可以用书签的方式来实现。
这是加了书签的模板文件。
在Excel中抄入代码,执行即可。
2021-11-13书签1.png
2022-12-24大写.png

劳动合同书(模板).rar

22.59 KB, 下载次数: 33

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-12-24 20:27 | 显示全部楼层
3190496160 发表于 2022-12-24 09:55
word中插入照片的帖子,十一月份至少回过十个这样的帖子,自己找找看看呀

谢谢,我好好找找。

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-12-24 20:30 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
蓝桥玄霜 发表于 2022-12-24 19:40
可以用书签的方式来实现。
这是加了书签的模板文件。
在Excel中抄入代码,执行即可。

谢谢,没学过代码,只有一些计算机操作基础。
我得下来好好研究一下。
现在看得很懵

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-12-24 20:34 | 显示全部楼层
今天用摸索了半天,这个替换法里加上红色字体这项也能数值变大写
Do While .Selection.Find.Execute("【大写】")

.Selection.Text = Application.WorksheetFunction.Text(Range("O" & i), "[DBNum2]")

.Selection.HomeKey Unit:=6

Loop

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-12-24 20:43 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
谢谢上面的论坛元老,今天摸索半天发现把代码加了些代码也能大写,感觉我这些方法很蠢,不过自己很容易看懂
下面的代码
  1. Do While .Selection.Find.Execute("【大写】")

  2. .Selection.Text = Range("O" & i).Text

  3. .Selection.HomeKey Unit:=6

复制代码


改成下面就能大写
  1. Do While .Selection.Find.Execute("【大写】")

  2. .Selection.Text = Application.WorksheetFunction.Text(Range("O" & i), "[DBNum2]")

  3. .Selection.HomeKey Unit:=6

复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-12-24 20:50 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
蓝桥玄霜 发表于 2022-12-24 19:40
可以用书签的方式来实现。
这是加了书签的模板文件。
在Excel中抄入代码,执行即可。

正在抄代码,今天工作之余挤时间看了本论坛的VBA入门,刚好记得这些"&%$"代表什么。

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-12-24 23:45 | 显示全部楼层
边百度边看,看了4个小时,大概算看懂了前20行代码。版主的代码对新手来说太复杂了,明天下班后再抽空看了。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-19 06:12 , Processed in 0.044674 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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