我正在嘗試跨越大量的.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宏,程序內腳本來做所有事情嗎? –