Word·VBA实现邮件合并

目录

之前写过的一篇使用《python实现word邮件合并》,本文为vba实现方法

制作邮件合并模板


域名可以使用中文,最终完成的word模板,wps操作步骤类似

VBA实现邮件合并

Excel启用宏的工作表运行以下代码,读取当前工作表数据,对模板word文档,按工作表表头名称对同一域名写入值,生成新文档

vbnet 复制代码
Sub word邮件合并_按域名写入()
    '读取当前工作表数据,按arr二维数组第1行表头名称,对word文档中同一域名写入值,生成新文档
    Dim fso As Object, wd As Object, docx$, save_path$, arr, i&, j&, k, v, f, fs
'--------------------参数填写:docx、arr、save_path
    docx = "E:\测试\docx\证明-模板word.docx"  '模板文件路径
    arr = ActiveSheet.[a1].CurrentRegion.Value     '合并数据,当前工作表
    save_path = ActiveWorkbook.path & "\结果\"     '文件保存路径
    Set fso = CreateObject("Scripting.FileSystemObject"): tm = Timer
    If Not fso.FolderExists(save_path) Then fso.CreateFolder (save_path)  '创建文件夹
    Set wd = CreateObject("word.application") ': wd.Visible = True  '默认不可见
    Set tmpl = wd.Documents.Open(docx)
    For i = 2 To UBound(arr)
        With tmpl
            For j = 1 To UBound(arr, 2)
                k = arr(1, j): v = arr(i, j)  'k表头/域名,v值
                Set fs = .Content.Fields  '域集合
                For Each f In fs
                    'Field.Code域代码,Field.Result域结果
                    If InStr(f.Code.text, k) Then f.result.text = v
                Next
            Next
            .SaveAs save_path & arr(i, 2) & ".docx"
        End With
    Next
    tmpl.Close: wd.Quit  '关闭文件,退出程序
    Debug.Print "word邮件合并完成,用时:" & Format(Timer - tm, "0.00")
End Sub

举例

Excel工作表表头与Word文档域名相同

  • 合并结果,20个文件生成用时4.62秒

相关推荐
小小Ruby1 小时前
利用vba替换word中多个表格,相邻单元格的文字
word
T0uken20 小时前
【前端】:单 HTML 去除 Word 批注
前端·html·word
诸葛大钢铁1 天前
WORD压缩两个免费方法
word
KingCruel1 天前
NPOI 操作 Word 文档
word
小可的科研日常2 天前
保持Word中插入图片的清晰度
word
小码ssim2 天前
通过POI实现对word基于书签的内容替换、删除、插入
java·word
一把年纪学编程2 天前
【牛马技巧】word统计每一段的字数接近“字数统计”
前端·数据库·word
爱吃零食的白糖3 天前
word换行符和段落标记
word
莫负初3 天前
Excel使用VBA批量计算指定列的中位数和标准差并筛选指定列数据
数据分析·自动化·excel·vba·方差·标准差
Etincelle3 天前
【LaTeX】Word插入LaTeX行间公式如何编号和对齐
word·wps·latex