我正在尝试对大量 .doc 文件(大约 200 个文件)进行查找和替换算法。
我需要找到并替换大约 40 个字符串。我需要定期执行这样的操作,所以我觉得创建脚本是一个很好的案例。
- 是否可以通过word来做到这一点?
- 如果没有,是否可以使用 .batch 文件执行此操作?
- 如果没有,我应该从哪里开始?
我正在尝试对大量 .doc 文件(大约 200 个文件)进行查找和替换算法。
我需要找到并替换大约 40 个字符串。我需要定期执行这样的操作,所以我觉得创建脚本是一个很好的案例。
唯一重要的一点是替换,但您可以记录和修改它
Sub Foo()
'path
Const PATH As String = "C:\xxx\"
Dim doc As Word.Document
Dim fn As String: fn = Dir$(PATH & "*.doc")
With Application
'loop matching files
Do While Len(fn)
'open
Set doc = .Documents.Open(PATH & fn)
'replace text
replaceInDoc doc, "OLD TEXT", "NEW TEXT"
replaceInDoc doc, "MORE OLD TEXT", "MORE NEW TEXT"
'save, close
doc.Save
doc.Close
'get next file
fn = Dir$()
Loop
End With
End Sub
Sub replaceInDoc(doc As Word.Document, find As String, replaceWith As String)
'do the replace
With doc.Content.find
.Text = find
.Replacement.Text = replaceWith
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute replace:=wdReplaceAll
End With
End Sub
显然在副本上进行测试。
在我看来,有两种选择:
创建您自己的 VBA 脚本代码来执行此操作。您可以使用 MS Office 帮助系统的内置 VBA 编辑器来了解您必须使用 MS Word 文档对象模型的哪些属性和功能才能完成任务。
查找并使用一些第三方商用软件来完成这项工作。有来自不同供应商的多个程序用于此任务。
第二种方法需要的时间和精力要少得多。批处理文件不会完成这项工作,除非您设法通过 OLE 自动化控制 MS Word 以访问需要替换文本的文档。