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

    很多时候,您是否有过在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文档。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,240评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,328评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,182评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,121评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,135评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,093评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,013评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,854评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,295评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,513评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,398评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,989评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,636评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,657评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容