欧非资源网:安全、免费、专业放心的资源下载站! 最新软件|软件分类

您的位置:欧非资源网 > Excel专区 > Excel函数 > 如何根据excel数据自动生成word文档

如何根据excel数据自动生成word文档

时间:2020-04-07 21:00作者:admin来源:未知人气:2193我要评论(0)

很多时候,您是否有过在WORD里面重复制作某种资料的工作。比如给定了合同模板,需要根据不同合同内容制作出不同的合同,但模板是一样的。一般情况下就是老老实实的一份一份的去填写(还不保证不会有错误)。那么有没有可以自动生完成的办法呢?答案是肯定有,不然我在这哔哔啥呢!接下来言归正传。在此上个大招,接下来就以合同为例:

1、制作合同模板文件,把合同变量部分用特殊变量替换。图示如下:

根据EXCEL数据自动生成WORD文档

 

2、在EXCEL里面添加合同主要内容数据,图示如下:

根据EXCEL数据自动生成WORD文档

 

3、在EXCEL里面添加一个Active X按钮控件,根据自身需要修改其属性。

根据EXCEL数据自动生成WORD文档

 

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单元格,当然你可以选择该行的任意一单元格。

根据EXCEL数据自动生成WORD文档

 

2、单击“生成”按钮,弹出合同模板选择对话框。在此,选择我们刚才制作好的合同模板。

根据EXCEL数据自动生成WORD文档

 

3、打开应用该模板,然后随之弹出生成后的合同另存为的对话框。这里文件名会被自动保存为合同编号。

根据EXCEL数据自动生成WORD文档

 

4、生成完毕。以下是效果

根据EXCEL数据自动生成WORD文档

 

以上是抛砖引玉的一个办法,仅需对代码中需要替换的部分进行更改,那么基本上可以做到复杂的输出。实际上技术难度没多大,仅仅是利用了Office里面的宏替换原理而已。经过改造,在实际的生产环境中,可以利用EXCEL从其它系统获取数据,然后再批量制作各种WORD文档。

相关阅读 Excel有哪些常用的数学函数?​Excel取消表格中虚线的两种方法Excel最常见的「错误值」,这些含义你都知道吗?实现快速找出Excel表格中两列数据不同内容的3种方法!如何利用Excel一键提取身份证的这些重要信息,公式直接套用!Excel如何制作动态红绿灯,工作可不要亮红灯哦Excel身份证号大探索excel如何根据日期按月汇总计算公式Excel浪漫表白公式,发给心仪的她/他Excel表格如何自动求和

文章评论
发表评论

热门文章 excel 两表数据快速对比,高手都是这样做,四种方法随你选.xlsm是什么文件格式,以及xlsm文件怎么打开的方法excel if函数如何多个条件并列excel中计算加权平均数的公式:用SUMPRODUCT和SUM函数计算加权平均

最新文章 Excel有哪些常用的数学函数?​Excel取消表格中虚线的两种方法 Excel最常见的「错误值」,这些含义你都知道吗?实现快速找出Excel表格中两列数据不同内容的3种方法!如何利用Excel一键提取身份证的这些重要信息,公式直接套用!Excel如何制作动态红绿灯,工作可不要亮红灯哦

人气排行 excel 两表数据快速对比,高手都是这样做,四种方法随你选.xlsm是什么文件格式,以及xlsm文件怎么打开的方法excel if函数如何多个条件并列excel中计算加权平均数的公式:用SUMPRODUCT和SUM函数计算加权平均excel中IF条件函数10大用法完整版,全会是高手,配合SUMIF,VLOOKUPexcel中COUNTIFS函数9种高级用法详解,条件统计重复值,告别加班涨工如何解除Excel VBA工程密码excel 如何根据身份证号码提取户籍所在省份地区函数公式

盖楼回复X

(您的评论需要经过审核才能显示)