痛点场景:打工人的邮件轰炸末日!
还在当人工打字机?
客户名单500人,手残填错姓名被甲方连环夺命call
邀请函模板改到第8版,Word卡崩3次,血压直冲天灵盖
行政の地狱KPI
年会邀请、促销通知、工资条发放…每月重复打印500次
同事甩来Excel数据,电话和地址居然混在一列!
VBA一键召唤神龙!
3秒生成带姓名的定制邮件,喝着咖啡看代码干活
(老板:效率这么高?——“我天生神力啊”)
核弹级VBA代码:Excel数据自动灌入Word模板
代码实现(复制即用!):
Sub WordMailMerge()
' 核心对象声明(防崩代码必备!)
Dim wdApp As Object ' Word应用程序对象(后期绑定,无需安装版本)
Dim wdDoc As Object ' Word文档对象
Dim i As Long ' 循环计数器
Dim ExcelData As Range' Excel数据区域对象
' 数据源设置(必须修改!)
'▼▼▼ 修改为你的数据表区域 ▼▼▼
Set ExcelData = ThisWorkbook.Sheets("客户表").Range("A1:D500") ' 参数说明:
'A1:D500 → 必须包含标题行,数据从第2行开始
'"客户表" → 数据所在Sheet名称,务必用英文双引号包裹
'▲▲▲ 修改模板路径(生死攸关!) ▲▲▲
WordTemplatePath = "C:\模板.docx" ' 注意:
'必须使用绝对路径(不能有中文/空格)
'模板中需提前插入<<字段名>>标记
' 启动Word隐身模式(老板看不见的神操作!)
Set wdApp = CreateObject("Word.Application") ' 原理:
'CreateObject比GetObject更稳定,避免版本冲突
wdApp.Visible = False ' 关键技巧:
'后台静默运行,不会弹出Word窗口影响操作
' 死亡循环开始(数据行遍历)
For i = 2 To ExcelData.Rows.Count ' 注意:
'i从2开始 → 跳过标题行(假设第1行是标题)
'ExcelData.Rows.Count → 自动获取数据总行数
' 高危操作:打开模板文件
Set wdDoc = wdApp.Documents.Open(WordTemplatePath) ' 警告:
'模板文件必须存在,否则此处会报错崩溃!
' 执行模板标记替换(核心功能段)
With wdDoc.Content.Find
'▼▼▼ 按实际字段修改 ▼▼▼
.Execute FindText:="<<姓名>>", ReplaceWith:=ExcelData.Cells(i, 1).Value ' 参数说明:
'FindText → Word模板中的标记符号
'ReplaceWith → Excel对应单元格的值
.Execute FindText:="<<电话>>", ReplaceWith:=ExcelData.Cells(i, 2).Value
.Execute FindText:="<<地址>>", ReplaceWith:=ExcelData.Cells(i, 3).Value
End With
' 智能保存策略(防覆盖秘籍)
'▲▲▲ 修改输出路径 ▲▲▲
wdDoc.SaveAs2 "C:\生成结果\" & ExcelData.Cells(i, 1).Value & ".docx" ' 技巧:
'使用Excel数据作为文件名 → 避免重复
'必须提前创建"生成结果"文件夹!
wdDoc.Close SaveChanges:=False ' 关键参数:
'False → 关闭时不保存原模板(保护模板不被修改)
Next i ' 重要:继续处理下一行数据
' 收尾清理战场(防内存泄漏)
wdApp.Quit ' 必须操作:彻底关闭Word进程
Set wdApp = Nothing ' 释放对象内存
Set wdDoc = Nothing
' 胜利提示(装X必备)
MsgBox "已批量生成 " & i - 1 & " 份文件!" & vbCrLf & _
"保存路径:C:\生成结果\" & vbCrLf & _
" 建议立即备份成果!", vbInformation, "系统提示"
End Sub
三指禅操作指南:
- Word模板挖坑:在模板中用<<字段名>>标记替换位
- Alt+F11召唤VBA编辑器 → 粘贴代码 → 修改黄标路径
- F5一键开炮 → 坐等文件夹爆出几百份定制文件!
黑暗魔法进阶:
PDF自动转换:代码末尾加wdDoc.ExportAsFixedFormat转PDF
邮件自动发送:搭配Outlook代码秒发500封带附件邮件
异常值捕捉:用If Not IsEmpty(Cells(i,1)) Then防空白行捣乱
避坑保命指南:
- Word模板严禁空格:<<姓名 >>会引发代码吐血
- 数据表第一行必须是标题!
- 关闭360等杀毒软件(可能拦截Word后台操作!)
为什么跪求学VBA?
跨软件操控:让Excel和Word隔空搞基
摸鱼神器:10分钟干完8小时的话
职场暗器:抢先掌握同事不会的黑科技
结语:
这代码够你在公司横着走三年!
关注我,下期教你把生成的文档自动发进500个微信群!
#办公邪术 #摸鱼哲学 #VBA黑暗兵法
现在立刻马上!用代码把重复劳动炸成烟花!