Word·VBA文档合并

目录

    • 1,复制法,不保留原文档格式
    • 2,复制法,保留原文档格式
    • 3,插入法,保留原文档格式

之前的文章《Word·VBA实现邮件合并》虽然可以生成邮件合并文档结果,但是不能像《python实现word邮件合并》一样,最终所有结果合并为1个文档,那么只能用vba实现文档合并功能

  • 以下代码在Word启用宏的文档中运行

1,复制法,不保留原文档格式

Range.InsertAfter 方法只能插入文本,因此合并结果不保留原文档格式

Sub 合并文档_复制法()'合并文件夹中所有doc*文档,并保存文档至该文件夹;但不保留原文档格式Dim file_path$, file_name$, docx As Document, f As Document
'--------------------参数填写:file_path = "E:\测试\docx\结果\"  '文件夹file_name = Dir(file_path & "*.doc*"): tm = TimerSet docx = Documents.Add    '新建文档,合并文档Application.ScreenUpdating = False  '关闭屏幕更新,加快程序运行Do While file_name <> ""Set f = Documents.Open(file_path & file_name)docx.Content.InsertAfter f.Content  '将文档内容复制到合并文档末尾f.Close (False)file_name = Dir  '下一个文件名Loopdocx.SaveAs FileName:=file_path & "合并文档.docx"  '保存docx.CloseApplication.ScreenUpdating = TrueDebug.Print "文件夹文档合并完成,用时:" & Format(Timer - tm, "0.00")  '耗时
End Sub
  • 合并结果
    在这里插入图片描述

2,复制法,保留原文档格式

rng.Paste偶尔运行报错,原因未知

Sub 合并文档_复制法2()'合并文件夹中所有doc*文档,并保存文档至该文件夹;保留原文档格式Dim file_path$, file_name$, docx As Document, f As Document, rng As Range
'--------------------参数填写:file_path = "E:\测试\docx\结果\"  '文件夹file_name = Dir(file_path & "*.doc*"): tm = TimerSet docx = Documents.Add    '新建文档,合并文档Application.ScreenUpdating = False  '关闭屏幕更新,加快程序运行Do While file_name <> ""Set f = Documents.Open(file_path & file_name)Set rng = f.Content: rng.CopySet rng = docx.Contentrng.Collapse Direction:=wdCollapseEnd  '结束位置rng.Paste: rng.InsertAfter Chr(12)     '粘贴,并插入换页符f.Close (False)file_name = Dir  '下一个文件名Loopdocx.SaveAs FileName:=file_path & "合并文档.docx"  '保存docx.CloseApplication.ScreenUpdating = TrueDebug.Print "文件夹文档合并完成,用时:" & Format(Timer - tm, "0.00")  '耗时
End Sub
  • 合并结果
    在这里插入图片描述

3,插入法,保留原文档格式

Selection.InsertFile 方法插入指定文件

Sub 合并文档_插入法()'合并文件夹中所有doc*文档,并保存文档至该文件夹;保留原文档格式Dim file_path$, file_name$, docx As Document
'--------------------参数填写:file_path = "E:\测试\docx\结果\"  '文件夹file_name = Dir(file_path & "*.doc*"): tm = TimerSet docx = Documents.Add    '新建文档,合并文档Application.ScreenUpdating = False  '关闭屏幕更新,加快程序运行Do While file_name <> ""Selection.InsertFile FileName:=file_path & file_name, Link:=False  '所有文档Selection.InsertBreak Type:=wdPageBreak  '插入换页符file_name = Dir  '下一个文件名Loopdocx.SaveAs FileName:=file_path & "合并文档.docx"  '保存docx.CloseApplication.ScreenUpdating = TrueDebug.Print "文件夹文档合并完成,用时:" & Format(Timer - tm, "0.00")  '耗时
End Sub
  • 合并结果:与方法2一致
  • 3种方法对比
文档合并方法1方法2方法3
耗时秒数4.415.480.61
  • 方法3不但生成结果与方法2一致,而且代码运行速度快数倍

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/794674.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用户账号和组账号及管理

用户账号和组账号 Linux中每个用户是通过 User Id &#xff08;UID&#xff09;来唯一标识的 新建用户 1-60000 自动分配 0-65535 端口号&#xff0c;系统是靠uid来区分用户身份的&#xff0c;用户的uid 为0 就是超级管理员 1.用户账号的类型 超级管理员:权限最高的用户,roo…

基于单片机PID炉温自动控制系统设计

**单片机设计介绍&#xff0c;基于单片机PID炉温自动控制系统设计 文章目录 一 概要二、功能设计三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机PID炉温自动控制系统设计是一个综合性的工程任务&#xff0c;旨在通过单片机结合PID控制算法实现炉温的精确和自…

Django源码之路由匹配(下)——图解逐步分析底层源码

目录 1. 前言 2. 路由匹配全过程分析 2.1 请求的入口 2.2 request的封装 2.3 response的源头 2.4 handler的获取 2.5 获取resolver对象 2.6 路由进行匹配 3. 小结 1. 前言 在上一篇文章中&#xff0c;我们谈到了路由的定义&#xff0c;通过URLPattern路由路径对象和Rou…

(一)小案例银行家应用程序-介绍

案例示例如下所示&#xff1a; 登录之后就会出现下面所示&#xff1a; 项目案例流程图如下 ● 首先我们建立四个账号对象&#xff0c;用于登录 const account1 {owner: ItShare,movements: [200, 450, -400, 3000, -650, -130, 70, 1300],interestRate: 1.2, // %pin: 11…

注意力机制篇 | YOLOv8改进之添加多尺度全局注意力机制DilateFormer(MSDA)| 即插即用

前言:Hello大家好,我是小哥谈。多尺度全局注意力机制DilateFormer是一种用图像识别任务的深度学习模型。它是在Transformer模型的基础上进行改进的,旨在提高模型对图像中不同尺度信息的感知能力。DilateFormer引入了多尺度卷积和全局注意力机制来实现多尺度感知。具体来说,…

Rancher介绍

1.什么是Rancher Rancher是一套容器管理平台&#xff0c;专门用于部署和管理容器化应用。以下是关于Rancher的详细介绍&#xff1a; 容器编排与管理&#xff1a;Rancher是一个开源的企业级容器管理平台&#xff0c;它支持Kubernetes作为其容器编排引擎。Rancher可以帮助用户在…

java线程的几种状态

目录 正文&#xff1a; 1.JConsole 2.新建状态(New) 3.运行状态(Runnable) 4.阻塞状态(Blocked) 5.等待状态(Waiting) 6.计时等待状态(Timed Waiting) 7.终止状态(Terminated) 总结&#xff1a; 正文&#xff1a; 1.JConsole JConsole是Java监控和管理控制台工具&…

面试算法-128-单词拆分 II

题目 给定一个字符串 s 和一个字符串字典 wordDict &#xff0c;在字符串 s 中增加空格来构建一个句子&#xff0c;使得句子中所有的单词都在词典中。以任意顺序 返回所有这些可能的句子。 注意&#xff1a;词典中的同一个单词可能在分段中被重复使用多次。 示例 1&#xff…

ABAP 读取EXCEL 文件内容,函数 TEXT_CONVERT_XLS_TO_SAP

EXCEL 内容: 读取内容: 代码: TYPES: BEGIN OF ITAB, FL1(50) TYPE C, FL2(50) TYPE C, FL3(50) TYPE C, FL4(50) TYPE C, FL5(50) TYPE C, FL6(50) TYPE C, END OF ITAB. DATA: T_ITEM TYPE TABLE OF ITAB WITH HEADER LINE. TYPE…

Netty经典32连问

文章目录 1、Netty是什么&#xff0c;它的主要特点是什么&#xff1f;2、Netty 应用场景了解么&#xff1f;3、Netty 核心组件有哪些&#xff1f;分别有什么作用&#xff1f;4、Netty的线程模型是怎样的&#xff1f;如何优化性能&#xff1f;5、EventloopGroup了解么?和 Event…

PWM方式读取AS5600磁编码器数据

PWM方式读取AS5600磁编码器获取角度例程 &#x1f4cd;相关篇《STM32 软件I2C方式读取AS5600磁编码器获取角度例程》&#x1f4cc;《HAL STM32 硬件I2C方式读取AS5600磁编码器获取角度例程》&#x1f389;本例程包含&#xff1a;Arduino测试代码、STM32标准库代码、HAL STM32代…

Mac删除软件,动一动手指,几秒就彻底删除 mac删除软件删不掉的解决方法 mac删除软件后怎么删除软件数据

当你入职新公司&#xff0c;接手前任员工使用的Mac电脑时&#xff0c;很可能会遇到一个非常普遍的问题&#xff1a;电脑中装有大量你不需要的软件。这些软件不仅占用宝贵的硬盘空间&#xff0c;还可能影响电脑的运行速度和效率。为了获得一个干净、清爽的使用体验&#xff0c;删…

设计模式:适配器模式

定义 适配器模式&#xff08;Adapter Pattern&#xff09;&#xff0c;也称为包装器&#xff08;Wrapper&#xff09;模式&#xff0c;是一种结构型设计模式&#xff0c;它允许不兼容的接口之间进行交互。适配器模式通过包装一个已有的类&#xff0c;提供一个与原系统兼容的接…

【ZZULIOJ】1038: 绝对值最大(Java)

目录 题目描述 输入 输出 样例输入 Copy 样例输出 Copy code 题目描述 输入3个整数&#xff0c;输出绝对值最大的那个数。 输入 输入包含3个int范围内的整数&#xff0c;用空格隔开。 输出 输出三个数中绝对值最大的数&#xff0c;单独占一行。若绝对值最大的数不唯…

Java 关键字 this 使用详解(通俗易懂)

this关键字主要有以下三个地方使用 在方法体中引用当前对象&#xff0c;即其方法被调用的对象&#xff0c;以便将当前对象的实例变量或当前对象作为参数传递给其他方法。 ① t this.x; 要在方法中引用当前对象&#xff0c;可以使用关键字 this。 ② return this; 作为当前…

matlab学习(二)(4.2-4.8)

一、DCT变换原理 &#xff08;1&#xff09;DCT的基本原理是将实数信号转换为频域表示&#xff0c;离散余弦变换&#xff08;DCT&#xff09;是一种将实数函数转换为余弦函数的方法。它的基本原理是将实偶函数的离散傅立叶变换&#xff08;DFT&#xff09;简化&#xff0c;使得…

[java]网络编程

网络编程概述 计算机网络&#xff1a; 把分布在不同地理区域的具有独立功能的计算机,通过通信设备与线路连接起来&#xff0c;由功能完善的软件实现资源共享和信息传递的系统。 Java是 Internet 上的语言&#xff0c;它从语言级上提供了对网络应用程序的支持&#xff0c;程序…

题库管理系统-基于Springboot实现JAVA+SQL离散数学题库管理系统(完整源码+LW+翻译)

基于Springboot实现JAVASQL离散数学题库管理系统(完整源码LW翻译) 概述&#xff1a; 本系统具体完成的功能如下&#xff1a; 1题库的管理与维护&#xff1a;新题的录入&#xff0c;修改&#xff0c;删除等功能。 2生成试卷&#xff1a;包括自动生成与手工改动&#xff0c;要…

Java学习之String类的本质及内部类

目录 常量池 API文档如何阅读 String类常用的方法 示例 内部类 特点 成员内部类 非静态内部类 成员变量访问要点 内部类的访问 示例 在别的类中调用 静态内部类 定义方式 使用要点 示例 匿名内部类 示例 局部内部类 面向对象知识总结思维导图&#xff1a; S…

使用msf进行有防火墙限制的3389端口转发

使用msf进行有防火墙限制的3389端口转发 这里主要是针对在内网中遇到需要开启3389的时候&#xff0c;发现存在防火墙&#xff0c;就没有办法直接远程连接&#xff0c;这个时候就可以使用端口转发使用msf&#xff0c;使用前记得先初始化&#xff0c;连接好数据库这里先使用msf进…