2012-07-17 72 views
5

我有以下代碼:遍歷所有的Word文件在目錄

Sub WordtoTxtwLB() 
' 
' WordtoTxtwLB Macro 
' 
' 
Dim fileName As String 
myFileName = ActiveDocument.Name 

ActiveDocument.SaveAs2 fileName:= _ 
"\\FILE\" & myFileName & ".txt", FileFormat:= _ 
wdFormatText, LockComments:=False, Password:="", AddToRecentFiles:=True, _ 
WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _ 
SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _ 
False, Encoding:=1252, InsertLineBreaks:=True, AllowSubstitutions:=False, _ 
LineEnding:=wdCRLF, CompatibilityMode:=0 


End Sub 

我想通過所有的字(.DOC)目錄中的文件的環這一分。我有以下代碼:

Sub LoopDirectory() 

vDirectory = "C:\programs2\test" 

vFile = Dir(vDirectory & "\" & "*.*") 

Do While vFile <> "" 

Documents.Open fileName:=vDirectory & "\" & vFile 

ActiveDocument.WordtoTxtwLB 

vFile = Dir 
Loop 

End Sub 

但它不工作。我如何通過更改當前代碼或使用新代碼來實現這一目標?

+1

'WordtoTxtwLB'不中的ActiveDocument的方法,所以只需通過自身使用的方法名。更好的方法是,調整您的方法以獲取「文檔」類型的參數並將打開的文檔直接傳遞給它。 – 2012-07-17 17:41:49

回答

11

您實際上並不需要WordtoTxtwLB宏。你可以結合這兩個代碼。看到這個例子

UNTESTED

Sub LoopDirectory() 
    Dim vDirectory As String 
    Dim oDoc As Document 

    vDirectory = "C:\programs2\test\" 

    vFile = Dir(vDirectory & "*.*") 

    Do While vFile <> "" 
     Set oDoc = Documents.Open(fileName:=vDirectory & vFile) 

     ActiveDocument.SaveAs2 fileName:="\\FILE\" & oDoc.Name & ".txt", _ 
           FileFormat:=wdFormatText, _ 
           LockComments:=False, _ 
           Password:="", _ 
           AddToRecentFiles:=True, _ 
           WritePassword:="", _ 
           ReadOnlyRecommended:=False, _ 
           EmbedTrueTypeFonts:=False, _ 
           SaveNativePictureFormat:=False, _ 
           SaveFormsData:=False, _ 
           SaveAsAOCELetter:=False, _ 
           Encoding:=1252, _ 
           InsertLineBreaks:=True, _ 
           AllowSubstitutions:=False, _ 
           LineEnding:=wdCRLF, _ 
           CompatibilityMode:=0 

     oDoc.Close SaveChanges:=False 
     vFile = Dir 
    Loop 
End Sub 

順便說一句,你確定你要使用的*.*通配符?如果文件夾中有Autocad文件會怎麼樣? ActiveDocument.Name也會給你帶擴展名的文件名。

+0

我如何得到這隻適用於.docm文件? – user1440061 2012-07-26 19:32:38

+0

用'Dir(vDirectory&「* .docm」)替換'Dir(vDirectory&「*。*」)'' – 2012-07-26 19:35:40

0

編輯目錄中的所有word文檔我建立了這個簡單的子程序。

子例程循環遍歷目錄,並打開它找到的每個* .doc文件。然後在打開的文檔文件中調用 第二個子例程。第二個子例程結束後,文件 被保存並關閉。

Sub DoVBRoutineNow() 
Dim file 
Dim path As String 


path = "C:\Documents and Settings\userName\My Documents\myWorkFolder\" 

file = Dir(path & "*.doc") 
Do While file <> "" 
Documents.Open FileName:=path & file 

Call secondSubRoutine 

ActiveDocument.Save 
ActiveDocument.Close 

file = Dir() 
Loop 
End Sub 

~~~~~~