5.高效文档处理(多文件)
5.1 宏
什么是宏?
从技术上说,宏就是保存在文件后台的 VBA 代码,它的作用主要有两个,一个是自动执行一些操作,一个是用来扩展 office 的功能,也就是可以通过编程的方式创建出一些 office 没有的功能,而录制宏这个功能可以把我们在 office 里做的操作录制下来,自动转换成代码。
录制宏、使用宏
- 设置宏名、设置宏的保存位置
视图——宏——录制宏

保存在 Normal 文件里面,对当前电脑里所有 word 文件都可用

设置红色、加粗、下划线
停止录制


- 录制宏的注意事项
在录宏之前选好操作对象,不要把选择操作对象这一步也录到宏里面,宏里面应该只录制操作本身
- 运行宏、删除宏
➢ 运行宏:
选中另一段文字,打开宏对话框,这里会列出所有打开的 word 文件以及 Normal 这个文件里保存的宏

效果:字体并没有变红,原因是改变字体颜色这步操作并没有被记录下来
随着版本迭代,微软对录制宏这个功能限制越来越多(Excel 里没有),这节课的目的是讲运行别人写的宏,而不是录制宏。录制宏在 word 里没什么用,因为能录制的操作太少了,仅能录制的宏用样式更简单。

➢ 删除宏

关于 Normal 文件
(1)Normal 文件的保存位置



(2)Normal 文件的说明
有可能不一样,一开始是.dotx,往 Normal 里保存过宏,会变成.dotm。
如果在中英文版之间切换过,有可能 Normal 文件会被删除重新建立,保存的设置和内容可能会被清除掉。
如果我们想删除掉 normal 里保存的所有特殊设置,还有包括宏,可以直接把 Normal 这个文件删除啊,删除 Normal 文件以后呢,在新建 word 文档的时候,系统会自动恢复出一个空白的 Normal 文件。
我们创建宏的时候,如果选择保存在当前文件,那关闭文件的时候需要点保存,宏是随当前文件一起保存的。如果选择的是保存 Normal 文件里边,那就不需要单独点保存命令了,因为 Normal 文件里的宏包括对宏的修改是自动保存的,即使把当前文件关闭并且选择不保存,那 Normal 文件里的宏呢也不会丢失。
运行宏的多种方式
宏对话框(见上)、快速访问工具栏、快捷键
另外两种方式可以在录制宏对话框里设置,也可以之后统一设置

- 快速访问工具栏

点击“修改”可以修改宏按钮的图标和显示名称

效果:

- 设置快捷键


VBA 简介
认识 VBA 编辑器:开发工具——Visual Basic,快捷键 alt+f11(这个我试了不行)

几个重要术语:
- 文件
- 模块
- 过程(文档模块、标准模块、窗体模块、类模块)
- 语句(Sub 过程、Function 过程)

广义上的宏与狭义上的宏(标准模块中的 Sub 过程)
其他相关要点:注释、缩进、大小写、Option Explicit(有无没影响)、代码保存
运行宏时报错怎么办?——调试
拿到别人写的宏代码要怎么办?

如果没写过程头和 End Sub,就先创建一个空白宏再复制粘贴

文件类型与安全提示
4 种常见的 Word 文件:.docx、.docm、.dotx、.dotm
x 不带宏,m 带宏
.docx(默认)不允许存宏,所以如果当前文件里创建了宏或者是 VBA 代码,保存的时候要更改文件类型,改成.docm,如果是默认文件类型再强制保存,会自动把文件里所有的宏和 VBA 代码都删除掉。
可以通过图标来判断文件里是否带宏

带宏的文件要确保没有问题再打开,假如我们打开了有问题的文件,office 提供了第二层的保护

Normal 文件中有宏不会进行安全提示
5.2 邮件合并(上)
➢ 第一步
邮件——选择收件人——使用现有列表



➢ 第二步
光标放在需要插入处,邮件——插入合并域——选择 Excel 表格相应的列名
可以插入多个合并域


➢ 第三步
邮件——完成并合并——编辑单个文档

选择用 Excel 表格的哪些行

效果:新生成了一个文档,批量建立了 N 多个页面,每个页面内容不一样

做错了的话,把这个文件删掉重做就好
发电子邮件:借助 Outlook 软件(能正常收发邮件)


和群发邮件的区别:
- 对每一个人的,不是很多个收件人,且客户看不到给另外哪些人发了
- 每个人都有一封独立的文件(正文,不是附件),内容不一样
5.2 邮件合并(下)
默认情况下每一个重复片段都单占一个页面,因为生成文档的时候 word 会自动在每一个重复片段的下方添加一个分节符

更改设置,把所有内容连起来,邮件——开始邮件合并——目录,默认是信函(添加分节符)

效果:

邮件合并的应用:
- 用 word 解决 Excel 问题:将一个规范的数据表改造成每一个数据行的上面自动重复标题行
先新建一个空白的 word 文件,然后把这个表格的前两行粘过来,关闭 Excel 文件

先把第二行删除,使用现有列表连接 Excel 文件,在每个空白单元格上插入合并域,选择目录

效果:

把整个这个表格粘回到 Excel
希望每两行中间有个空行,或者说每个重复的标题行的上方能有一个空白行:在这个表格下方多敲一个回车啊然后再完成合并
此时的片段是两行表格再加上一个空白行
效果:

- 做标签:员工工牌,产品标签等
标签一般比较小,比如 4 厘米×8 厘米,一种方法是把这个纸张缩小,在 word 里边将纸张大小直接设置成最终标签的大小,然后再用邮件合并,批量生成。还有一种做法是不调这个纸张,仍用 a4 或者是更大的纸,在一张纸上排布多个标签,需要用到 word 里面有一个专门的标签功能。
新建一个空白的 word 文档,邮件——开始邮件合并——标签

每一个标签型号呢都代表一种标签大小的定义
自定义:纸张 a4,标签大小 4 厘米×8 厘米,第一个标签离页面上边缘和左边缘有 1 厘米的间距,标签和标签之间有个 2 厘米的间距

下面邮件合并,连接“工资”Excel 文件,出现很多“下一记录”,不用管

插入合并域,编辑第一个标签

第一个标签做完以后,邮件——更新标签,把第一个标签的全部内容复制到后边的标签


最后点完成合并
效果:

另一种方法:目录加分栏
新建一个空白的 word 文件,把页边距改成比较窄的格式,然后把页面设置成两栏


连接 Excel 文件,做第一个标签,多留几个空行,选择目录

完成并合并
效果:

思考题:我在第一个生成邀请函的这个案例里边啊,虽然能够批量生成 N 多页邀请函,但都是在一个文件里边,能不能批量生成 N 多个文件,每个文件呢是一个邀请函。
5.3 主控文档
用途及基本用法
(1)用途:多人协作编写一个文档(每个人编写文档的一部分),每一部分都可以形成一个单独的子文件,最后再把所有子文件合并成一个主文件,最关键的是主文件和子文件之间可以保持同步更新
(2)基本用法:比如将三个子文件合并到一个主文件里
视图——大纲

点击显示文档、插入,只能一个一个插入,注意将最上方多余的空行删除掉(其实是分节符)

页面视图效果:

➢ 注意:主控文档没有保存具体内容,只是保存了三个文件的链接,具体内容保存在三个子文件里面
主文档与子文档的同步更新
✌ 双向同步更新
刚打开主控文档的时候,可能会只显示文件链接,需要切换到大纲视图,点击展开子文档


效果:

注意事项
(1)每个子文档会自动添加分节符

添加子文档的时候,word 首先会在主文档的最前面和最后面各添加一个分节符,最前面那个分节符(上面那个空行)已经删了,然后呢会在每两个子文档之间添加两个分节符,其中一个会添加到这个子文档最后面并存入子文档,另一个会保留在主文档
视图——大纲——显示文档


框代表子文档的边界,一个分节符在一个框里面的,说明存入子文档的,而另外的分节符在两个框之间,说明保留在主文件里
点击”显示文档“右侧的”折叠子文档“

可以看到主文档里存的是一个链接一个分节符一个链接一个分节符
➢ 注意:除了最上面和最下面的分节符最好不要随便删除,可能会增加一些莫名其妙的错误,甚至导致文档消失
(2)子文件最好放在一个固定的共享文件夹内
实际操作的时候,最好先建立一个共享文件夹,然后把所有子文档一直放在这个固定的共享文件夹里面,如果某个作者想修改自己的一部分,只需要直接登录到这个共享文件夹里面,然后直接修改自己那个文件,主文档不需要重新合并,自动同步更新。
如果没有共享文件夹,主编只需要用新的覆盖掉旧的就行,要注意新的后面要添加一个分节符,不然覆盖掉后可能发现分节符没了
(3)所有文件最好统一模板
确保所有文件的样式是统一的,否则合并文档的时候会提示冲突,选是/否都会匹配主文档的样式

(4)注意使用自动编号
主要指关联样式的多级列表,确保所有编号的正确性,便于更新对吧
另外在子文档里,比如第二章子文档,虽然这个文件里只有一章,但可以把编号设置成从 2 开始对吧
其余相关功能
- 创建
视图——大纲——创建


创建后出现一个框,每一个框代表一个子文档,可以写一些内容,关闭保存的时候这里面每一个框只要不是插入进来的子文档,就会自动生成一个新的子文档,然后用框里的第一行当做文件名。
- 锁定文档

把一个子文档变为只读的状态,比如把光标放在第一章里面,然后点锁定文档,有时候会提示保存,点一下保存,现在第一章就被锁定,变为只读状态了
- 取消链接

把一个子文档链接给断开,比如把光标放在第一章里面,然后点取消链接,跟那个文件没有关系了,已经把第一章里面全部的内容都变为静态文本存到这个主文档里面。所以最后完全编辑完了以后,可以把每一个子文档的链接都断开,整个文档就变为一个最终的静态形式,即包含所有内容的一个静态文本。或者 ctrl+a 全选,把所有内容复制到一个新的 word 文件里,也会是一个静态文档。
- 合并与拆分

➢ 注意:必须把光标放在一行的起始位置才能拆分,实际操作的时候最好不要从一章中间去拆分,这样生成的新文件编号会乱
先把光标放在 2-4 这一行的起始位置,点击拆分,关闭保存


- 合并
可以选中多个子文档,把后面几个子文档内容合并到第一个子文档

选中整个第二章,点击合并,变为一个框了,表示已经合成一个文档,然后可以把那个离职文件给删除

5.4 多文件合并与拆分
合并文件
拷贝宏(MergeFile、SplitFile、ExpertPDFByPage)到 word 里面,拷贝完关闭文件不需要保存(Normal 自动保存)

合并 5 个文件到 1 个文件里,“合并后的文件”的页面设置和各种格式和 5 个文件一致

(1)用“插入对象”功能
➢ 特点:单向同步、不分页
插入——对象——文件中的文字


可以多选,可以通过书签设置插入范围,这里先不管
直接点插入或者插入为链接效果是一样的,点插入的进来的是普通的文字,跟原文件没有关系;点插入链接其实是灰色的域,点右键有一个域菜单,可以单向更新(原文件→合并文件)

可以管理链接,信息——编辑指向文件的链接


这个功能不会在插入的个文档之间添加分节符,所有内容是连续的
(2)用”主控文档“功能
➢ 特点:双向同步、自动更新
运行 MergeFile 宏


这几个宏最后都添加了一个框,程序结束之前不要点 word 窗口,否则有可能会影响程序运行

可以批量删除分节符:

如果不想继续协作编辑,可以点取消链接或者拷贝到新文件里,变为一个静态的普通文档。之前说不要随便删分节符,只是在保持链接的状态下,取消链接以后变成普通文档就可以了。
拆分文件
之前的思考题,将邀请函生成多个文件
(1)用“主控文档”拆分文件(新的文件格式问题)
需要先把文件以子文档的形式添加到一个空白文件里,才能进行拆分
打开 Template 文件(页面设置和样式跟邀请函完全一样的空白文件),进入大纲视图,插入“邀请函”文件
依次把光标放到每一个“邀”字前面,然后点拆分

简化:用查找、定位(定位到下一页的起始功能),添加到快速访问工具栏
问题:会自动往新生成的那些文件里添加分节符,用的是 word 默认的页面设置,拆分的文件的页面设置(纸张大小、方向、字体方案等)可能会跟当前文件不一样。这个功能本质是批量生成,批量新建一些空白 word 文件,然后把一段一段内容 copy 过去。
也可以按查找拆分
(2)SplitFile(最好有个叫“Template“的模板文件)
- 按页拆分
打开待拆分的文件,直接在文件里运行 SplitFile 宏


运行原理:首先检查当前文件夹里有没有一个叫 Template 的文件,如果有就把这个文件复制 N 多份,如果没有就直接生成 N 多个新的 word 文件,然后再把原文件里每个页面内容依次复制到相应的文件。
结束后关闭“邀请函”文件,不需要保存


可以对这些文件批量重命名
- 按查找功能拆分(先用查找功能找到一个拆分点)

查找到第二章标题后关闭对话框


效果:

(3)ExpertPDFByPlage(连续型长文档不适合按页面拆分)
对于这种连续性的长文档是不适合按页面拆分的,因为 word 文件的记录方式跟 PDF 文件不一样,PDF 是一种精确的静态的记录方式,但 word 里面的所有的内容格式都是动态的,按页面拆分可能发生一些错误。如果非得按页面拆分,就直接存成 PDF 文件。
运行 ExpertPDFByPlage 宏

效果:

5.5 多文件批量修改
用“主控文档”批量修改多文件
(1)把要修改的文件添加到一个主控文档内
新建一个空白的 word 文件,运行 MergeFile 宏

弹出提示:

如果在当前文件和正在添加的子文件里面发现了同名但定义不同的样式,会弹出这个提示之前。首先无论点”是“还是点“否”,文字的最终显示格式是以当前文件的样式定义为准的,而且无论点”是“还是点“否”,对子文件都没有影响,但是对于主文件如果点“否”没有任何影响,尤其是样式面板,但点”是“的话,那么样式面板里所有发现的这些同名的定义但不同的样式就会多出一些相应的副本,也就是说一个代表主文件的样式,一个代表子文件的样式。
依次点击“全是”,完成后打开样式面板

(2)用查找替换修改内容
- 把所有“、”改成“,”
查找替换,注意不要选中任何文字

(3)用查找替换/选择格式相似的文本修改格式(不能用样式)
- 把所有文件里的章标题都改成红色字体
批量修改格式的三种方法:①修改样式;②选择格式相似的文本;③查找替换
对于用主控文档来实现多件批量修改,改样式不好使,子文档还是原样显示,即使主文档样式和子文档一样也不好使
将光标放在第 1 章后面,选择格式相似的文本,把字体改成红色(直接更改文字格式)
效果:

(4)删除增加的分节符
对前面的补充:首先整个文档最前面和最后面各有一个分节符,可以直接删除,对谁都没有影响。中间是每两个子文档之间有两个分符,其中上面这个会存到子文件里,下面这个会保留在主文件里,下面这个实际上是作为两个子文档之间的分隔标记,不一定非得是分节符,一般改成换行符也可以,关键是要有这么一个分隔字符。所以之前说如果主文档不断开链接,再把所有的分节符直接删除,关闭主文档再重新打开会发现所有的子文档都消失了,主要就是因为中间的这个标记没了。
对于子文档里的分节符也不能直接删除,需要把分节符改成换行符,跟插入以前的状态一样
查找两个连续的分节符替换成两个连续的换行符

替换里写不了分节符

效果:


(5)关闭保存主文件
真正保存的是子文件,主文件保存时子文件会自动保存,保存后可以删除子文件
(6)此法不能批量修改页面设置等整体设置
用 VBA 批量修改多文件
(1)先把所有操作录成一个宏
比如经常对一批文件执行以下三步操作:将所有文件里的空格改成 - 号、红色文字改成蓝颜色、纸张方向改为横向
只打开第一章的文件,录制宏



(2)注意实际录下的语句不一定完整和正确
➢ 一般查找替换录的最好,其他修改样式等经常录出一些错误
(3)然后把代码模板里的语句复制到录的宏里
现在这个宏只能把当前打开的文件执行一次操作,要把它改造成能够对多文件进行操作
把给的代码模板的语句拷贝到这个宏里面

(4)关闭要操作的文件,在其他文件中执行宏
新建一个空白的 word 文件,运行宏


效果:

5.6 同类型的多文件管理
知识库文件夹
建立到管理
控件的做法:①文档属性内容控件;②自定义内容控件
用文档属性内容控件



右键列标题——其他

点击某个列标题可以按它排序

_Template 模板文件(加下划线放到最前面)
小技巧:用时间来当作文件名