我正在尝试跨越大量的.doc文件(大约200个文件)来查找和替换算法。在.doc批处理中查找/替换?
我需要找到并替换大约40个字符串。我需要定期执行这些操作,所以我觉得这将是一个非常好的案例来创建脚本。
- 是否可以通过单词完成此操作?
- 如果没有,是否可以用.batch文件做到这一点?
- 如果不是,我应该从哪里开始?
我正在尝试跨越大量的.doc文件(大约200个文件)来查找和替换算法。在.doc批处理中查找/替换?
我需要找到并替换大约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
显然这个测试在副本上。
在这一行上:'Dim fn As String:fn = Dir $(PATH&“* .doc”)',还有什么方法可以通过子目录吗? –
另外,这是什么语言?我想看看是否还有其他一些有用的功能。我想要查找和替换的一些字符串具有特殊的格式(例如,它们可以嵌套在表格中,而我想用另外的表格行替换)。 –
其VBA;宏观语言。要查看所有子文件夹,您需要递归搜索; http://www.ammara.com/access_image_faq/recursive_folder_search.html - 您无法真正使用查找/替换来修改文档结构,这需要使用不同的代码来识别和编辑表 –
在我看来,有两种选择:
创建您自己的VBA脚本代码来做到这一点。您可以使用内置于VBA编辑器的MS Office帮助系统来了解您必须使用MS Word文档对象模型的哪些属性和功能才能完成此任务。
寻找和使用一些第三方的商业软件来完成这项工作。这项任务有不同厂商的几个程序。
第二种方法需要相当少的时间和精力。批处理文件不会完成这项工作,除非您设法通过OLE自动化控制MS Word以访问需要替换文本的文档。
您可以录制一个捕获您执行操作一次的宏。然后,您可以使用该vb代码并向其中添加更多代码,以批处理方式为整个目录做例子。 – PoeHaH
您将在word中创建一个枚举文件的宏,打开它们,执行替换,然后将它们保存到磁盘。您不需要使用批处理文件,也不需要批处理文件自己完成此操作。 –
@AlexK。你是说我应该通过微软的Word宏,程序内脚本来做所有事情吗? –