目录
前言
步骤
准备工作
引用加载项
运行
代码如下:
前言
文章参考 excel中的数据如何批量导入固定格式的word中? - 知乎
本文使用Excel中的VBA编辑器,实现将表格中数据批量填写进固定模板的word文档。本文设置了四个填充项,可根据需要自行添加更多数据导入位置。
步骤
准备工作
- 准备好word模板文件,将需要填写的位置用特殊变量代替
如写为:{$供应商名称},{$采购品类}
2.打开excel-开发工具-插入-ActiveX控件
- 开发工具不在工具栏中的,可按以下路径设置:
- 文件-选项-自定义功能区-开发工具
引用加载项
- 选择“Microsoft Word16.0 Object Library”-浏览-在路径中找到“MSWORD.OLB”-打开-确定
运行
- 保存excel表类型为启用宏的
- 在弹出的第一个界面中选择Word模板-第二个界面选择保存地址-确定-批量生成合同
代码如下:
Private Sub CommandButton1_Click() On Error GoTo Err_cmdExportToWord_Click Dim objApp As Object 'Word.Application Dim objDoc As Object 'Word.Document Dim strTemplates As String '模板文件路径名 Dim strFileName As String '将数据导出到此文件 Dim side_C As String'数据导出 Dim total_data As Integer Set data_areas = Application.InputBox(prompt:="请鼠标选择需要输出数据的区域", Title:="选择", Type:=8) '选取输出的数据区域 i = data_areas.Row '获取选取区域开始行所在行号 j = data_areas.Rows.Count ' 获取选取区域总行数 With Application.FileDialog(msoFileDialogFilePicker) .Filters.Add "word文件", "*.doc*", 1 .AllowMultiSelect = False If .Show Then strTemplates = .SelectedItems(1) Else Exit Sub With Application.FileDialog(msoFileDialogFolderPicker) If .Show = False Then Exit Sub Set objApp = CreateObject("Word.Application") side_C = Cells(k, 4)'数据引用位置 Set objDoc = objApp.Documents.Open(strTemplates, , False) strFileName = contact_NO & ".doc" If Not strFileName Like "*.doc" Then strFileName = strFileName = strFileName & ".doc" If Dir(strFileName) <> "" Then Kill strFileName With objApp.Application.Selection .Find.Replacement.ClearFormatting .Replacement.Text = contact_NO .Find.Execute Replace:=wdReplaceAll .Replacement.Text = side_A .Find.Execute Replace:=wdReplaceAll .Replacement.Text = side_B .Find.Execute Replace:=wdReplaceAll .Replacement.Text = side_C .Find.Execute Replace:=wdReplaceAll'数据填充 objDoc.SaveAs Path & "\" & strFileName MsgBox "合同文本生成完毕!", vbYes + vbExclamation Exit_cmdExportToWord_Click: Err_cmdExportToWord_Click: MsgBox Err.Description, vbCritical, "出错" Resume Exit_cmdExportToWord_Click
|