2012-07-17 10 views
5

में लूप सभी पद फ़ाइलें के माध्यम से मैं निम्नलिखित कोड है:निर्देशिका

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 की एक विधि है, इसलिए बस अपने आप में विधि नाम का उपयोग है। बेहतर, "दस्तावेज़" प्रकार का पैरामीटर लेने के लिए अपनी विधि को अनुकूलित करें और खुले दस्तावेज़ को सीधे पास करें। –

उत्तर

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 

देख Btw, क्या आप वाकई *.* वाइल्डकार्ड का उपयोग करना चाहते हैं? अगर फ़ोल्डर में ऑटोकैड फाइलें हों तो क्या होगा? ActiveDocument.Name आपको एक्सटेंशन के साथ फ़ाइल का नाम भी देगा।

+0

मैं इसे केवल .docm दस्तावेज़ों पर लागू करने के लिए कैसे प्राप्त करूं? – user1440061

+0

'Dir (vDirectory &" * .docm ") के साथ' Dir (vDirectory & "*। *") 'बदलें' ' –

0

निर्देशिका में सभी शब्द दस्तावेज़ों को संपादित करने के लिए मैंने यह सरल सबराउटिन बनाया है।

निर्देशिका के माध्यम से subRoutine loops और प्रत्येक * .doc फ़ाइल को पाता है। फिर खुली दस्तावेज़ फ़ाइल पर यह दूसरी उपराउटिन पर कॉल करता है। दूसरे subRoutine समाप्त होने के बाद दस्तावेज़ सहेजा गया है और फिर बंद कर दिया गया है।

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 

~~~~~~

संबंधित मुद्दे