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.hqwc.cn/news/601112.html

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

相关文章

Java集合进阶——单列集合

一.集合结构框架 1.单列集合Collection 单列集合是一次存储一个数据的集合 ⑴结构框架 List系列集合:添加的元素是有序&#xff0c;可重复&#xff0c;有索引 Set系列集合:添加的元素无序&#xff0c;不重复&#xff0c;无索引 2.双列集合Map 双列集合是一次存储一对数据…

【I2C总线驱动】

一、I2C总线背景知识 SOC芯片平台的外设分为&#xff1a; 一级外设&#xff1a;外设控制器集成在SOC芯片内部二级外设&#xff1a;外设控制器由另一块芯片负责&#xff0c;通过一些通讯总线与SOC芯片相连 Inter-Integrated Circuit&#xff1a; 字面意思是用于“集成电路之间…

Linux系统安装Docker

1、安装环境 此处在Centos7进行安装&#xff0c;可以使用以下命令查看CentOS版本 lsb_release -a 在 CentOS 7安装docker要求系统为64位、系统内核版本为 3.10 以上&#xff0c;可以使用以下命令查看 uname -r 2、用yum源安装 2.1 查看是否已安装docker列表 yum list instal…

【Angular】什么是Angular中的APP_BASE_HREF

1 概述: 在这篇文章中&#xff0c;我们将看到Angular 10中的APP_BASE_HREF是什么以及如何使用它。 APP_BASE_HREF为当前页面的基础href返回一个预定义的DI标记。 APP_BASE_HREF是应该被保留的URL前缀。 2 语法: provide: APP_BASE_HREF, useValue: /gfgapp3 步骤: 在app.m…

leetcode代码记录(最长连续递增序列

目录 1. 题目&#xff1a;2. 我的代码&#xff1a;小结&#xff1a; 1. 题目&#xff1a; 给定一个未经排序的整数数组&#xff0c;找到最长且 连续递增的子序列&#xff0c;并返回该序列的长度。 连续递增的子序列 可以由两个下标 l 和 r&#xff08;l < r&#xff09;确定…

2024/4/2—力扣—连续数列

代码实现&#xff1a; 思路&#xff1a;最大子数组和 解法一&#xff1a;动态规划 #define max(a, b) ((a) > (b) ? (a) : (b))int maxSubArray(int* nums, int numsSize) {if (numsSize 0) { // 特殊情况return 0;}int dp[numsSize];dp[0] nums[0];int result dp[0];fo…

【二分查找】Leetcode 寻找峰值

题目解析 162. 寻找峰值 题目中有一个很重要的提示&#xff1a;对所有有效的i都存在nums[i] ! nums[i1],因此这道题不需要考虑nums[mid] 和 nums[mid1]之间的相等与否的关系 算法讲解 1. 暴力枚举 我们按照顺序判断每个数字是否是当前的峰值&#xff0c;如果是直接返回&#…

网络基础——vrrp

前言&#xff1a;除了一个MPLS这个协议&#xff0c;其他的协议都差不多会在后面介绍&#xff0c;但是MPLS却不会介绍&#xff0c;因为自己本人学的不是很好&#xff0c;而且在企业网中&#xff0c;接触的机会也更少&#xff0c;除非是做ISP网络的&#xff0c;下面会先介绍VRRP和…

【4月最新】低至50/年,4G 618/3年 云服务器价格即将回调 ,搭建网站 博客 Linux练习 比虚拟机方便 附阿里云 京东云 腾讯云对比表

更新日期&#xff1a;4月8日&#xff08;半年档 价格回调&#xff0c;京东云采购季持续进行&#xff09; 本文纯原创&#xff0c;侵权必究 《最新对比表》已更新在文章头部—腾讯云文档&#xff0c;文章具有时效性&#xff0c;请以腾讯文档为准&#xff01; 【腾讯文档实时更…

金蝶BI方案的报表,主打做得快、易理解

金蝶做数据分析报表慢、步骤多、数据不够直观&#xff1f;但奥威-金蝶BI方案的报表就不一样了&#xff0c;不仅做得快&#xff0c;还十分好理解&#xff0c;因为它做出来的是随时可以按需自助的BI智能数据可视化分析报表。 有多快&#xff1f; 注册奥威BI SaaS平台&#xff0…

2024/4/1—力扣—主要元素

代码实现&#xff1a; 思路&#xff1a;摩尔投票算法 int majorityElement(int *nums, int numsSize) {int candidate -1;int count 0;for (int i 0; i < numsSize; i) {if (count 0) {candidate nums[i];}if (nums[i] candidate) {count;} else {count--;}}count 0;…

谷歌seo最新优化方案是怎样的?

自从AI的出现&#xff0c;人们惊叹于AI的便利性&#xff0c;乃至网站内容都在使用AI更新&#xff0c;然而就在这个月&#xff0c;谷歌公布了最新的算法&#xff0c;这次更新真的是给了SEO界一个大震撼&#xff0c;尤其是对于那些依赖AI内容生成的网站来说&#xff0c;谷歌这次是…