2012-07-17 38 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 

~~~~~~