如何根据excel数据自动生成word文档
发布时间:2023-07-30 17:24:09
很多时候,您是否有过在WORD里面重复制作某种资料的工作。比如给定了合同模板,需要根据不同合同内容制作出不同的合同,但模板是一样的。一般情况下就是老老实实的一份一份的去填写(还不保证不会有错误)。那么有没有可以自动生完成的办法呢?答案是肯定有,不然我在这哔哔啥呢!接下来言归正传。在此上个大招,接下来就以合同为例:
1、制作合同模板文件,把合同变量部分用特殊变量替换。图示如下:
2、在EXCEL里面添加合同主要内容数据,图示如下:
3、在EXCEL里面添加一个Active X按钮控件,根据自身需要修改其属性。
4、.在按钮控件下写如下代码,并将该EXCEL文件另存为XLSM:
Private Sub cmd_makedoc_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 i As Integer
Dim contact_NO As String
Dim side_A As String
Dim side_B As String
i = ActiveCell.Row
contact_NO = Cells(i, 1)
side_A = Cells(i, 2)
side_B = Cells(i, 3)
With Application.FileDialog(msoFileDialogFilePicker)
.Filters.Add "word文件", "*.doc*", 1
.AllowMultiSelect = False
If .Show Then strTemplates = .SelectedItems(1) Else Exit Sub
End With
'通过文件对话框生成另存为文件名
With Application.FileDialog(msoFileDialogSaveAs)
'.InitialFileName = CurrentProject.Path & "" & contact_NO & ".doc"
.InitialFileName = contact_NO & ".doc"
If .Show Then strFileName = .SelectedItems(1) Else Exit Sub
End With
'文件名必须包括“.doc”的文件扩展名,如没有则自动加上
If Not strFileName Like "*.doc" Then strFileName = strFileName & ".doc"
'如果文件已存在,则删除已有文件
If Dir(strFileName) <> "" Then Kill strFileName
'打开模板文件
Set objApp = CreateObject("Word.Application")
objApp.Visible = True
Set objDoc = objApp.Documents.Open(strTemplates, , False)
'开始替换模板预置变量文本
With objApp.Application.Selection
.Find.ClearFormatting
.Find.Replacement.ClearFormatting
With .Find
.Text = "{$合同编号}"
.Replacement.Text = contact_NO
End With
.Find.Execute Replace:=wdReplaceAll
With .Find
.Text = "{$甲方}"
.Replacement.Text = side_A
End With
.Find.Execute Replace:=wdReplaceAll
With .Find
.Text = "{$乙方}"
.Replacement.Text = side_B
End With
.Find.Execute Replace:=wdReplaceAll
End With
'将写入数据的模板另存为文档文件
objDoc.SaveAs strFileName
objDoc.Saved = True
MsgBox "合同文本生成完毕!", vbYes + vbExclamation
Exit_cmdExportToWord_Click:
If Not objDoc Is Nothing Then objApp.Visible = True
Set objApp = Nothing
Set objDoc = Nothing
Set objTable = Nothing
Exit Sub
Err_cmdExportToWord_Click:
MsgBox Err.Description, vbCritical, "出错"
Resume Exit_cmdExportToWord_Click
End Sub
核心技术部分完毕,那么如何使用呢?
1、单击选定需要输出数据制作合同的行的任意单元格。比如我在此选定了第一行中的B2单元格,当然你可以选择该行的任意一单元格。
2、单击“生成”按钮,弹出合同模板选择对话框。在此,选择我们刚才制作好的合同模板。
3、打开应用该模板,然后随之弹出生成后的合同另存为的对话框。这里文件名会被自动保存为合同编号。
4、生成完毕。以下是效果
以上是抛砖引玉的一个办法,仅需对代码中需要替换的部分进行更改,那么基本上可以做到复杂的输出。实际上技术难度没多大,仅仅是利用了Office里面的宏替换原理而已。经过改造,在实际的生产环境中,可以利用EXCEL从其它系统获取数据,然后再批量制作各种WORD文档。


猜你喜欢
- 欢迎观看 Premiere Pro 教程,小编带大家学习 Pr 的基本编辑技巧,了解工作区和如何创建新项目。第一次启
- 应用程序文件夹在mac电脑中的使用至关重要,频率非常高,如果不小心弄丢了应用程序文件夹,那将是非常麻烦的事儿,今天小编分享一点如何快速找回应
- 我们在使用电脑下载软件的时候有可能会不小心安装了其它的捆绑软件,而往往这些顽固软件都是非常难删除的,我们用电脑的普通卸载功能没办法删除,用了
- PPT中怎么制作随风飘飞的蒲公英?蒲公英成熟的时候,风衣吹就会四处飘散,该怎么做这样的一个动画呢?下面我们就来看看PPT中制作随风飘飞的蒲公
- 有用户表示自己想删除电脑上的pin码,可是pin码变为灰色,无法删除。那么win11pin密码删除是灰色的怎么解决?实际上是因为大家打开了提
- 有些用户还是比较习惯使用Win7系统,想重新装回Win7系统?那么Win10怎么改Win7呢?接下来小编为大家带来Win10重装Win7系统
- 相信很多小伙伴在进行日常办公时,都会需要用到Word文档这款专业的文字处理办公软件。在Word文档中,我们可以设置标题自动分页。也就是将我们
- 微软在今年又将推出一次重大更新——新版本Win10 21H1,但是有些用户觉得自己现在使用的版本还比较稳定,就不想更新到新版本,那要如何阻止
- 放大和缩小excel表主要是方便我们预览,其实放大和缩小excel表有好几种方法,那么具体要怎么做呢?接下来下面小编告诉你wps放大缩小工作
- Word是一款我们比较常用的文档编辑软件,使用的用户也不少,而在Word中,页眉和页脚也是非常重要的功能,因此就要用户好奇Word文档页脚文
- WPS表格的下拉列表在公司制作表格的时候经常会用到,比如很多公司的员工信息中有职位这一资格,但是一个公司内部职位是很清晰的,只有几个,这个时
- 使用表格避免不了计算一些加减乘除(+、-、*、/),小点的数目我们可以用心算,但是数目大了,最好是想点其他的办法,比如今天要为各位讲的“Ex
- win8刚出来.肯定有很多功能大家都不习惯用.现在先来点评一下哪几个方面不大习惯吧  
- 有道词典一出现就受到了许多用户的喜欢,给用户带来的好处是毋庸置疑的,当用户遇到自己不会的单词或是段落时,就可以在有道词典软件中来使用翻译功能
- 今日凌晨面向Win10操作系统用户发布了最新的更新补丁KB5014023,版本号为19044.1737,下文就为大家带来了详细的更细介绍,感
- 今天小编为大家带来了windows10设置没有切换到本地账户选项怎么办 win10设置没有切换到本地账户选项解决方法,感兴趣的朋友们可以跟着
- 听说前段框架vue挺火的,就想折腾学习下这个超火的前端框架。框架确实简单,但是和传统的js html还是有些区别的。所以调试上面还是有些问题
- win10电脑光标乱跑怎么解决?很多小伙伴在使用win10电脑的时候,都遇到过鼠标在电脑屏幕上乱动,不知道怎么解决,下面小编就给大家带来了w
- 我们在用EXCLE时候,由于便于统计的原因我们有时需要利用图形来显示你要说明的数字,这样更加的形象直观的观察出你要表达的内容,那么excel
- Command-C 拷贝,Command-V 粘贴,Command-Tab 切換 App 每个人都有自己最常用的快捷键。但你知道吗?其实你还