分享

如何将Excel中的数据批量导入Word模板文件

 百鸣村 2024-03-07 发布于湖北

目录

 前言

步骤

 准备工作

引用加载项 

运行

代码如下:


 前言

文章参考 excel中的数据如何批量导入固定格式的word中? - 知乎

       本文使用Excel中的VBA编辑器,实现将表格中数据批量填写进固定模板的word文档。本文设置了四个填充项,可根据需要自行添加更多数据导入位置。

步骤

 准备工作

  1. 准备好word模板文件,将需要填写的位置用特殊变量代替

如写为:{$供应商名称},{$采购品类}

2.打开excel-开发工具-插入-ActiveX控件

  • 开发工具不在工具栏中的,可按以下路径设置:
  • 文件-选项-自定义功能区-开发工具
  • 绘制控件后右键查看代码-进入VBA编辑器

  • 进入工具-引用

 

引用加载项 

  1. 选择“Microsoft Word16.0 Object Library”-浏览-在路径中找到“MSWORD.OLB”-打开-确定

  • 完成配置-粘贴代码-保存

运行

  1. 保存excel表类型为启用宏的

  • 打开excel-点击控件-选择任一列-确定生成

  • 在弹出的第一个界面中选择Word模板-第二个界面选择保存地址-确定-批量生成合同

代码如下:

  1. Private Sub CommandButton1_Click()
  2. On Error GoTo Err_cmdExportToWord_Click
  3. Dim objApp As Object 'Word.Application
  4. Dim objDoc As Object 'Word.Document
  5. Dim strTemplates As String '模板文件路径名
  6. Dim strFileName As String '将数据导出到此文件
  7. Dim i As Integer
  8. Dim contact_NO As String
  9. Dim side_A As String
  10. Dim side_B As String
  11. Dim side_C As String'数据导出
  12. Dim data_areas As Range
  13. Dim total_data As Integer
  14. Set data_areas = Application.InputBox(prompt:="请鼠标选择需要输出数据的区域", Title:="选择", Type:=8) '选取输出的数据区域
  15. i = data_areas.Row '获取选取区域开始行所在行号
  16. j = data_areas.Rows.Count ' 获取选取区域总行数
  17. With Application.FileDialog(msoFileDialogFilePicker)
  18. .Filters.Add "word文件", "*.doc*", 1
  19. .AllowMultiSelect = False
  20. If .Show Then strTemplates = .SelectedItems(1) Else Exit Sub
  21. End With
  22. With Application.FileDialog(msoFileDialogFolderPicker)
  23. If .Show = False Then Exit Sub
  24. Path = .SelectedItems(1)
  25. End With
  26. Set objApp = CreateObject("Word.Application")
  27. objApp.Visible = False
  28. For k = i To i + j - 1
  29. contact_NO = Cells(k, 1)
  30. side_A = Cells(k, 2)
  31. side_B = Cells(k, 3)
  32. side_C = Cells(k, 4)'数据引用位置
  33. Set objDoc = objApp.Documents.Open(strTemplates, , False)
  34. strFileName = contact_NO & ".doc"
  35. If Not strFileName Like "*.doc" Then strFileName = strFileName = strFileName & ".doc"
  36. If Dir(strFileName) <> "" Then Kill strFileName
  37. With objApp.Application.Selection
  38. .Find.ClearFormatting
  39. .Find.Replacement.ClearFormatting
  40. With .Find
  41. .Text = "{$供应商}"
  42. .Replacement.Text = contact_NO
  43. End With
  44. .Find.Execute Replace:=wdReplaceAll
  45. With .Find
  46. .Text = "{$供应商名称}"
  47. .Replacement.Text = side_A
  48. End With
  49. .Find.Execute Replace:=wdReplaceAll
  50. With .Find
  51. .Text = "{$采购品类}"
  52. .Replacement.Text = side_B
  53. End With
  54. .Find.Execute Replace:=wdReplaceAll
  55. With .Find
  56. .Text = "{$结算方式}"
  57. .Replacement.Text = side_C
  58. End With
  59. .Find.Execute Replace:=wdReplaceAll'数据填充
  60. End With
  61. objDoc.SaveAs Path & "\" & strFileName
  62. objDoc.Saved = True
  63. objDoc.Close
  64. Next k
  65. MsgBox "合同文本生成完毕!", vbYes + vbExclamation
  66. Exit_cmdExportToWord_Click:
  67. Set objApp = Nothing
  68. Set objDoc = Nothing
  69. Set objTable = Nothing
  70. Exit Sub
  71. Err_cmdExportToWord_Click:
  72. MsgBox Err.Description, vbCritical, "出错"
  73. Resume Exit_cmdExportToWord_Click
  74. End Sub

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多