ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 3100|回复: 21

[求助] 拜托老师帮看一个EXCEL批量生成合同的代码!

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-3-8 14:08 | 显示全部楼层 |阅读模式
以下是一段可以批量生成合同的代码,是可以运行的。

只是有几个问题想请教下下坛友们:

1、"生成合同"按钮点击了没用、每次需要在代码窗口里手动运行;
2、还要弹出窗口选择数据区域(如果添加了的话,帮备注下可以看懂这样,后期可能有变动)、然后再选择word模板文件,再选择存放位置等,问下要直接生成合同到文件夹里的话要加什么代码啊?
3、日期需要单独改下公式,
4、金额需要加大写;
5、如果可以看到生成的过程,比如     已生成xx份/合计xx份!   就好了,因为可能有点多;


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
    Dim data_areas As Range
    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
    End With
    With Application.FileDialog(msoFileDialogFolderPicker)  '获取输出的文件存储路径
         If .Show = False Then Exit Sub
         Path = .SelectedItems(1)
      End With
    Set objApp = CreateObject("Word.Application")
    objApp.Visible = False

    For k = i To i + j - 1
      contact_NO = Cells(k, 1)
      side_A = Cells(k, 2)
      side_B = Cells(k, 3)
      side_C = Cells(k, 4)
      side_D = Cells(k, 5)
      side_E = Cells(k, 6)
      side_F = Cells(k, 7)
      side_G = Cells(k, 8)


      Set objDoc = objApp.Documents.Open(strTemplates, , False)
      strFileName = contact_NO & ".doc"
     '文件名必须包括“.doc”的文件扩展名,如没有则自动加上
      If Not strFileName Like "*.doc" Then strFileName = strFileName & ".doc"
     '如果文件已存在,则删除已有文件
      If Dir(strFileName) <> "" Then Kill strFileName
     '打开模板文件

    '开始替换模板预置变量文本
     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


                  With .Find
              .Text = "{$金额}"
              .Replacement.Text = side_C
           End With
       .Find.Execute Replace:=wdReplaceAll


           With .Find
              .Text = "{$开始}"
              .Replacement.Text = side_D
           End With
       .Find.Execute Replace:=wdReplaceAll

           With .Find
              .Text = "{$结束}"
              .Replacement.Text = side_E
           End With
       .Find.Execute Replace:=wdReplaceAll


                  With .Find
              .Text = "{$位置}"
              .Replacement.Text = side_F
           End With
       .Find.Execute Replace:=wdReplaceAll


                         With .Find
              .Text = "{$备注}"
              .Replacement.Text = side_G
           End With
       .Find.Execute Replace:=wdReplaceAll



           End With


    '将写入数据的模板另存为文档文件
    objDoc.SaveAs Path & "\" & strFileName
    objDoc.Saved = True
    objDoc.Close
  Next k

    MsgBox "合同文本生成完毕!", vbYes + vbExclamation
Exit_cmdExportToWord_Click:
    Set objApp = Nothing
    Set objDoc = Nothing
    Set objTable = Nothing
    Exit Sub
Err_cmdExportToWord_Click:
    MsgBox Err.Description, vbCritical, "出错"
    Resume Exit_cmdExportToWord_Click
End Sub

000.png
111.png

批量生成合同.zip

38.12 KB, 下载次数: 34

TA的精华主题

TA的得分主题

发表于 2023-3-8 16:03 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
朋友,你是不是不知道在word里面有个叫邮件合并功能的?

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-8 16:13 | 显示全部楼层
洋务德雷 发表于 2023-3-8 16:03
朋友,你是不是不知道在word里面有个叫邮件合并功能的?

那个知道,各有各的特点吧,哈哈

TA的精华主题

TA的得分主题

发表于 2023-3-8 17:25 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
这个问题大佬是不会回答的

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-8 17:56 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2023-3-8 19:32 | 显示全部楼层
本帖最后由 gbgbxgb 于 2023-3-9 14:57 编辑
today77 发表于 2023-3-8 17:25
这个问题大佬是不会回答的

大佬不想答,我来答吧。

批量生成合同.rar

33.62 KB, 下载次数: 64

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-3-8 22:43 | 显示全部楼层
改了下 模板与表格 ,适应 后期通用

ht.rar

34.38 KB, 下载次数: 68

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-3-8 23:20 | 显示全部楼层
ziyuan567 发表于 2023-3-8 16:13
那个知道,各有各的特点吧,哈哈

你这个不能用邮件合并吗?
为啥不用简便方法呢?

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-9 08:44 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
gbgbxgb 发表于 2023-3-8 19:32
大佬不想答,我来答吧。

谢谢大佬,太厉害了,代码都重新编写了,今日鲜花没有了,等有了给您送上鲜花,非常感谢!

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-9 08:46 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
ddmc 发表于 2023-3-8 22:43
改了下 模板与表格 ,适应 后期通用

好的,太感谢了,竟然没用之前的代码,还加了批注,后期改模板了的话也是比较适用,谢谢大佬帮助!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-18 06:26 , Processed in 0.039992 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表