Word·VBA实现邮件合并

这篇具有很好参考价值的文章主要介绍了Word·VBA实现邮件合并。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

制作邮件合并模板

Word·VBA实现邮件合并,# Word、PDF,# Excel,VBA,word,vba,邮件合并
Word·VBA实现邮件合并,# Word、PDF,# Excel,VBA,word,vba,邮件合并
域名可以使用中文,最终完成的word模板,wps操作步骤类似
Word·VBA实现邮件合并,# Word、PDF,# Excel,VBA,word,vba,邮件合并

VBA邮件合并_按域名写入

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

Sub word邮件合并_按域名写入()
    '读取当前工作表数据,按arr二维数组第1行表头名称,对word文档中同一域名写入值,生成新文档
    Dim fso As Object, wd As Object, docx$, save_path$, arr, i&, j&, k, v, fs, f
'--------------------参数填写:docx、arr、save_path
    docx = "E:\测试\docx\证明-模板.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
  • 参考资料:
    《Range 对象 (Word)》、《Field 对象 (Word)》

举例

Excel工作表表头与Word文档域名相同
Word·VBA实现邮件合并,# Word、PDF,# Excel,VBA,word,vba,邮件合并

  • 合并结果,20个文件生成用时4.62秒
    Word·VBA实现邮件合并,# Word、PDF,# Excel,VBA,word,vba,邮件合并
    Word·VBA实现邮件合并,# Word、PDF,# Excel,VBA,word,vba,邮件合并

VBA邮件合并_按顺序写入

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

Sub word邮件合并_按顺序写入()
    '读取当前工作表数据,按顺序对word文档中域写入值,生成新文档
    Dim fso As Object, wd As Object, docx$, save_path$, arr, i&, j&, fs, f
'--------------------参数填写:docx、arr、save_path
    docx = "E:\测试\docx\证明\证明-模板2.docx"  '模板文件路径
    arr = ActiveSheet.[a1].CurrentRegion.Value     '合并数据,当前工作表
    save_path = ActiveWorkbook.path & "\结果2\"     '文件保存路径
    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
            j = 1: Set fs = .Content.Fields  '域集合
            If fs.Count >= 1 Then
                Set f = fs(1)
                While Not f Is Nothing
                    j = j + 1: f.result.text = arr(i, j)
                    Set f = f.Next  '下一个
                Wend
            End If
            .SaveAs save_path & arr(i, 2) & ".docx"
        End With
    Next
    tmpl.Close: wd.Quit  '关闭文件,退出程序
    Debug.Print "word邮件合并完成,用时:" & Format(Timer - tm, "0.00")
End Sub
  • 参考资料:
    《Field.Next 属性 (Word)》

举例

在原本的模板上添加了5个域,也可使用Next域,不过Next域在模板中不可见,故推荐使用原来的MergeField
Word·VBA实现邮件合并,# Word、PDF,# Excel,VBA,word,vba,邮件合并
Word·VBA实现邮件合并,# Word、PDF,# Excel,VBA,word,vba,邮件合并文章来源地址https://www.toymoban.com/news/detail-816790.html

  • 合并结果,20个文件生成用时4.58秒
    Word·VBA实现邮件合并,# Word、PDF,# Excel,VBA,word,vba,邮件合并

到了这里,关于Word·VBA实现邮件合并的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Excel·VBA合并工作簿2

    其他合并工作簿的方法,见之前的文章《Excel·VBA合并工作簿》 与之前的文章《Excel·VBA合并工作簿(3,合并文件夹下所有工作簿中所有工作表)》类似,但是按照表头名称,将表格数据汇总至合并表格,表头名称相同的在同一列 举例 共5个工作簿13个工作表,并且改变了C、

    2024年01月21日
    浏览(37)
  • VBA操作WORD(八)设置标题格式(含主、副标题)

    因为主标题和副标题一般都是包含一两句子的段落,所以参数直接传入Paragraph。至于判断主副标题的规则则外面调用部分再做判断。 调用主标题和副标题设置,并且在标题下方增加一空行(注意,不是段后一行的高度,两者不是一回事)。 主副标题判断的逻辑见注释。 需要

    2024年02月15日
    浏览(35)
  • Word处理控件Aspose.Words功能演示:使用 C# 在 Word 文档中创建和修改 VBA 宏

    Aspose.Words 是一种高级Word文档处理API,用于执行各种文档管理和操作任务。API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word。此外, Aspose API支持流行文件格式处理,并允许将各类文档导出或转换为固定布局文件格式和最常用的图像

    2024年02月03日
    浏览(40)
  • VBA操作WORD(六)另存为不含宏的文档

    上面代码需要注意地方两点,也是浪费我很多时间的地方,一是如果采用标题之类作为文件名,因为包括了回车符(换行符)导致代码一直报错,需要先删掉才能保存成功。 第二点,微软官方文档SaveAs2例子的人机交互有点不是很友好,直接用InputBox让用户输入文件名(见中间

    2024年02月15日
    浏览(47)
  • VBA:对Excel单元格进行合并操作

    2024年02月10日
    浏览(39)
  • 实用VBA:17.大量word文件中的文本内容进行批量替换

    在工作中可能会遇到需要对大量word文件中的文字内容进行批量替换的情况。相比excel的批量处理,个人感觉word文档中由于包含大量样式信息,批处理时总感觉有顾虑。一者担心影响了文档的格式,误修改了文档的样式,那后果……整过文档的小伙伴都懂的;二者担心批处理不

    2024年01月25日
    浏览(38)
  • Java实现Word文档转PDF,PDF转Word,PDF转Excel,PDF转换工具

    java实现word文档转PDF,PDF转word 解决只能转换4页问题 解决每页头部存在水印问题 引入依赖 破解的jar包 链接: https://pan.baidu.com/s/1MO8OBuf4FQ937R9KDtofPQ 提取码: 4tsn 源码路径:https://download.csdn.net/download/weixin_43992507/88215577 像流读取文件这些要关闭释放,不然异常报错文件的读取不会

    2024年02月13日
    浏览(52)
  • 使用VBA将大纲级别定义良好的单个Word文档按指定的大纲样式分割成多个文档

    我们知道,大纲级别定义良好的 Word 文档可以轻松用 Edraw master 转换成思维导图。但是,对于一个极长的文档,例如一本教材,直接导入 Edraw master 转换后的思维导图,因为内容过多,仍然很难阅读。这时候,可以考虑分章节将长文档分割成一个一个小文档,再将小文档导入

    2024年02月12日
    浏览(49)
  • excel vba 将多张数据表的内容合并到一张数据表

    功能描述:  一个Excel文件有很多个 样式相同 的数据表, 需要将多张数据表的内容合并到一张数据表里。 vba实现代码如下:  文件链接:数据表合并.bas 下载后直接在excel 查看代码处导入文件即可。

    2024年02月11日
    浏览(44)
  • 前端实现文件预览(pdf、excel、word、图片)

    需求:实现一个在线预览pdf、excel、word、图片等文件的功能。 介绍:支持pdf、xlsx、docx、jpg、png、jpeg。 以下使用Vue3代码实现所有功能,建议以下的预览文件标签可以在外层包裹一层弹窗。 sandbox 这个属性如果是单纯预览图片可以不使用,该属性对呈现在 iframe 框架中的内容

    2024年02月10日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包