ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何用vba代码依据模板复制数据到word文档中生成多份报表(类似邮件合并效果)?

如何用vba代码依据模板复制数据到word文档中生成多份报表(类似邮件合并效果)?

作者:绿色风 分类: 时间:2022-08-17 浏览:127
楼主
kevinchengcw
Q: 如何用vba代码依据模板复制数据到word文档中生成多份报表(类似邮件合并效果)?
A: 实现代码如下:
  1. Sub test()
  2. Dim Arr, Rule, N&, I&, FN$, Rng As Object
  3. With Worksheets("病案基本信息表-1")
  4.     Arr = .[a1].Resize(.Cells(.Rows.Count, 1).End(3).Row, .Cells(1, .Columns.Count).End(1).Column).Value  '提取信息到数组中
  5. End With
  6. FN = ThisWorkbook.Path & "\治疗卡模板_.doc"  '设定模板文件路径
  7. Rule = Array(14, 21, 28, 43, 49, 78, 91, 95, 120, 139, 177, 185, 193, 242, 271)  '初始化文本写入位置数据(位置据文本数据头的偏移量,具体数据可以在word中选定指定位置后在vbe立即窗口用?selection.range.start查看)
  8. If Dir(FN) <> "" Then  '如果存在模板文件,则
  9.     With CreateObject("word.application")  '创建word进程
  10.         .Visible = True  '使进程显示出来,也可以设置为false隐藏执行
  11.         With .Documents.Open(FN)  '打开模板文件
  12.             .SaveAs ThisWorkbook.Path & "\治疗卡.doc"  '先另存为目标文件
  13.             Set Rng = .Range  '设置复制区域为模板全部内容
  14.             Rng.Copy  '复制
  15.             '以上两句可以直接写为.range.copy,从而省去Rng变量
  16.             For N = LBound(Arr) + 1 To UBound(Arr)  '循环数据区
  17.                 .Application.Selection.HomeKey 6  'word中光标位置移动到文件头
  18.                 .Application.Selection.Paste  '粘贴复制的数据
  19.                 For I = UBound(Arr, 2) To LBound(Arr, 2) Step -1  '从后向前循环数据偏移位置(因粘贴在前面,所以当前写入区域相对文本数据头位置固定)
  20.                     If I - 1 <= UBound(Rule) Then .Range(Rule(I - 1), Rule(I - 1)).Text = Trim(Arr(N, I))  '在处于有效数据范围时将对应数据写入对应位置
  21.                 Next I
  22.             Next N
  23.             Set Rng = Nothing  '清空变量
  24.             .Save  '保存word文档修改
  25.             .Close  '关闭word文档
  26.         End With
  27.         .Quit  '退出进程
  28.     End With
  29.     MsgBox "处理完成"
  30. Else
  31.     MsgBox "未找到模板文件!"
  32. End If
  33. End Sub
详细内容见附件及素材源帖。


excel数据自动写入word模板.rar
2楼
wzq47111
很好的,学习了
3楼
猴子
2003下载不了、、、、、
4楼
本人号被盗,
这么好的文章
5楼
shenxinyan
不错  附件演示没代码的。
6楼
icenotcool

7楼
老糊涂
下载学习
8楼
风华
早就要用这些东西,一直都没有时间来找资料,这次用到了。感谢。
9楼
gfp12345678
学习学习

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap