如何根据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文档。
猜你喜欢
- 介绍excel、word等office软件单击超链接出现“由于本机的限制,该操作已被取消,请与系统管理员联系”的解决方法.有时候我们在wor
- Excel中的高级筛选功能具体该如何筛选使用呢?接下来是小编为大家带来的excel2003高级筛选功能的使用教程,供大家参考。excel20
- 许多使用Windows系统的用户Werfault.exe文件应用程序错误,无法正常打开应用程序,情况如何?实际上,我们只需要打开window
- Excel的自动换行是在单元格中,如果文本过长,则超出列宽以外的文本将被隐藏起来。为了在保持列宽一定的情况下显示出单元格中的所有文本,可以设
- 我们在使用word编辑内容的时候,怎样让文档更加美观,更加让人有阅读兴趣呢?就应该设置一个美观的背景,那么下面就由小编给大家分享下word设
- excel,表面上看上去只是一个表格制作软件,其实还可以拿来制作简单的进销存表格,这样的话你就可以不需要买专业的进销存软件啦,下面就跟小编一
- 根据姓名查询快递单号现在我们买东西都是在网上购买,经常都会收到各种快递,通过快递单号查询物件什么时候到。现在有一份快递清单,因为姓名的顺序乱
- EXCEL表格中怎么提取第二个括号中的字符串?急需提取EXCEL表格中的数据,但是EXCEL表格中有很多括号,怎么才能只提取第二个括号中的字
- 有时候我们需要给别人的文档,只能让其阅读,不能修改和编辑,那么就要设置word文档为只读,具体如何设置为只读模式呢?接下来小编教大家简单粗暴
- office2013出来也有一阵子,默认的主题有三种,白色、浅灰色、深灰色。大家可以根据自己的喜爱进行选择,下面就来介绍两种修改主题颜色的方
- Office人员在办公做表格数据时,往往公司有一套字体格式规定,每次做表都要进行修改成既定格式较麻烦。Excel为我们提供了默认字体格式设置
- 操作步骤1、在播放演示文稿时,右键单击,选择指针类型,然后在下拉菜单中选择荧光笔,绘制形状和墨迹颜色可以根据喜好自己更改。 &
- 在Excel中,如果要将十六进制转换为十进制编码,可以使用HEX2DEC函数将十六进制转换为十进制编码。Excel2007可使用HEX2DE
- 分数格式通常用“/”来分隔分子和分母,但在Excel中日期的输入也是用“/”来区分年月日,因此若直接在单元格中输入6/7,然后按Enter键
- 1.打开需要输入常用数据的Excel表格,接着点击工具栏左上角的“Office按钮”,然后点击进入“Excel选项”。 &nb
- 本文介绍Microsoft Excel中RADIANS函数的语法和用法。函数说明RADIANS函数的主要作用是将角度转换为弧度。函数定义RA
- 我们在Word文档中处理文档内容时,都会进行基础的排版设置,比如进行文档的分段,设置首行缩进两字符,设置对齐方式,添加项目符号,编号,调节行
- 使用word编辑文档时,一时之乱不小心把编辑中的word文档没保存就关掉了。这可怎么办? Word文档误删怎么办?
- 第1步,在Windows8系统中打开Word2013文档文件所在的文件夹,然后右键单击Word2013文档文件,选择“属性”命令,如图1所示
- 从Excel 2007开始,Excel条件格式中增加了数据条、色阶、图标集等新功能,可以非常直观地查看和分析数据。Excel 2010则进一