2013-10-09 82 views
8

說我有產生一些數據單元到當前工作表像函數:導出數據到CSV - Excel的VBA

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

在當前工作簿中的作爲當前工作表中的相反,我想創建並加載到一個csv文件,以給出路徑

C:\USERS\Documents\Sample.csv

我見過這樣的東西

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

但是,這將只是保存當前工作簿到另一個位置,但我不希望產生在當前工作表的數據,然後保存,而我想立即出口?無論如何,我可以做到這一點。也許使像ActiveWorkbook = //pathname然後激活它?

+3

首先打開一個新的工作簿。然後在新的工作簿中存儲您的宏存款數據。然後你有沒有將你的新工作簿保存爲你選擇的文件夾中的csv文件夾以及你的選擇名稱。然後關閉新的工作簿。 –

+0

@ Gary的學生我正在使用'Workbooks.Add'來創建另一個工作簿。我現在應該如何激活以確保即時導入...就像'NewWorkbook.Sheets(1).Activate'? – Thatdude1

+2

不要只使用workbooks.add ...使用類似... dim wb as workbook //設置wb = workbooks.add //使用wb ... –

回答

12

您可以使用VBA很簡單地寫入CSV。 一個例子可以是:

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

此解決方案不處理數據中存在空格或換行符或逗號的情況。始終使用真正的CSV功能,而不是串聯自己的字符串。 – dataless

+10

無數據...而不是暗示更好的解決方案,並沒有真正添加到網站...請花點時間發佈您的更好的解決方案。我總是樂於學習。也許,儘量不要打倒別人,而是儘量幫助他們。 –

6

使用.move使目標片的新書,然後.saveas新創建的書爲CSV。調整路徑名以調整您希望保存csv的目錄。

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

剛剛修改通過@CharlieSmith代碼到一個相當簡單和更實用的代碼,將所有的錶轉換工作簿與相應的工作表名稱命名的新的CSV文件。

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 

希望這有助於