word使用笔记(二)、邮件合并(模板套用)

文章目录

更新目录

方式一:

点目录中任何位置,按f9即可。

方式二:

目录上右键 | 更新域,选:

只更新页码

更新整个目录

也是可以实现更新的。

复制为表格数据?

很多时候我们有这样的需求,文本或ai生成的内容可以直接复制到表格中。

1、excel的数据 # 可以

2、其他word的表格 # 整个可以,复制几行可能不行

3、ai生成的markdown表格 # 直接复制到表格是不行的

这里有个技巧,既然直接到word有时不行,但是到excel大多都可以,那么转一道,先excel再word,兼容性就比较强了。

也就是 内容->excel->word。

邮件合并(模板套用)

1、新建邮件合并.docx,输入内容:

复制代码
接口名称:
请求地址:
请求方式:

2、新建接口列表.xlsx,内容为:

复制代码
接口名称	请求地址	请求方式
接口1	http://www.baidu.com	POST
接口2	http://www.ali.com	POST

3、邮件 | 开始邮件合并 | 普通word文档(这里根据实际需要进行选择)。

注:开始邮件合并必须点,否则不知道使用什么模板。

4、邮件 | 选择收件人 | 使用现有列表,选中接口列表.xlsx。

5、打开开发工具,然后 开发工具 | 点 visual basic | normal上右键 | 插入 | 模块,代码如下:

basic 复制代码
Sub MailMergeSplitSingleDoc()
    Dim mainDoc As Document
    Dim newDoc As Document
    Dim recTotal As Long, i As Long
    Dim saveFolder As String
    Dim fileName As String
    Dim targetField As Variant
    
    '===================== 修改这里 =====================
    saveFolder = "D:\word\" '输出文件夹,末尾必须带\
    Dim nameField As String
    nameField = "接口名称" '当前Excel表头第一列,用来当文件名
    '======================================================
    
    Set mainDoc = ActiveDocument
    '判断是否绑定数据源
    If mainDoc.MailMerge.DataSource Is Nothing Then
        MsgBox "错误:当前文档未绑定邮件合并数据源!", vbCritical
        Exit Sub
    End If
    
    '校验字段是否存在
    On Error Resume Next
    targetField = mainDoc.MailMerge.DataSource.DataFields(nameField).Value
    On Error GoTo 0
    If IsEmpty(targetField) Then
        MsgBox "错误:数据源不存在字段【" & nameField & "】,核对Excel表头!", vbCritical
        Exit Sub
    End If
    
    '校验有效数据行数
    recTotal = mainDoc.MailMerge.DataSource.RecordCount
    If recTotal < 1 Then
        MsgBox "错误:数据源未读取到有效数据(记录数=" & recTotal & "),请重新绑定Excel!", vbCritical
        Exit Sub
    End If
    
    Application.ScreenUpdating = False
    Application.DisplayAlerts = wdAlertsNone
    
    For i = 1 To recTotal
        mainDoc.MailMerge.DataSource.ActiveRecord = i
        
        With mainDoc.MailMerge
            .Destination = wdSendToNewDocument
            .SuppressBlankLines = True
            .Execute Pause:=False
        End With
        
        Set newDoc = ActiveDocument
        '读取Excel「接口名称」列作为文件名
        fileName = Trim(mainDoc.MailMerge.DataSource.DataFields(nameField).Value)
        '清理文件名非法字符
        fileName = Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(fileName, "\", ""), "/", ""), ":", ""), "*", ""), "?", ""), """", ""), "<", ""), ">", ""), "|", ""), " ", "")
        
        '不存在文件夹则自动创建
        If Dir(saveFolder, vbDirectory) = "" Then
            MkDir saveFolder
        End If
        
        newDoc.SaveAs2 fileName:=saveFolder & fileName & ".docx", FileFormat:=wdFormatXMLDocument
        newDoc.Close wdDoNotSaveChanges
    Next i
    
    Application.ScreenUpdating = True
    Application.DisplayAlerts = wdAlertsAll
    MsgBox "批量拆分完成!共生成 " & recTotal & " 份接口文档,路径:" & saveFolder, vbInformation
End Sub

按f5即可执行,在d:/word下生成接口1、接口2两个文档,内容也套用了模板的内容即为成功。

模板中的字段要使用导入合并域

注:千万不要手敲,例如手敲《接口名称》,这里的双书名号和插入合并域的符号不一样。

复制代码
《》 # 这个是手敲的,不对
<< >> # 是邮件合并专用的字段标记,这个对
运行宏的方法

1、f5

2、点运行图标(向右的绿色小箭头)

相关推荐
叼烟扛炮33 分钟前
Linux 学习笔记(五十六):IO 多路复用初探——select 的“三宗罪”
linux·服务器·数据库·笔记·学习·php
叼烟扛炮7 小时前
Linux 学习笔记(五十八):IO 多路复用封神——epoll 底层原理揭秘
linux·运维·服务器·网络·笔记·学习·php
陈布衣8 小时前
MySQL(1)_MySQL 5.7.21 Linux 安装笔记
linux·笔记·mysql
缘来是你远去是我11 小时前
本地个人笔记exe
笔记
FakeOccupational12 小时前
【电路笔记 STM32】RTC配置:晶振选择+闹钟Configuration+中断设置
笔记·stm32·实时音视频
迪康coolmu12 小时前
企业U盘管控落地实战:基于迪康端点安全一体化管理系统的移动存储安全实践
运维·人工智能·经验分享·笔记·安全·电脑
Z21-X15 小时前
云原生运维学习笔记:容器技术的演进、底层原理与 Docker 全生命周期管理
运维·笔记·学习·云原生
Rabitebla1 天前
【Linux 底层原理】进程(十):进程等待详解---从僵尸进程到 wait、waitpid 与 status
linux·c++·笔记·学习·visual studio
小lu飞1 天前
2026小红书小工具怎么制作:纯前端 ZIP 打包、沙箱限制与笔记挂载流程
前端·笔记·ai·ai编程
无心水1 天前
24、系统架构师论文写作专题 核心考点与学习笔记
笔记·学习·系统架构·架构师·安全架构·软考架构师·软考系统架构设计师