ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

如何将EXCEL中的家庭成员信息自动填入WORD文档中?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2014-4-13 17:46 | 显示全部楼层
本帖最后由 huanger999 于 2014-4-13 17:51 编辑

需要确认一下,是否已经按照你提供的示例那样,排序好了。每家第一个是户主,然后是这家的其他人员。然后是下一家。如果是,可以用VBA来做,规律性还是比较好的。
另外需要用替代的方式处理一下地址栏,例如“区”替代为“区@”,乡为“乡@”类似的,也就是说地址需要半人工的方式进行处理,仅需要处理户主的就可以了。另外,是否需要用红色字突出显示,我个人认为是不需要的。

TA的精华主题

TA的得分主题

发表于 2014-4-13 21:49 | 显示全部楼层
本帖最后由 huanger999 于 2014-4-13 21:57 编辑
  1. Sub getnew()
  2. Application.ScreenUpdating = False
  3. Dim mytable, myFirstRow As Range
  4. Dim strHuzhu As String
  5. Dim strZhuzhi As String
  6. 'For i = 3 To 10000
  7. 'If a Then Exit For
  8. 'Next
  9. '定义excel对象
  10. Dim AppExcel As Excel.Application, Wk As Excel.Workbook, Wksh As Excel.Worksheet
  11. '打开Excel文件
  12. With Application.FileDialog(msoFileDialogFilePicker)
  13. .AllowMultiSelect = False         '单选择
  14. .Filters.Clear         '清除文件过滤器
  15. .Filters.Add "Excel Files", "*.xls;*.xlw;*.xlsx"
  16. .Filters.Add "All Files", "*.*"         '设置两个文件过滤器
  17. If .Show = -1 Then
  18. 'FileDialog 对象的 Show 方法显示对话框,并且返回 -1(如果您按 OK)和 0(如果您按 Cancel)。
  19. myfilepath = .SelectedItems(1)
  20. Else
  21. Exit Sub
  22. End If
  23. End With

  24. Set AppExcel = CreateObject("Excel.Application")

  25. Set Wk = AppExcel.Workbooks.Open(myfilepath)
  26. Set Wksh = Wk.sheets(1)
  27. For i = 3 To 1000 '暂时按照Excel文件有1000条数据,如果超过,就修改为数据条数
  28. If Wksh.Range("I" & i).Text = "" Then Exit For
  29. If Wksh.Range("I" & i).Text = "户主" Then
  30. '读取户主信息和住址信息
  31. strHuzhu = Wksh.Range("B" & i).Text
  32. strZhuzhi = Wksh.Range("J" & i).Text
  33. strAddress = Split(strZhuzhi, "@")
  34. '将模板表复制到最后
  35. ActiveDocument.Tables(1).Range.Copy
  36. Selection.EndKey Unit:=wdStory
  37. Selection.TypeParagraph
  38. Selection.PasteAndFormat (wdFormatOriginalFormatting)
  39. '替换表头信息,包括户主姓名和住址
  40. Set mytable = ActiveDocument.Tables(ActiveDocument.Tables.Count).Range
  41. mytable.Tables(1).Cell(1, 1).Range.Find.Execute findtext:="《户主姓名》", replacewith:=strHuzhu, Replace:=1
  42. mytable.Tables(1).Cell(1, 1).Range.Find.Execute findtext:="《乡镇》", replacewith:=strAddress(1), Replace:=1
  43. mytable.Tables(1).Cell(1, 1).Range.Find.Execute findtext:="《村名》", replacewith:=strAddress(2), Replace:=1
  44. mytable.Tables(1).Cell(1, 1).Range.Find.Execute findtext:="《村民小组》", replacewith:=strAddress(3), Replace:=1
  45. mytable.Tables(1).Cell(1, 1).Range.Find.Execute findtext:="《门牌》", replacewith:=Replace(strAddress(4), "号", ""), Replace:=1
  46. myRow = 3 '新的表格从第三行开始填写人口信息
  47. End If

  48. '如果某户人数超过7人,开始增加行,这样无论某户多少人口,最后总有一个空行
  49. If myRow > 7 Then
  50. mytable.Tables(1).Cell(myRow - 1, 2).Range.Select
  51. Selection.InsertRowsBelow 1
  52. End If
  53. '填写人口信息数据
  54. mytable.Tables(1).Cell(myRow, 2).Range = Wksh.Range("B" & i)
  55. mytable.Tables(1).Cell(myRow, 3).Range = Wksh.Range("D" & i)
  56. mytable.Tables(1).Cell(myRow, 4).Range = Wksh.Range("I" & i)
  57. mytable.Tables(1).Cell(myRow, 6).Range = Wksh.Range("E" & i)
  58. mytable.Tables(1).Cell(myRow, 8).Range = Wksh.Range("F" & i)
  59. mytable.Tables(1).Cell(myRow, 10).Range = strAddress(0)
  60. '行数加1
  61. myRow = myRow + 1

  62. Next

  63. '退出excel文件
  64. AppExcel.Quit
  65. Set Wksh = Nothing
  66. Set Wk = Nothing
  67. Set AppExcel = Nothing
  68. Application.ScreenUpdating = True

  69. End Sub
复制代码


TA的精华主题

TA的得分主题

发表于 2014-4-13 22:02 | 显示全部楼层
1、需要处理excel文件的住址列,完成效果参考附件xls文件。方法见11楼。xls文件处理完之后,请关闭。
2、需要运行宏getnew。(楼主如果没有运行过宏,请先设置宏安全性,网络查找相关内容,或者站内查找。)
3、会弹出文件对话框,指定excel文件的位置。
4、会得到如附件doc的结果。宏在附件的doc文件中。

Desktop.rar

30.96 KB, 下载次数: 460

TA的精华主题

TA的得分主题

发表于 2016-2-24 10:11 | 显示全部楼层
huanger999 发表于 2014-4-13 22:02
1、需要处理excel文件的住址列,完成效果参考附件xls文件。方法见11楼。xls文件处理完之后,请关闭。
2、 ...

很期待。。。希望老师能指导我一下。。。我的QQ 184824493

TA的精华主题

TA的得分主题

发表于 2016-3-4 20:15 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
这个实例很实用,学习了!!!

TA的精华主题

TA的得分主题

发表于 2019-9-1 09:23 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2019-11-11 12:05 | 显示全部楼层
不知为何,12楼的代码运行至下面这个位置时,会出现“用户定义的类型未定义”的错误揭示,请高手指点。
Dim AppExcel As Excel.Application, Wk As Excel.Workbook, Wksh As Excel.Worksheet

TA的精华主题

TA的得分主题

发表于 2019-11-11 16:39 | 显示全部楼层
GONG2816 发表于 2019-11-11 12:05
不知为何,12楼的代码运行至下面这个位置时,会出现“用户定义的类型未定义”的错误揭示,请高手指点。
Di ...

引用MICROSOFT EXCEL X.0 OBJECT LIBRARY  x为excel版本号

TA的精华主题

TA的得分主题

发表于 2019-11-20 12:19 | 显示全部楼层
楼主解决了吗,我现在也是遇到这种繁琐的复制粘贴问题

TA的精华主题

TA的得分主题

发表于 2019-11-20 12:21 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-11 00:36 , Processed in 0.023618 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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