VBA宏查找替换目录下所有Word文档中指定字符串

news2024/11/28 5:55:26

       原来搞质量管理,要替换质量文件里面所有特定名称或者某一错误时,需要逐一打开所有文件,非常麻烦,所以写了个VBA程序。过了这么多年,突然又要做同样的事情,发现新版本Word不支持其中的Application.FileSearch了,又找不到合适的工具。只能又学习了新的VBA代码,改写了原来的VBA窗体程序。分享给大家参考。

        首先要打开Word内置的宏编辑器,具体怎么操作自己网上搜吧,比较容易,我就不介绍了。打开后建立一个窗体UserForm1,加入控件主要有text1,text2或按钮。名称、标签自己放,自己喜欢写什么就写什么吧。我的是下图这样的。

         我原来写的代码是这样的,如果还有人用旧版的可以参考。在按钮触发事件里写代码如下。

Private Sub CommandButton1_Click()
Dim sPath As String

With Dialogs(wdDialogFileFind)   '设置文本查找对话框
    .SortBy = 2                  '文件按名称排列
    .SearchName = "*.doc"        '只列出word文档
    .Update                      '更新
End With

If Dialogs(wdDialogFileFind).Show = -1 Then             '如果按下打开,就执行
  sPath = Dialogs(wdDialogFileFind).SearchPath         '将查找对话框打开的路径附值给SPath
  Dialogs(wdDialogFileFind).Execute
Else
  Exit Sub            '如果取消或者关闭,就退出
End If

With Application.FileSearch
    .NewSearch
    .LookIn = sPath
    .SearchSubFolders = True
    .FileType = msoFileTypeWordDocuments
    .Execute
For i = 1 To .FoundFiles.Count
  Documents.Open (.FoundFiles(i))
  ActiveDocument.Select
  With Dialogs(wdDialogEditReplace)
  On Error GoTo Err
    .Find = TextBox1.Text
    .Replace = TextBox2.Text
    .ReplaceAll = True
    .Execute
  End With
  ActiveDocument.Save
  ActiveDocument.Close
Next i

End With
Err:
If TextBox1.Text = "" Then
  ActiveDocument.Save
  ActiveDocument.Close
End If
MsgBox "请输入替换查找的字串"

End Sub

          现在新版本的不能用Application.FileSearch,上网找了一下列举目录下文件的VBA代码,改了一下,主要就是用Dir()函数。修改后代码如下:

Private Sub CommandButton1_Click()
Dim sPath As String

With Dialogs(wdDialogFileFind)   '设置文本查找对话框
    .SortBy = 2                  '文件按名称排列
    .SearchName = "*.*"        '列出文档
    .Update                      '更新
End With

If Dialogs(wdDialogFileFind).Show = -1 Then             '如果按下打开,就执行
  sPath = Dialogs(wdDialogFileFind).SearchPath         '将查找对话框打开的路径附值给SPath
  Dialogs(wdDialogFileFind).Execute
Else
  Exit Sub            '如果取消或者关闭,就退出
End If

' 加入反斜杠如果路径字符串里没有
sPath = Trim(sPath)
If Right(sPath, 1) <> "\" Then sPath = sPath & "\"

DirFile = Dir(sPath & "*.*")
Do While DirFile <> ""
  Documents.Open (sPath & DirFile)
  ActiveDocument.Select
  With Dialogs(wdDialogEditReplace)
  On Error GoTo Err
    .Find = TextBox1.Text
    .Replace = TextBox2.Text
    .ReplaceAll = True
    .Execute
  End With
  ActiveDocument.Save
  ActiveDocument.Close
  DirFile = Dir 'next file
Loop

Err:
If TextBox1.Text = "" Then
  ActiveDocument.Save
  ActiveDocument.Close
End If
MsgBox "请输入替换查找的字串"

End Sub


        打开文档要允许执行宏,弹出窗体里输入要查找的字符串、替换的字符串,然后点确定,在弹出的打开文件对话框里找到你的文档所在的目录,点“打开”按钮就会执行查找替换,执行完出错就会跳出MsgBox "请输入替换查找的字串"。这个窗体宏不支持子目录搜索,需要查找替换的文件要放在相同目录下。如果要支持所有子目录,需要复杂一些的代码,我没有这个需要,如果有需要的人自己找找用dir函数历遍子目录的代码吧,需要把文件路径全面找完并存在一个文件路径集合里。

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

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

相关文章

python自动化测试(五):按键模拟输入:全选、复制、清空、粘贴、完成

前置条件&#xff1a; 本地部署&#xff1a;ECShop的版本是3.0.0、Google版本是 Google Chrome65.0.3325.162 (正式版本) &#xff08;32 位&#xff09; Google驱动的selenium版本是3.11.0 目录 一、配置代码 二、键盘组合输入 2.1 全选&#xff1a;ctrl a 2.2 复制…

2023上半年系统集成项目管理工程师下午真题

文章目录 一&#xff1a;第5章 项目立项管理。第7章 项目范围管理&#xff0c;需求文件二&#xff1a;第9章 项目成本管理。第8章 项目进度管理&#xff0c;压缩工期三&#xff1a;第15章 信息&#xff08;文档&#xff09;和配置管理四&#xff1a;第18章 项目风险管理&#x…

ELASTICO-A Secure Sharding Protocol For Open Blockchains

INTRO 在中本聪共识中&#xff0c;通过POW机制来公平的选举leader&#xff0c;不仅非常消耗power&#xff0c;并且拓展性也不好。现在比特币中是7 TPS&#xff0c;和其他的支付系统相比效率相差甚远。 当前的许多拜占庭共识协议&#xff0c;并不支持在一个开放的环境中使用&a…

Linux 音频驱动实验

目录 音频接口简介为何需要音频编解码芯片&#xff1f;WM8960 简介I2S 总线接口I.MX6ULL SAI 简介 硬件原理图分析音频驱动使能修改设备树使能内核的WM8960 驱动alsa-lib 移植alsa-utils 移植 声卡设置与测试amixer 使用方法音乐播放测试MIC 录音测试LINE IN 录音测试 开机自动…

探索低代码PaaS平台的优势与选择原因

PaaS是一种云产品&#xff0c;它为应用程序的开发和部署提供基础结构。它提供中间件、开发工具和人工智能来创建功能强大的应用程序&#xff0c;大多数PaaS服务都与存储和网络基础架构捆绑在一起&#xff0c;就像基础架构即服务&#xff08;IaaS&#xff09;一样&#xff0c;可…

在Spring boot中 使用JWT和过滤器实现登录认证

在Spring boot中 使用JWT和过滤器实现登录认证 一、登录获得JWT 在navicat中运行如下sql,准备一张user表 -- ---------------------------- -- Table structure for t_user -- ---------------------------- DROP TABLE IF EXISTS t_user; CREATE TABLE t_user (id int(11) …

css文字竖向排列

div { writing-mode: vertical-rl;text-orientation: upright;font-size: .25rem; //文字大小letter-spacing: 0.1em; //文字间距}

Ubuntu安装ddns-go使用阿里ddns解析ipv6

Ubuntu安装ddns-go 1.何为ddns-go2.安装环境3.获取ddns-go安装包4.解压ddns-go5.安装ddns-go6.配置ddns-go 1.何为ddns-go DDNS-GO是简单好用的DDNS&#xff0c;它可以帮助你自动更新域名解析到公网IP。比如你希望在本地部署网站&#xff0c;但是因为公网IP是动态的&#xff0…

Transformer模型 | Python实现Attention-Transformer时间序列预测

时间序列预测 | Python实现Attention-Transformer时间序列预测 目录 时间序列预测 | Python实现Attention-Transformer时间序列预测基本介绍模型结构程序设计学习总结基本介绍 Python实现Attention-Transformer时间序列预测(TSAT model) 模型结构 main.py :含训练集合测试集的…

【图像分类】卷积神经网络之ResNet网络模型实现钢轨缺陷识别(附代码和数据集,PyTorch框架)

写在前面: 首先感谢兄弟们的关注和订阅,让我有创作的动力,在创作过程我会尽最大能力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌。 本篇博文,我们将使用PyTorch深度学习框架搭建ResNet实现钢轨缺陷识别,附完整的项目代码和数据集,可以说是全网…

力扣:144. 二叉树的前序遍历(Python3)

题目&#xff1a; 给你二叉树的根节点 root &#xff0c;返回它节点值的 前序 遍历。 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 示例&#xff1a; 示例 1&#xff1a; 输…

spring框架回顾

如果是web项目,spring也推荐使用jar包而不是war包,因为如果是web项目,在下一页可以选择spring web,它里面就包含了spring mvc ,底层会有一个嵌入式的tomcat,到时候直接执行就可以了 正因为有此功能,所以把模块打成jar包后,可以直接java -jar [jar包名] 运行,直接可以在电脑访问…

dc-5 靶机

1.扫描ip地址 2.网页 3.dirb 爆破目录 没有用 4.爆破端口 没有用 5. 文件上传漏洞 上传点 写一句话木马 蚁剑连接 1.shell反弹 蚁剑反弹 提权 使用命令 命令"find / -perm -us -type f 2>/dev/null"在整个文件系统 ("/") 中搜索设置了SUID权…

初学编程入门基础教学视频,中文编程开发语言工具箱之豪华编辑构件,免费版中文编程软件下载

初学编程入门基础教学视频&#xff0c;中文编程开发语言工具箱之豪华编辑构件&#xff0c;免费版中文编程软件下载 构件的其中一个属性、方法&#xff0c;查找内容&#xff0c;替换内容。 构件工具箱非常丰富&#xff0c;其中该构件在 文本件构件板菜单下。 编程系统化课程总目…

LV.12 D13 C工程与寄存器封装 学习笔记

一、C语言工程简介 把模板在linux解压出来 代码写在interface.c就可以了。 map.lds是链接脚本文件&#xff08;负责代码的排布&#xff09; include中是头文件&#xff0c;src中是写好的源代码 start.s是启动代码&#xff0c;在interface.c之前运行&#xff0c;把cpu和栈做一…

Git基础命令实践

文章目录 简介git的安装配置git的安装git的配置 git使用的基本流程创建版本库时光机穿梭版本回退工作区和暂存区管理修改撤销修改删除文件 远程仓库添加远程库从远程库克隆 总结 简介 本文主要记录了我在学习git操作的过程&#xff0c;以及如何使用GitHub。建议先参考廖雪峰的…

git的使用——如何创建.gitignore文件,排除target、.idea文件夹的提交

前言 git作为开发人员必备的技能&#xff0c;需要熟练掌握&#xff0c;本篇博客记录一些git使用的场景&#xff0c;结合具体问题进行git使用的记录。以gitee的使用为例。 本篇博客介绍如何创建.gitignore文件&#xff0c;排除一些文件夹的提交&#xff0c;比如排除target、.i…

Python运维学习Day02-subprocess/threading/psutil

文章目录 1. 检测网段在线主机2. 获取系统变量的模块 psutil 1. 检测网段在线主机 import subprocessdef checkIP(ip):cmd fping -n 1 -w 1 {ip}null open(nlll,modewb)status subprocess.call(cmd,shellTrue,stdoutnull,stderrnull)if status 0:print(f"主机[{ip}]在…

画时钟(turtle库)

思路&#xff1a; 总体来看&#xff0c;分为两个部分&#xff1a;固定的表盘&#xff0c;和不断刷新的指针&#xff08;和时间显示&#xff09; 固定的表盘 我的表盘长这个样子&#xff1a; 分为三个部分&#xff1a;60个dot点&#xff08;分、秒&#xff09;&#xff0c;12条…

【启发式算法】白鲸优化算法【附python实现代码】

写在前面&#xff1a; 首先感谢兄弟们的订阅&#xff0c;让我有创作的动力&#xff0c;在创作过程我会尽最大能力&#xff0c;保证作品的质量&#xff0c;如果有问题&#xff0c;可以私信我&#xff0c;让我们携手共进&#xff0c;共创辉煌。 路虽远&#xff0c;行则将至&#…