2011-08-16 14 views
6

मेरे पास एक एक्सएलएस फ़ाइल एक्सेल 2003 पर मैक्रो के साथ एक सीएसवी फ़ाइल बनाता है, मेरे पास 40+ कॉलम हैं और अंतिम 3 वैकल्पिक हैं, इसलिए एक्सएलएस पर बहुत सारे खाली मूल्य हैं , जब मैं निर्यात सबराउटिन चलाता हूं तो यह सभी पंक्तियों पर पिछली कॉमा नहीं रखता है, क्यों? क्योंकि: http://support.microsoft.com/kb/77295 -.-सीएसवी फाइलों में एक्सेल पीछे की कॉमा बग

Microsoft Office Excel में, यदि आप पाठ में या CSV (कॉमा सेपरेटेड मूल्य) में एक फ़ाइल को सहेजने के प्रारूप, एक्सेल टैब और अर्धविराम कार्यपत्रक के प्रत्येक स्तंभ के बीच डालता है। हालांकि, कुछ टेक्स्ट फ़ाइलों को 16-पंक्ति वाले ब्लॉक में अलग-अलग टैब या कॉमा से सहेजा जा सकता है।

सुनिश्चित करें कि एक्सेल सभी खाली कॉलम के लिए टैब या कॉमा सीमांकक बचाता है बनाने के लिए, सत्यापित करें कि फ़ाइल में अंतिम स्तंभ कम से कम हर 16 में कुछ डेटा शामिल हैं:

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

-.- माइक्रोसॉफ्ट जाने का तरीका! -.-

ठीक है तो मेरा मुख्य मुद्दा यह है कि जेनरेट की गई फाइल को मेरे दायरे से किसी अन्य प्रोग्राम द्वारा पार्स किया जाएगा, जिसे उस विशिष्ट प्रारूप की आवश्यकता है क्योंकि यह अभी है, यदि फ़ील्ड हर 16 पंक्ति में रिक्त जोड़ रहा है खाली, ऐसा लगता है लेकिन डेटा प्रोसेसिंग डिपार्टमेंट उस सफेद जगह के बारे में शिकायत कर रहा है ... क्या आप उन्हें विश्वास कर सकते हैं !?

वैसे भी मैं भी एक फ्लैग जोड़ने और ढूंढें समारोह के साथ इसे हटाने के लिए कोशिश की, लेकिन ओएफसी जब आप फ़ाइल इसे दूर फिर से सीमांकक ले जाएगा बचाने ... अपने इतिहास को पढ़ने के लिए

धन्यवाद, पी

कोई सुझाव?

संपादित करें: दुर्भाग्य से एक्सेल का उपयोग करना आवश्यक है, डेटा को विभिन्न उपयोगकर्ताओं द्वारा एक्सेल शीट के माध्यम से मैन्युअल रूप से इनपुट किया जाता है, वीबीए कोड टेम्पलेट पीढ़ी आदि की तरह बहुत अधिक करते हैं .. यह एकमात्र मुद्दा है जो मैं कर रहा हूं और यह पूरी प्रक्रिया को बदलने के लिए व्यवहार्य नहीं है।

+0

मैन्युअल पाश कोशिकाओं और उत्पादन एक सीएसवी करने के लिए VBA का उपयोग करें? –

+0

यही वह है जो मैं वर्तमान में कर रहा हूं .. – isJustMe

+1

यदि आप मैन्युअल रूप से कक्षों को पुन: सक्रिय करने और एक बफर में एक CSV बनाने के लिए vba का उपयोग करते हैं और फिर इसे डिस्क पर लिखते हैं तो KB आलेख अंतर्निहित CSV निर्माण से संबंधित नहीं है ? –

उत्तर

5

मैन्युअल उदाहरण;

Dim r As Range: Set r = Range("A1:C10") '// or ActiveSheet.UsedRange for everything 
Dim buffer As String, delimiter As String, c As Range 
Dim i As Long 

For Each c In r 
    If (i Mod r.Columns.Count) = 0 Then 
     If (Len(buffer)) Then delimiter = vbCrLf 
    Else 
     delimiter = "," 
    End If 
    buffer = buffer & delimiter & """" & CStr(c.Value) & """" '//or c.text to preserve formatting 
    i = (i + 1) 
Next 

Open "c:\xxx.csv" For Output As #1 
    Print #1, buffer 
Close #1 
+0

बिल्कुल सही! वास्तव में मुझे क्या चाहिए! – isJustMe

+0

हे एलेक्स, मुझे उम्मीद है कि आप इस पर मेरी मदद कर सकते हैं: http://stackoverflow.com/questions/8605804/this-custom-validation-is-not-working-buti-dont-now-whats-happenning धन्यवाद! – isJustMe

0

सुझाव 1) एक CSV फ़ाइल उत्पन्न करने के लिए Excel का उपयोग करना बंद करें।

आपका डेटा स्रोत क्या है? एक्सेल को डेटा कहां से मिलता है? शायद आप मूल डेटा स्रोत के साथ कुछ कर सकते हैं ताकि एक्सेल का उपयोग मध्यस्थ के रूप में करने के बजाय सीएसवी उत्पन्न हो सके। यदि आप वास्तव में बड़े हथौड़ों को पसंद करते हैं, तो बिज़टॉक डेटा इनपुट/आउटपुट मैनिपुलेशन के लिए अंतिम एमएस उपकरण है। कुछ अपने टूलबॉक्स में से एक को खींच सकते हैं, लेकिन एक सीएसवी फ़ाइल उत्पन्न करने के लिए कस्टम सी # प्रोग्राम को एक साथ फेंकना कुछ घंटों में किया जा सकता है।

संक्षेप में: यदि संभव हो तो, एक बेहतर उपकरण का उपयोग करें!

0

यदि आपके डेटा में अल्पविराम नहीं है, तो टेक्स्ट पाठक लिखना बहुत आसान होगा और लाइन में कॉलम की संख्या की गणना करता है और यदि पर्याप्त नहीं है तो अंत में अल्पविराम जोड़ें । यह आदर्श नहीं है, लेकिन सीएसवी कनवर्टर के लिए कस्टम एक्सेल लिखना शायद संभव है।

+0

सुझाव के लिए धन्यवाद! मेरे पास बहुत सारे कॉमा हैं हालांकि, कुछ फ़ील्ड विवरण फ़ील्ड हैं, अन्य खुदरा लागत हैं .. आदि, – isJustMe

0

सबसे आसान तरीका:

ActiveWorkbook.SaveAs "MyFileNameAndDir.csv", xlCSV, Local:=True 
संबंधित मुद्दे