VBA宏批量处理多个Word文档
前言
工作里面需要处理上百个Word文档,所以就开始在网上查找宏相关的代码
由于第一次接触宏相关的代码,所以写得肯定不会很好。不过,最后勉强算是解决了问题,为了以后方便查找,就把代码贴上来。
开启、编写宏
勾选上图中的开发工具,就可以显示宏相关的菜单栏了
点击红框内按钮,就可以开始编写和运行宏了
具体代码
Sub 批量操作WORD()Application.ScreenUpdating = False '冻结屏幕,打开各个文件及关闭时屏幕不会晃眼睛,但不知道为什么没有效Dim MyFileName, Dic, Did, i, fileCount, startTime, runTime, MyDocumentName'On Error Resume NextSet objShell = CreateObject("Shell.Application")Set objFolder = objShell.BrowseForFolder(0, "选择文件夹", 0, 0)If Not objFolder Is Nothing Then lj = objFolder.self.path & "\"Set objFolder = NothingSet objShell = NothingstartTime = TimeSet Dic = CreateObject("Scripting.Dictionary") '创建一个字典对象Set Did = CreateObject("Scripting.Dictionary")Dic.Add (lj), ""i = 0 'i变量用来控制循环的结束Do While i < Dic.CountKe = Dic.keys '开始遍历字典MyFileName = Dir(Ke(i), vbDirectory) '查找目录Do While MyFileName <> ""If MyFileName <> "." And MyFileName <> ".." ThenIf (GetAttr(Ke(i) & MyFileName) And vbDirectory) = vbDirectory Then '如果是次级目录Dic.Add (Ke(i) & MyFileName & "\"), "" '就往字典中添加这个次级目录名作为一个条目End IfEnd IfMyFileName = Dir '继续遍历寻找Loopi = i + 1LoopFor Each Ke In Dic.keysMyDocumentName = Dir(Ke & "*.doc*") '填写所指定的文件类型Do While MyDocumentName <> ""Did.Add (Ke & MyDocumentName), ""MyDocumentName = DirLoopNextDim worddoc As DocumentfileCount = 0For Each path In DidSet worddoc = Documents.Open(path)worddoc.ActivateCall 处理WORD '调用宏,换成具体操作word的宏worddoc.Close TruefileCount = fileCount + 1NextSet worddoc = NothingrunTime = Time - startTimeApplication.ScreenUpdating = True '解冻屏幕,让屏幕恢复正常刷新,同样也不知道为什么不起效MsgBox Minute(runTime) & "分" & Second(runTime) & "秒" & "内处理了" & Str(fileCount) & "个word文档"
End SubSub 处理WORD()Set myRange = ActiveDocument.Content'下面就是一些替换操作的代码,可以自行更换为需要的代码myRange.Find.Execute FindText:="2020", ReplaceWith:="2021", Replace:=wdReplaceAllmyRange.Find.Execute FindText:="2日", ReplaceWith:="5日", Replace:=wdReplaceAllmyRange.Find.Execute FindText:="10日", ReplaceWith:="14日", Replace:=wdReplaceAllmyRange.Find.Execute FindText:="WB200", ReplaceWith:="WB300", Replace:=wdReplaceAll
End Sub
这段代码并不完善,感觉存在着下面两个问题:
- 无法识别有特殊字符的文件名。如果遇到这样的文件就会处理失败。我自己出现这种情况,就会在提示失败时,选择进入调试模块,然后用鼠标放在下面代码处的MyFileName的变量名上查看出现问题的文件名
MyFileName = Dir(Ke(i), vbDirectory) '查找目录
- 在处理过程中无法冻结屏幕
VBA宏批量处理多个Word文档相关推荐
- 批量删除多个 Word 文档的空白页
概要:我们经常会碰到一些包含空白页的 Word 文档,这些空白页怎么删都删不掉.有时候文件较大的时候,还得得一页一页的去找到空白页然后删除,删除后还要反复的检查几次有没有漏删的情况,弄的人心力交瘁!其 ...
- 基于pdf2docx模块Python实现批量将PDF转Word文档(安装+完整代码教程)
PDF文件是一种常见的文档格式,但是在编辑和修改时不太方便,因为PDF本质上是一种静态的文档格式.因此,有时候我们需要将PDF文件转换成Word格式,以便更好地编辑和修改文档.在本篇文章中,我们将介绍 ...
- Python批量提取docx格式Word文档中所有文本框内的文本
功能描述: 批量提取指定Word文档(docx格式)中所有文本框中的文本. 测试文件: 参考代码: 执行结果:
- 批量导入数据将word文档转换成HTML文档
1.在批量导入数据里:第一步下载一个word文档模板,用户可以根据这个worm文档模板的要求去填写数据,填学好数据之后保存worm文档 2.在页面选择到word文档保存到from表单中,通过ajaxS ...
- 批量将 PDF 转为 Word 文档,支持 Docx、Doc 格式
概要:PDF 和 Word 这两种格式是非常常见的,并且相互之间也经常需要进行格式转化.Word 转 PDF是非常容易就能做到的,但是 PDF 转 Word 就经常会碰到各种各样的问题,比如格式错乱. ...
- 如何批量将多个 Word 文档快速合并成一个文档
概要:「我的ABC软件工具箱」提供了文档合并的功能,其中就包括了 Word 拆分成单个文件.我们可以根据需要将文件夹中的多个 Word 文档按照一定的顺序进行合并,这样可以把多个 Word 文档整合形 ...
- 如何批量将多个 Word 文档按指定页分别拆分成多个文档
概要:「我的ABC软件工具箱」提供了文档拆分的功能,其中就包括了 Word 拆分成多个文件,可以根据需要指定拆分后的每个文档最多的页数,这样可以把一个文档分成多个独立的文档.非常的方便与实用. Wor ...
- Python批量提取docx格式Word文档中所有批注
封面图片:<Python程序设计基础与应用>(ISBN:9787111606178),董付国,机械工业出版社 图书详情: 用书教师可以联系董老师获取教学大纲.课件.源码.教案.考试系统等配 ...
- 基于Python中docx与docxcompose批量合并多个Word文档文件并逐一添加分页符
现有多个Word文件,需将其按名称顺序合并为一个新的Word文件,且需保证每一次合并时,都另起一页(即新的Word文件一页中,不能出现两个及以上的原本Word文件的内容). 一般的,实现多个W ...
最新文章
- python在excel中的应用-Python 取代了 Excel 在银行业务中的地位?
- 中国python之父是谁-Python之父重回决策层
- mysql的如何输入dateadd_mysql中date_add()函数的使用?
- linux python代码编辑器,Linux上的Python编辑器
- 区块链之智能合约入门
- java容器怎么封装的_docker怎么把容器打包成镜像
- Spring Cloud 知识 思维导图
- 找出不是两个数组共有的元素_[数组] N数之和问题
- 服务器iso文件如何打开方式,iso文件怎么打开(iso文件用什么打开)
- 功能测试报告模板_接口测试用例和报告模板
- ksearch系统开发过程中遇到的KFC性能问题
- Ubuntu20.04 添加右键新建文件
- 使用AutoHotKey(AHK)自动将多行内容转成单行,并翻译,或获取中文拼音
- verilog 多路选择器 multiplexer
- node+nginx-web部署
- IT人的英语歌单:没有Bug的日子充满了Sunshine
- 无边界网络的划分建立
- OpenCT—北京师范大学教育学博士罗海风创建大型教育类网络社区
- [AH/HNOI2017]礼物
- Unity 设置帧率和垂直同步