2012-08-30 66 views
0

我正在嘗試跨越大量的.doc文件(大約200個文件)來查找和替換算法。在.doc批處理中查找/替換?

我需要找到並替換大約40個字符串。我需要定期執行這些操作,所以我覺得這將是一個非常好的案例來創建腳本。

  1. 是否可以通過單詞完成此操作?
  2. 如果沒有,是否可以用.batch文件做到這一點?
  3. 如果不是,我應該從哪裏開始?
+0

您可以錄製一個捕獲您執行操作一次的宏。然後,您可以使用該vb代碼並向其中添加更多代碼,以批處理方式爲整個目錄做例子。 – PoeHaH

+0

您將在word中創建一個枚舉文件的宏,打開它們,執行替換,然後將它們保存到磁盤。您不需要使用批處理文件,也不需要批處理文件自己完成此操作。 –

+0

@AlexK。你是說我應該通過微軟的Word宏,程序內腳本來做所有事情嗎? –

回答

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 

顯然這個測試在副本上。

+0

在這一行上:'Dim fn As String:fn = Dir $(PATH&「* .doc」)',還有什麼方法可以通過子目錄嗎? –

+0

另外,這是什麼語言?我想看看是否還有其他一些有用的功能。我想要查找和替換的一些字符串具有特殊的格式(例如,它們可以嵌套在表格中,而我想用另外的表格行替換)。 –

+0

其VBA;宏觀語言。要查看所有子文件夾,您需要遞歸搜索; http://www.ammara.com/access_image_faq/recursive_folder_search.html - 您無法真正使用查找/替換來修改文檔結構,這需要使用不同的代碼來識別和編輯表 –

0

在我看來,有兩種選擇:

  1. 創建您自己的VBA腳本代碼來做到這一點。您可以使用內置於VBA編輯器的MS Office幫助系統來了解您必須使用MS Word文檔對象模型的哪些屬性和功能才能完成此任務。

  2. 尋找和使用一些第三方的商業軟件來完成這項工作。這項任務有不同廠商的幾個程序。

第二種方法需要相當少的時間和精力。批處理文件不會完成這項工作,除非您設法通過OLE自動化控制MS Word以訪問需要替換文本的文檔。