python学习—合并多个word文档之VBA宏代码方法

系列文章目录

python学习—合并TXT文本文件
python学习—统计嵌套文件夹内的文件数量并建立索引表格
python学习—查找指定目录下的指定类型文件
python学习—年会不能停,游戏抽签抽奖
python学习—循环语句-控制流
python学习—合并多个Excel工作簿表格文件
python学习—批量复制并重命名文件夹
python学习—详解word邮件合并
python学习—合并多个word文档



功能说明

前面研究了使用python编程实现合并多个word文档的方法,详见我的文章《python学习—合并多个word文档》,很多朋友反应没有python环境,使用起来不方便。

这回换一种word程序自带的功能——VBA宏,采用宏代码编程方法实现多个word文档的合并。

本代码目标为:

  • 1 编辑宏;
  • 2 运行宏;
  • 3 完成word合并。
  • 软件环境: Microsoft Office 2016专业增强版

温馨提示:如果觉得文章不错,请多多点赞添加关注,您的支持就是我的动力。

1 准备工作

首先准备几个word文档,我准备的还是 征地补偿登记表 ,如下图所示。每个文档的格式一样,目标是把多个单页文档合并成一个word多页文档。

1

2 编辑宏,运行宏

知识点: 关于Word 中的宏代码:

  1. 定义与用途
    宏是一种能够将多个 Word 操作组合起来的工具。借助录制宏或者直接编写代码,你能够让 Word 自动执行一连串操作,像格式设置、文本替换、文档生成等。
  2. 创建方式一 录制宏:此为最简单的方法。你可以在 Word 里找到 “开发工具”或者 “视图” 选项卡(office的版本不同,位置有差异),接着点击 “宏——录制宏”,随后执行所需操作,最后停止录制。Word 会自动生成对应的宏代码。
  3. 创建方式二 编写宏代码:使用 VBA(Visual Basic for Applications),直接编写宏代码。在 打开的word界面,按快捷键“Alt + F11“,就能快速打开 VBA 编辑器编写代码。
  4. 运行宏:录制或编写好宏之后,可以通过 点击 选项卡中的 “宏” 按钮来运行宏,也能为宏指定快捷键,方便快速执行。

(1) 创建宏

本文使用VBA编写宏代码,按快捷键“Alt + F11“,快速打开 VBA 编辑器,把下面的代码复制粘贴到编辑器,关闭即可完成编写代码。

Sub MergeDocuments()
    Dim MyPath As String
    Dim MyName As String
    MyPath = "D:\文档合并\分户\" '替换为实际的分文档所在路径
    MyName = Dir(MyPath & "*.docx") '根据实际文档类型修改扩展名
    Do While MyName <> ""
        If MyName <> ThisDocument.Name Then
            Documents.Open MyPath & MyName
            Selection.WholeStory
            Selection.Copy
            ThisDocument.Activate
            Selection.EndKey wdStory
            Selection.Paste
            ActiveDocument.Save
            Documents(MyName).Close
        End If
        MyName = Dir
    Loop
End Sub

操作步骤如下:
2

知识点: 宏的位置

在编辑宏代码的时候,从下 图2 可见,可以选择在 word对象 中编辑,也可以选择插入 模块 中编辑,两者有区别。

f

  • Word 对象:Word 应用程序里的各种元素都属于对象,像文档(Document)、段落(Paragraph)、句子(Sentence)、单词(Word)等。这些对象拥有各自的属性和方法,可以借助 VBA 代码来操控它们,进而实现自动化操作。例如,你可以修改文档的标题、设置段落格式等。
  • 通常不会直接存储代码,不过能针对对象的事件编写代码。
  • 事件过程一般是针对特定对象的,作用域仅限于该对象。例如,文档的打开事件只在该文档打开时触发,对其他文档没有影响。
  • 主要是通过引用对象的属性和方法来实现特定的功能。
  • 模块:模块是 VBA 代码的容器,它能够存放一系列的过程(子程序和函数)。可以把相关的代码组织在一个模块里,从而方便管理和复用。模块就像是一个工具箱,里面有很多工具(过程),你可以在需要的时候调用这些工具来完成特定的任务。
  • 主要用于存储通用的过程,这些过程可以在不同的对象事件或者其他模块中被调用。
  • 模块中的过程具有更广泛的作用域。如果过程被声明为 Public,那么它可以在整个项目中的任何地方被调用;如果声明为 Private,则只能在同一个模块内被调用。
  • 在需要使用模块中的过程时,直接调用过程名即可。例如,调用上面定义的 MergeDocuments 函数。

综上所述,Word 对象是操作的目标,而模块是代码的组织和存储单元。它们相互配合,能在 Word 中实现复杂的自动化任务。

(2) 代码解析

1.宏名称:

本次宏的名称为 MergeDocuments,宏名称支持中文,直接修改为中文即可,其他代码不表:

Sub 合并文档()
......
End Sub
2.宏变量:

代码中有两个变量,需要根据自己的目录进行修改:

  • 路径设置 MyPath: 这是分文档所在的目录路径,根据自己的目录修改存放 word文档的目录。
    获取文档名称:
  • 获取文档名称 MyName = Dir(MyPath & “*.docx”):word文件的后缀名 .docx名称,根据需要修改。
3.代码解析:

之后的代码是一个循环处理过程,

  • Do While MyName <> “”:循环处理路径下的所有.docx文件。
  • If MyName <> ThisDocument.Name Then:确保不处理当前活动文档。
  • Documents.Open MyPath & MyName:打开当前处理的文档。
  • Selection.WholeStory:选择整个文档内容。
  • Selection.Copy:复制选中的内容。
  • ThisDocument.Activate:激活当前活动文档。
  • Selection.EndKey wdStory:将光标移动到文档末尾。
  • Selection.Paste:粘贴复制的内容。
  • ActiveDocument.Save:保存当前活动文档。
  • Documents(MyName).Close:关闭已处理的文档。
  • MyName = Dir:获取下一个文档的名称。
  • 当所有文档处理完毕后,循环结束。

(3) 运行宏

宏的运行方式:通过选项卡找到:宏——查看宏——运行,即可。如下:

5

(4) 调整完善

通过查看合并后的文档效果,可以看到上下页出现串页的问题,合并的效果跟python编写的代码运行效果一致,因为本质使用的思路都是:复制内容——粘贴内容。

可以通过调整页面布局的上下页边距,调整完善串页的问题。如下:

t

4 后记

通过以上代码,可以在word软件中实现合并多个文档的功能 。

举一反三,可以扩展代码的功能,比如说,合并多个txt文档,直接把文件后缀名修改一下即可,详见 文章 图2

Sub 合并txt文档()
    。。。
    MyName = Dir(MyPath & "*.txt") '根据实际文档类型修改扩展名
    。。。
End Sub

下图是运行合并txt的效果图,我合并了3个txt文档内容到一个word文档中。
7
此外,还可以把 某个 宏代码 直接保存到 word的共用模板中,如下图
a
这样一来,每当新建一个word文档,就自动加载了你创建的 宏,不用再编写宏代码了。
如上图我创建了一个名为 setpicsize的宏(作用是一键设置word中所有图片为统一尺寸),但是不推荐这样操作,因为这样的文档另存到其他人的电脑,杀毒软件有可能会报 宏病毒

2323
如果觉得文章不错,请多多点赞添加关注,您的支持就是我的动力。
2323

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

da-peng-song

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值