2012-11-23 25 views
6

से .bat फ़ाइल निष्पादित करें मुझे अपने एक्सेल वीबीए मैक्रो के साथ कोई समस्या है। मुझे बैच फ़ाइल निष्पादित करने की आवश्यकता है जो एक्सेल कार्यपुस्तिका के समान फ़ोल्डर में है। कोड कभी-कभी अच्छी तरह से काम करता है। मुझे नहीं पता कि त्रुटि क्या हो रही है। यहां कोड है:एक्सेल वीबीए मैक्रो

Sub writebatch() 
    Sheets("code").Select 
    Application.DisplayAlerts = False 
    ActiveWorkbook.SaveAs FileName:=ThisWorkbook.path & "\code.bat", 
    FileFormat:=xlTextPrinter, CreateBackup:=False 
    Application.DisplayAlerts = True 
    ThisWorkbook.Saved = True 
    Shell "cmd.exe /k cd " & ThisWorkbook.path & "&&code.bat" 
    Application.Quit 
End Sub 

यह बैच फ़ाइल लिखता है, लेकिन फिर इसे निष्पादित नहीं करता है। केवल एक बार जब मुझे कमांड विंडो बंद नहीं हुई और उसने कहा कि code.bat फ़ाइल नहीं मिल सका। तो बदले गए कमांड ने काम किया। क्या cmd.exe को चलाने के लिए संभव है और code.bat को बदले बिना सापेक्ष पथ के साथ चलाएं?

+2

यकीन है कि मुझे समझ में नहीं एक स्ट्रिंग में चरित्र कोड रूपांतरण समारोह Chr (34), 34 उद्धरण के लिए ASCII मूल्य का उपयोग किया जा रहा है।" आपके पास एक एक्सेल वर्कबुक है जिसे आप बैच फ़ाइल के रूप में सहेज रहे हैं और फिर आप "एक्सेल" फ़ाइल को .bat के रूप में चलाने की कोशिश कर रहे हैं? – InContext

+0

क्या स्ट्रिंग "&&" और "code.bat" में कुछ विशेष मतलब है, या यह वास्तव में फ़ाइल नाम का हिस्सा है? – RBarryYoung

उत्तर

7

सबसे पहले, जब आप एक अध्यक्ष एवं प्रबंध निदेशक उदाहरण लांच आप पूरे सीएमडी तर्क संलग्न करने की अगर आप ऑपरेटरों के किसी भी प्रकार के (&) का उपयोग की जरूरत है तर्क, इस तरह:

:

CMD /K "command "path with spaces" & command" 

तो तुम कुछ इस तरह करने की जरूरत है

नोटिस मैंने उद्धरण से बचने के लिए "" प्रयोग किया है, लेकिन मुझे वीबीए में उद्धरण से बचने का तरीका नहीं पता है।

पीएस: यदि आपके पास रिक्त स्थान हैं, तो code.bat को भी संलग्न करना याद रखें, लेकिन केवल तभी यदि आपके पास रिक्त स्थान हैं।

+2

यह या तो ब्लैकस्लैश '\' है या डबल कोट्स '' ' –

4

मैं बहुत यकीन है कि समस्या इस लाइन

Shell "cmd.exe /k cd " & ThisWorkbook.path & "&&code.bat" 

आप && के सामने एक जगह की जरूरत cd आदेश से अलग करने के लिए करने के लिए नीचे है और यह code.bat से अलग करने के बाद कर रहा हूँ।

CMD /K "command1 & command2" 

और फिर उप आंतरिक संलग्न:

Shell "cmd.exe /k cd " & ThisWorkbook.path & " && code.bat" 
2

शैल "cmd.exe/k सीडी/डी" & ThisWorkbook.path & "& & code.bat"

यहाँ

,/डी cmd में खुलेगा दस्तावेज़ फ़ोल्डर के बिना। डी/डी में यह डी ड्राइव में खुल जाएगा, आप इसे अपने आसान के अनुसार बदल सकते हैं। एक उद्धरण (") को सम्मिलित करने के

+0

हाय रखने के लिए सिंगल कोट्स का उपयोग करने के लिए, साइट पर योगदान देने के लिए धन्यवाद। जैसा कि यह खड़ा है कि आपका उत्तर हमारे [दिशानिर्देशों के अच्छे दिशानिर्देश] के बहुत कम है [http: //stackoverflow.com/help/how-to-answer)। क्या आप इसे विस्तारित करने में सक्षम होंगे? – starsplusplus

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