2011-12-07 14 views
10

मुझे कुछ परिणाम .csv फ़ाइल के रूप में आउटपुट करने की आवश्यकता है, जो बाद में किसी अन्य प्रक्रिया द्वारा पार्स किया जाता है। इन परिणामों को उत्पन्न करने के लिए, मेरे पास एक बड़ी कार्यपुस्तिका है जिसमें सभी मैक्रोज़ और फ़ंक्शंस हैं जिन्हें मुझे चाहिए।वीबीए से एक अलग सीएसवी फ़ाइल कैसे बनाएं?

  1. क्या VBA से अलग .csv फ़ाइल "बनाना" संभव है?
  2. क्या यह "कच्चे पाठ" दृष्टिकोण में लिखने के बजाय VBA सुविधाओं का उपयोग करना संभव है?

VBA से CSV में आप :)

+1

अधिक जानकारी के बिना यह आपकी सहायता करने के लिए मुश्किल हो जाएगा। डेटा का स्रोत क्या है और आपको Excel की मूल विधि (SaveAs) का उपयोग करने के बजाय स्क्रैच से CSV बनाने की आवश्यकता क्यों है? – JimmyPena

उत्तर

22

कुछ इस तरह तुम क्या चाहते है?

Option Explicit 
Sub WriteFile() 

    Dim ColNum As Integer 
    Dim Line As String 
    Dim LineValues() As Variant 
    Dim OutputFileNum As Integer 
    Dim PathName As String 
    Dim RowNum As Integer 
    Dim SheetValues() As Variant 

    PathName = Application.ActiveWorkbook.Path 
    OutputFileNum = FreeFile 

    Open PathName & "\Test.csv" For Output Lock Write As #OutputFileNum 

    Print #OutputFileNum, "Field1" & "," & "Field2" 

    SheetValues = Sheets("Sheet1").Range("A1:H9").Value 
    ReDim LineValues(1 To 8) 

    For RowNum = 1 To 9 
    For ColNum = 1 To 8 
     LineValues(ColNum) = SheetValues(RowNum, ColNum) 
    Next 
    Line = Join(LineValues, ",") 
    Print #OutputFileNum, Line 
    Next 

    Close OutputFileNum 

End Sub 

भूल आप किसी भी एक अल्पविराम युक्त मैदान के चारों ओर उद्धरण डाल करने की आवश्यकता होगी है।

+0

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

+0

@ अल्फाब्रावो। यदि आप मेरी प्रोफ़ाइल पर जाते हैं तो आपको एक ईमेल पता मिलेगा। अगर आप मुझे अपने दोषपूर्ण कोड की एक प्रति भेजते हैं तो मुझे एक नज़र आएगी। –

+0

@tonyDallimore, "लॉक लिखें #OutputFileNum" क्या करता है? –

1

आप किसी मैक्रो वर्तमान कार्यपुस्तिका को बचाने के लिए चाहते लिख सकते हैं (खोला फ़ाइल उत्कृष्टता) धन्यवाद:

ActiveWorkbook.SaveAs Filename:="C:\Book1.csv", _ 
    FileFormat:=xlCSVMSDOS, CreateBackup:=False 
+0

ठीक है कि यह एक शुरुआत होगी। लेकिन कोई विचार है कि मैं पूरी तरह से बाहरी कैसे कर सकता हूं? – Jerome

7

टोनी का जवाब आम तौर पर काम करता है लेकिन उस मामले को संभाल नहीं करता है जहां आपके टेक्स्ट में अल्पविराम या उद्धरण शामिल हैं। आप वर्कबुक.SaveAs विधि का उपयोग करना पसंद कर सकते हैं।

यहां एक उदाहरण है यदि आप शीट 1 की सामग्री को अलग सीएसवी फ़ाइल के रूप में सहेजना चाहते हैं।

Sub create_csv() 
    Dim FileName As String 
    Dim PathName As String 
    Dim ws As Worksheet 

    Set ws = ActiveWorkbook.Sheets("Sheet1") 
    FileName = "filename.csv" 
    PathName = Application.ActiveWorkbook.Path 
    ws.Copy 
    ActiveWorkbook.SaveAs FileName:=PathName & "\" & FileName, _ 
     FileFormat:=xlCSV, CreateBackup:=False 
End Sub 

कल्पना कीजिए कि आपके पत्रक 1 शामिल हैं:

lorem ipsum

विद्या, मी "उम" IPS

उत्पादन csv फ़ाइल हो जाएगा:

लोरेम, ipsum

"विद्या, मी", "ips" "उम" ""

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