1

我正在尝试对大量 .doc 文件(大约 200 个文件)进行查找和替换算法。

我需要找到并替换大约 40 个字符串。我需要定期执行这样的操作,所以我觉得创建脚本是一个很好的案例。

  1. 是否可以通过word来做到这一点?
  2. 如果没有,是否可以使用 .batch 文件执行此操作?
  3. 如果没有,我应该从哪里开始?
4

2 回答 2

1

唯一重要的一点是替换,但您可以记录和修改它

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

显然在副本上进行测试。

于 2012-08-30T11:59:21.693 回答
0

在我看来,有两种选择:

  1. 创建您自己的 VBA 脚本代码来执行此操作。您可以使用 MS Office 帮助系统的内置 VBA 编辑器来了解您必须使用 MS Word 文档对象模型的哪些属性和功能才能完成任务。

  2. 查找并使用一些第三方商用软件来完成这项工作。有来自不同供应商的多个程序用于此任务。

第二种方法需要的时间和精力要少得多。批处理文件不会完成这项工作,除非您设法通过 OLE 自动化控制 MS Word 以访问需要替换文本的文档。

于 2013-02-10T07:53:08.737 回答