2013-10-09 22 views
8

मैं एक समारोह है कि जैसे मौजूदा कार्यपत्रक में कक्षों में कुछ डेटा उत्पन्न करता है कहते हैं:निर्यात डाटा एक्सेल VBA

Cells(1, "A").Value = ... 
Cells(2, "A").Value = ... 
Cells(3, "A").Value = ... 
Cells(4, "A").Value = ... 
वर्तमान कार्यपुस्तिका में किया जा रहा है वर्तमान कार्यपत्रक के

इसके बजाय, मैं चाहता हूँ इसे एक सीएसवी फ़ाइल में बनाएं और लोड करें,

C:\USERS\Documents\Sample.csv कहें।

मैंने देखा है

 ActiveWorkbook.SaveAs Filename:= _ 
"c:\MyFile.csv", FileFormat:=xlCSV _ 
, CreateBackup:=False 

की तरह सामान लेकिन यह सिर्फ किसी अन्य स्थान पर वर्तमान कार्यपुस्तिका की बचत होगी, लेकिन मैं वर्तमान वर्कशीट में डेटा उत्पन्न करने के लिए और फिर बचाने नहीं करना चाहते, बल्कि मैं चाहता हूँ तुरंत निर्यात करें? वैसे भी मैं ऐसा कर सकता हूं। शायद ActiveWorkbook = //pathname की तरह बनाना और फिर इसे सक्रिय करना?

+3

सबसे पहले एक नई कार्यपुस्तिका खोलने में मदद करता है। फिर नई कार्यपुस्तिका में अपना मैक्रो जमा डेटा रखें। फिर क्या आप नई कार्यपुस्तिका को अपने पसंद के फ़ोल्डर में सीएसवी के रूप में चुनने के नाम के साथ सहेजते हैं। फिर नई कार्यपुस्तिका बंद करें। –

+0

@ गैरीज़ स्टूडेंट मैं एक और कार्यपुस्तिका बनाने के लिए 'वर्कबुक। एड' का उपयोग कर रहा हूं। मैं यह सुनिश्चित करने के लिए अब सक्रिय कैसे करूं कि मैं इसे आयात कर रहा हूं ... 'न्यूवर्क्सबुक। शीट्स (1) जैसी कुछ है। – Thatdude1

+2

केवल workbooks.add का उपयोग न करें ... कुछ ऐसा उपयोग करें ... वर्कबुक के रूप में मंद wb // wb = workbooks.add // wb के साथ सेट करें ... –

उत्तर

12

आप वीबीए का उपयोग करके बस एक सीएसवी को लिख सकते हैं। एक उदाहरण हो सकता है:

Sub WriteCSVFile() 

Dim My_filenumber As Integer 
Dim logSTR As String 

My_filenumber = FreeFile 

logSTR = logSTR & Cells(1, "A").Value & " , " 
logSTR = logSTR & Cells(2, "A").Value & " , " 
logSTR = logSTR & Cells(3, "A").Value & " , " 
logSTR = logSTR & Cells(4, "A").Value 

Open "C:\USERS\Documents\Sample.csv" For Append As #My_filenumber 
    Print #My_filenumber, logSTR 
Close #My_filenumber 

End Sub 
+0

The_Barman: बहुत अच्छा और साफ! –

+5

यह समाधान ऐसे मामलों को संभाल नहीं करता है जहां आपके डेटा में व्हाइटस्पेस या न्यूलाइन या कॉमा मौजूद हैं। अपने स्वयं के तारों को संयोजित करने के बजाय हमेशा एक वास्तविक सीएसवी फ़ंक्शन का उपयोग करें। – dataless

+10

dataless ... एक बेहतर समाधान पर संकेत देने और वास्तव में साइट पर जोड़ने के बजाय ... कृपया, अपना बेहतर समाधान पोस्ट करने के लिए समय दें। मैं हमेशा सीखने में खुश हूं। शायद, दूसरों को दस्तक देने की कोशिश न करें, बल्कि उनकी मदद करने की कोशिश करें। –

6

लक्ष्य शीट की एक नई किताब बनाने के लिए .move का प्रयोग करें, तो एक सीएसवी के रूप में नव निर्मित पुस्तक .saveas। उस निर्देशिका को समायोजित करने के लिए पथनाम समायोजित करें जहां आप अपना सीएसवी सहेजना चाहते हैं।

Pathname = "" & Thisworkbook.path & "YourName.csv" 
    Sheets("Sheet you want as CSV").Move 
    ActiveWorkbook.SaveAs Filename:=PathName, _ 
     FileFormat:=xlCSV, CreateBackup:=False 
0

बस एक काफी सरल और अधिक उपयोगी कोड है, जो संबंधित पत्रक के नाम के साथ नामित नई csv फ़ाइलें करने के लिए अपनी कार्यपुस्तिका में सभी पत्रक में परिवर्तित कर देंगे करने के लिए @CharlieSmith द्वारा कोड को संशोधित किया।

Sub WriteCSVFile() 
Dim i As Integer 
Dim WS_Count As Integer 

WS_Count = ActiveWorkbook.Worksheets.Count 
For i = 1 To WS_Count 
Dim ws As Worksheet 

Set ws = ThisWorkbook.Worksheets(i) 
    PathName = "" & ThisWorkbook.Path & "\" & ws.Name & ".csv" 
    ws.Copy 
    ActiveWorkbook.SaveAs Filename:=PathName, _ 
     FileFormat:=xlCSV, CreateBackup:=False 
Next i 

End Sub 

आशा इस

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