实用VBA:17.大量word文件中的文本内容进行批量替换 |
您所在的位置:网站首页 › 怎么批量替换标题文字 › 实用VBA:17.大量word文件中的文本内容进行批量替换 |
1.需求场景
在工作中可能会遇到需要对大量word文件中的文字内容进行批量替换的情况。相比excel的批量处理,个人感觉word文档中由于包含大量样式信息,批处理时总感觉有顾虑。一者担心影响了文档的格式,误修改了文档的样式,那后果……整过文档的小伙伴都懂的;二者担心批处理不全面,例如公式、表格、图表或者文本框。 需求范例:需要把每个文件中的”李四“统一替换为”张三“ 2.解决思路这次因为工作需要,查到了一位大佬贡献的方法,由于文中代码是贴的图,自己敲了出来,并稍作修改,测试通过,分享给大家。基本思路是先将待处理的文件统一放在同一文件夹中,使用VBA选择待处理文件目录,遍历文件夹中所有文件;通过input对话框让用户输入被替换文本和替换文本的内容;使用document对象的content.find方法进行查找和替换。 3.VBA实现可以定义一个sub直接运行,也可以加一个按钮,将代码写到按钮的click方法中。 Private Sub CommandButton1_Click() '关闭屏幕刷新 Application.ScreenUpdating = False '定义变量 Dim myFile$, myPath$, i%, myDoc As Object, myAPP As Object, txt$, Re_txt$ '设置应用对象,建立临时进程 Set myAPP = New Word.Application '显示选择文件夹对话框 With Application.FileDialog(msoFileDialogFolderPicker) .Title = "选择目标文件夹" If .Show = -1 Then '读取选择的文件路径 myPath = .SelectedItems(1) Else Exit Sub End If End With '文件夹目录和文件完整路径 myPath = myPath & "" myFile = Dir(myPath & "\*.docx") '获取被替换的文字 txt = InputBox("需要替换的文字:") '获取替换文件 Re_txt = InputBox("替换成:") '显示打开文档 myAPP.Visible = True '是否显示打开文档 '循环处理文件夹中的全部文件 Do While myFile "" '文件不为空 '打开文件 Set myDoc = myAPP.Documents.Open(myPath & "\" & myFile) '判断文件是否受保护,仅对未受保护的文件有效 If myDoc.ProtectionType = wdNoProtection Then '查找替换 With myDoc.Content.Find .Text = txt .Replacement.Text = Re_txt .Forward = True .Wrap = 2 .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = True .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False .Execute Replace:=2 End With End If '设置文件窗口状态,避免再次打开时被隐藏 Application.WindowState = wdWindowStateNormal '保存并关闭文档 myDoc.Save myDoc.Close myFile = Dir Loop '关闭临时进程 myAPP.Quit '打开屏幕更新 Application.ScreenUpdating = True '输出提示信息 MsgBox ("全部替换完毕!") End Sub 4.运行效果 按钮控件 选择文件夹 输入需要被替换掉的文字 输入替换文字 程序运行结束,批量替换完成 查看替换效果果不出老衲所料,从实际运行效果看,正文、表格、公式中的内容可以正常完成替换,文本框和形状(形状本质上就是一种特定的文本框)中的文本用这种方法无法实现批量替换。 使用时还是要谨慎,用过之后还要手工检查疗效。不过毕竟能完成一部分,聊胜于无吧。 如果不是非用word文档不可,还是建议尽量用excel表格处理报表之类的文档,便于后期批量处理。 【参考代码来源】https://jingyan.baidu.com/article/647f011576aad23e2148a885.html 喜欢的话欢迎关注、点赞、转发或评论交流! 点赞富三代,分享美一生! ^|^ 往期列表实用VBA:1.向下填充空白单元格 实用VBA:2.隔行插入空白行 实用VBA:3.向下合并空白单元格 实用VBA:4.按列拆分工作表 实用VBA:5.批量汇总工作簿、合并工作表 实用VBA:6.一键批量提取文件名和存储路径 实用VBA:7.按文件列表一键汇总excel工作簿 实用VBA:8.一键输出多表格为单独文件 实用VBA:9.使用Excel批量套模板,一键输出多个工作表 实用VBA:10.用VBA向Excel文件中自动插入图片 实用VBA:11.用Excel自动生成商品调拨单 实用VBA:12.用VBA将txt文本文件导入Excel表格 实用VBA:13.Excel数据批量套模板输出pdf文件 实用VBA:14.在二维数组中查找特定元素 实用VBA:15 一键批量汇总工作表的更优方法 实用VBA:16.一键批量删除工作表 (佛系更新中……) |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |