2012-11-21 7 views
8

हाल ही में मुझे कुछ डेटा को स्प्रेडशीट में कॉपी करने की आवश्यकता है, इसे प्रारूपित करने के लिए वीबीए का उपयोग करें, फिर उस शीट को CSV फ़ाइल में सहेजें। मैं निम्नलिखित कोड का उपयोग करता हूं:वीबीए का उपयोग कर सेमी-कॉलन सीमांकित सीएसवी फ़ाइल को कैसे सहेजते हैं?

ws.SaveAs Filename:=filestr, Fileformat:=xlCSV 

ws वर्कशीट जिसे मैंने सहेजा है।

यह मुझे एक अल्पविराम-सीमांकित सीएसवी फ़ाइल देगा।

हालांकि, मैं उस शीट को अर्धविराम-सीमांकित फ़ाइल में सहेजना चाहता हूं। मैं कुछ Googling किया है और निम्नलिखित समाधान पाया है:

  1. > सेटिंग प्रारंभ> क्षेत्रीय और भाषा विकल्प कस्टमाइज़ करें बटन
  2. अगला एक सेमी-कोलन (में सेपरेटर प्रकार सूची पर पर
  3. क्लिक करें;)

मैं उपरोक्त प्रक्रिया का पालन किया है और करने के लिए अपने कोड बदल दिया है:

ws.SaveAs Filename:=filestr, Fileformat:=xlCSV, Local:=True 

लेकिन मैं stil मुझे आउटपुट के रूप में अल्पविराम-सीमांकित सीएसवी फ़ाइल मिली।

एक्सेल के संस्करण का उपयोग कर रहा हूँ Excel 2003 है और मेरे ओएस Windows XP

है

किसी VBA का उपयोग कर एक सेमी-कोलन सीमांकित फ़ाइल को बचाने के लिए सुझाव है कि सकता है? ActiveWorkbook.SaveAs "मेरे File.csv" xlCSV स्थानीय,,:: = सच

(का उपयोग नहीं करते: =: फ़ाइल का नाम) इस

+3

इसे मैन्युअल रूप से करने का एक तरीका है; http://stackoverflow.com/a/7079703/246342 डिलीमीटर को ";" से प्रतिस्थापित करें और ActiveSheet.UsedRange –

+0

के साथ सीमा आपके सुझाव के लिए बहुत बहुत धन्यवाद। लेकिन जब मैंने आपका कोड चलाने की कोशिश की तो मुझे एक समस्या आई है। मेरे पास स्प्रेडशीट में '1.0000000' जैसे कुछ मान हैं और जब यह 'CStr (c.Value)' द्वारा स्ट्रिंग में कनवर्ट किया जाता है, तो यह स्वचालित रूप से' 1' तक गोल हो जाता है। क्या आप सुझाव दे सकते हैं कि इससे कैसे निपटें? धन्यवाद :) – user1758952

+1

प्रारूपण रखने के लिए 'c.text' –

उत्तर

0

बस इस कोड का उपयोग क्योंकि एक ही समस्या थी। इस मामले में फ़ाइल नाम की कोई कार्यक्षमता नहीं है।

यह वही मेरे लिए काम किया है:

With ActiveWorkbook 
    .SaveAs Filename:="My File.csv", FileFormat:=xlCSV, Local:=True 
    .Close False 
End With 

क्षेत्रीय सेटिंग्स में ->; < - सूची विभाजक के रूप में। बंद करना बंद होने पर परिवर्तनों को सहेजना भी महत्वपूर्ण नहीं है -> बंद करने के साथ आपको False का उपयोग करना होगा।

+1

" फ़ाइल नाम: = "का प्रयोग करें या कुछ भी नहीं बदलेगा –

10

मैं सिर्फ देख लिया है

+1

एक आकर्षण की तरह काम करता है ... लेकिन "झूठी झूठी" स्थापित करना जरूरी है! thx –

+0

मैं Excel 2007 का उपयोग कर रहा हूं और केवल कॉल के बाद ".Close False" मेरा CSV ";" का उपयोग करके सहेजा गया था सूची विभाजक के रूप में। धन्यवाद! – cantoni

0

निर्माण के बाद vbs स्क्रिप्ट का उपयोग करने के लिए succeded:

।SaveAs फ़ाइल का नाम, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1

जहां तर्क हैं:

Object Filename, 
Object FileFormat, 
Object Password, 
Object WriteResPassword, 
Object ReadOnlyRecommended, 
Object CreateBackup, 
XlSaveAsAccessMode AccessMode, 
Object ConflictResolution, 
Object AddToMru, 
Object TextCodepage, 
Object TextVisualLayout, 
Object Local 

sourcelink: https://msdn.microsoft.com/ru-ru/library/microsoft.office.tools.excel.workbook.saveas.aspx

अंतिम "1" "SaveAs" में समारोह स्थानीय के बराबर = सच

भी है, अर्धविराम ओएस क्षेत्रीय सेटिंग्स में सूची विभाजक के रूप में (ऊपर जवाब देखें)

1

कोई ज़रूरत नहीं यह सब वर घोषित करने के लिए परिभाषित किया जाना चाहिए iables, बस स्थानीय जोड़ें: = अपने SaveAs विधि के अंत में सत्य, जैसे:

ActiveWorkbook.SaveAs Filename:="C:/Path/TryMe.csv", FileFormat:=xlCSV, Local:=True 
संबंधित मुद्दे