2011-12-08 12 views
5

मुझे एक वीबीए/वीबीएस स्क्रिप्ट के माध्यम से प्रोग्रामेटिकल की आवश्यकता है सभी वर्कशीट्स (कुल मिलाकर 4 और मुझे नाम पता है) वर्कशीट को उसी फ़ोल्डर में सीएसवी फाइलों के नाम पर वर्कशीट करने के लिए, एक्सेल लोड करने और चलाने के बिना मैक्रो मैन्युअल रूप से।प्रत्येक शीट को एक अलग सीएसवी फ़ाइल में निर्यात करें

आदर्श रूप से स्क्रिप्ट स्रोत फ़ाइलपैथ/filename.xls और निर्यात फ़ाइलपथ को कमांड लाइन तर्क के रूप में ले जाएगा।

मैंने एक्सेल के भीतर कई एक्सेल वीबीए स्क्रिप्ट पढ़ी हैं और मैंने पहली शीट को निर्यात करने के लिए एक्सेल वर्कबुक लोड करने के लिए कुछ देखा है।

(1,12) Expected End of Statement

Dim source As Workbook 
Set source = Application.Workbooks.Open(WScript.Arguments.Item(0), ReadOnly:=True) 
For Each sheet In source.Sheets 
.SaveAs Filename:= WScript.Arguments.Item(1) & Source.Sheets.Name, FileFormat:=xlCSV 
Next sheet 
wb.Close 
+4

आपका स्वागत है! कृपया अपना कोड पोस्ट करें ताकि अन्य इसे डीबग करने में मदद कर सकें। दिखा रहा है प्रयास हमेशा सराहना की जाती है (और अपेक्षित)। – Excellll

+0

माफ़ी, मुझे लगा कि मैं उस कोड के साथ संभवतः रास्ता बंद कर रहा था जिसे मैं निष्पादित करने की कोशिश कर रहा था, इसलिए सबमिट नहीं करना चाहता था।जैसा कि मैंने कहा था कि मेरे पास एक समान वीबीए काम है जो पहली शीट प्राप्त करता है, यह कोड वर्कबुक स्क्रिप्ट में किसी अन्य के साथ एक सरल समामेलन है। –

उत्तर

10

इस कोड को चलाने के लिए ऐसा कुछ दिखाई देगा।

  1. vbs फ़ाइल कमांडलाइन से क्रियान्वित किया जा सकता
  2. फ़ोल्डर का नाम अनावश्यक है के रूप में फ़ाइल मौजूद है, तो (इस के लिए एफएसओ वस्तु परीक्षण) फिर फ़ोल्डर यह चाहिए में रहता भी मौजूद
  3. कोड ऊपर

    • अपने VBA की तुलना में नोट करने के लिए पत्रक अलग करने के लिए automates एक्सेल

दो मुख्य बिंदु आप कर सकते हैं ' टी एक vbs ऑब्जेक्ट को स्ट्रिंग, वर्कबुक इत्यादि के रूप में मंद करें (इसलिए आपकी प्रारंभिक त्रुटि)। आप केवल उन्हें

  • मंद कर सकते हैं इस्तेमाल किया नहीं कर सकते StackOverflow करने के लिए एक VBScript में लगातार इस तरह के रूप xlCSV नामित CSV प्रारूप के रूप में नीचे 6 की इसलिए उपयोग

    Dim strFilename 
    Dim objFSO 
    Set objFSO = CreateObject("scripting.filesystemobject") 
    strFilename = "C:\temp\test.xlsx" 
    If objFSO.fileexists(strFilename) Then 
        Call Writefile(strFilename) 
    Else 
        wscript.echo "no such file!" 
    End If 
    Set objFSO = Nothing 
    
    Sub Writefile(ByVal strFilename) 
    Dim objExcel 
    Dim objWB 
    Dim objws 
    
    Set objExcel = CreateObject("Excel.Application") 
    Set objWB = objExcel.Workbooks.Open(strFilename) 
    
    For Each objws In objWB.Sheets 
        objws.Copy 
        objExcel.ActiveWorkbook.SaveAs objWB.Path & "\" & objws.Name & ".csv", 6 
        objExcel.ActiveWorkbook.Close False 
    Next 
    
    objWB.Close False 
    objExcel.Quit 
    Set objExcel = Nothing 
    End Sub 
    
  • +1

    यही वही है जो मुझे चाहिए, बहुत धन्यवाद, एक बहुत अच्छी व्याख्या और मुझे यह बताने के लिए धन्यवाद कि मैं कहां गलत हो रहा था। मैंने यहाँ कुछ सीखा है। –

    -1

    आपके आरंभ करने के:

    एक Excel कार्यपुस्तिका की तरह

    ------------------------------- 
    SELECT * FROM Demo 
    ------------------------------- 
    |F1|F2 |F3  |F4  | 
    | 1|1.1|12/10/2011|text elm 1| 
    | 2|2.2|12/11/2011|text elm 2| 
    | 3|4.4|12/12/2011|text elm 3| 
    ------------------------------- 
    

    और एक एक पत्रक डेमो युक्त देखते हुए हालांकि जब मैं मिश्रण करने के लिए कोशिश दो मैं इस त्रुटि मिलती है ADODB.Connection एक कनेक्शन स्ट्रिंग के साथ:

    Provider=MSDASQL.1;Extended Properties="DBQ=<FullPathToYourXls>;Driver={Microsoft 
    Excel Driver (*.xls)}; 
    

    तुम सब करने की जरूरत है .Execute

    SELECT * INTO [Demo.csv] IN '<PathToYourCsvFolder>' 'Text;' FROM Demo 
    

    की तरह एक का चयन करें जांच बयान प्राप्त करने के लिए है:

    type ..\data\ExcelCsv2\Demo.csv 
    "F1";"F2";"F3";"F4" 
    1;1,10;10.12.2011 00:00:00;"text elm 1" 
    2;2,20;11.12.2011 00:00:00;"text elm 2" 
    3;4,40;12.12.2011 00:00:00;"text elm 3" 
    

    (जर्मन लोकेल)

    का चयन करें जांच बयान उचित अनुभाग बनाएगा

    [Demo.csv] 
    ColNameHeader=True 
    CharacterSet=1252 
    Format=Delimited(;) 
    Col1=F1 Integer 
    Col2=F2 Float 
    Col3=F3 Date 
    Col4=F4 Char Width 50 
    

    schema.ini फ़ाइल में स्वचालित रूप से।

    +0

    बहुत धन्यवाद Ekkehard हालांकि मैं एक पारंपरिक भाषा का उपयोग नहीं कर रहा हूं जो कि मैं अपने पर्यावरण से प्राप्त कर सकता हूं, आवश्यक पैरामीटर पारित करते समय एक vbs स्क्रिप्ट को कॉल करना है। हालांकि यदि कनेक्शन स्ट्रिंग को वीबीए में चलाया जा सकता है तो मैं xls फ़ाइल के चारों ओर स्विच करने में सक्षम हो सकता हूं जिसमें मैं कनेक्शन बनाए रख सकता हूं। –

    +0

    यह भी नहीं देखता कि आपका उदाहरण कार्यपुस्तिका में एकाधिक चादरों के साथ कैसे काम करता है, क्या मुझे कुछ याद आ रही है? –

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