最近总是有很多合同要处理,但其实合同模板都是一样的,只是里面的甲方对象不同,所以突然想到word其实有vba宏可以使用。
所以让AI帮我写了个脚本,自己稍加改动就可以运行。
目前就是界面还不太友好,全是弹窗,下一步试试改下界面。

Sub GenerateContract()
    ' 声明变量
    Dim doc As Document
    Dim partyA As String    ' 甲方名称
    Dim partyAAddress As String    ' 甲方地址
    Dim partyAContact As String    ' 甲方联系人
    Dim contractDate As String     ' 合同日期
    Dim contractNo As String       ' 合同编号
    
    ' 获取用户信息(这里可以通过输入框或指定单元格获取)
    partyA = InputBox("请输入甲方名称:")
    partyAAddress = InputBox("请输入甲方地址:")
    partyAContact = InputBox("请输入甲方联系人:")
    contractDate = Format(Date, "yyyy年mm月dd日")
    contractNo = "FG" & Format(Date, "yyyymmdd") & "-" & Format(Time, "hhmm")
    
    ' 打开模板文档
    Set doc = Documents.Open("/Users/lay/Dropbox/客户QA/合同模板/ContractTemplate.doc") ' 修改为你的模板路径
    
    ' 替换模板中的占位符
    With doc
        ' 假设模板中使用 {PartyA} 这样的占位符
        .Application.Selection.Find.Execute FindText:="{PartyA}", _
            replaceWith:=partyA, Replace:=wdReplaceAll
        .Application.Selection.Find.Execute FindText:="{PartyAAddress}", _
            replaceWith:=partyAAddress, Replace:=wdReplaceAll
        .Application.Selection.Find.Execute FindText:="{PartyAContact}", _
            replaceWith:=partyAContact, Replace:=wdReplaceAll
        .Application.Selection.Find.Execute FindText:="{ContractDate}", _
            replaceWith:=contractDate, Replace:=wdReplaceAll
        .Application.Selection.Find.Execute FindText:="{ContractNo}", _
            replaceWith:=contractNo, Replace:=wdReplaceAll
    End With
    
    ' 另存为新文档
    doc.SaveAs2 FileName:="/Users/lay/Dropbox/客户QA/合同模板/" & PartyA & "飞鸽劳务通SaaS软件系统及抖音招聘账号报白使用权益服务合同_" & contractNo & ".doc"
    
    ' 可选择是否关闭文档
    ' doc.Close
    
    MsgBox "合同已生成!保存路径:/Users/lay/Dropbox/客户QA/合同模板/合同_" & contractNo & ".doc"
    
    ' 清理
    Set doc = Nothing
End Sub