2017-07-28 150 views
0

我從Excel中導出Excel到CSV,使用此命令可以專門從工作表中的數據命名文件,而這些數據不會構成CSV數據的一部分文件名:使用excel-vba將工作表範圍導出到csv

Private Sub CommandButton1_Click() 
Dim Path As String 
Dim FileName1 As String 
Dim FileName2 As String 
Dim FileName3 As String 
Path = "T:\Richards Reports\MG Orders\" 
FileName1 = Range("A1") 
FileName2 = Range("O1") 
FileName3 = Range("M1") 
ActiveWorkbook.SaveAs FileName:=Path & FileName1 & "_" & FileName2 & "_" &  FileName3 & ".txt", FileFormat:=xlCSV 
End Sub 

不過,我需要能夠輸出限制在一個特定的範圍,例如細胞I6到I60,我苦苦尋找實現這一點的一種方式,任何建議表示讚賞。 TIA 鄧肯

回答

0

一種方法是在細胞中串連的值(與之間逗號)和手動保存:

Dim content As String 
Dim rng As Range 
Set rng = Range("A1:E2") 

For Each cell In rng 
    content = content & "," & cell.Value 
    'if we go to another row insert semicolon 
    If cell.Column = rng.Columns.Count Then 
     content = content & ";" 
    End If 
Next cell 

content = Right(content, Len(content) - 1) 'remove unnecessary comma at the beginning 

Set FSO = CreateObject("Scripting.FileSystemObject") 
'don't forget to insert your file path here 
Set wfile = FSO.CreateTextFile("YourPathHere", 2) 'connection for writing 

wfile.WriteLine content 
wfile.Close 

在這裏,我使用逗號(,)作爲字段分隔符和分號(;)作爲線分隔符,您可以根據需要更改它。另外,將範圍設置爲您要保存的範圍。

+0

我刪除了我的意見,這是不恰當的,因爲我喜歡的人,可讀性,它不是強制性的 – avb

+0

CSV應該是由機器可讀而不是人類,所以它可以以人類可讀的方式顯示:)當我清楚地看到一切時,我更喜歡它。 –

+0

非常感謝輸入,它有幫助,但我試圖導出到csv的單元格列保存像這樣的單元格數據:00000018; 04072017; A04001-0; mg28848; PZ; 50; por3456; 28072017; IAA.01 ;包括整個分號。理想情況下,我需要每個單元格都是文本或csv文件中的一行,並維護文件命名元素。道歉,但這是一個完整的新手 – duncan297

0

下面是代碼保存選定的範圍爲.csv

Sub saveSelection2csv() 
Dim range2save As Range 
Dim filename As Range 
Dim dataRow As Range 
Dim dataRowArr() As Variant 

    Set filename = Worksheets("Arkusz1").Range("A1") 

    Open ThisWorkbook.Path & "\" & filename.Value & ".csv" For Output As #1 

    For Each dataRow In Selection.Rows 
     dataRowArr = dataRow.Value 
     dataRowArr = Application.Transpose(Application.Transpose(dataRowArr)) 
     Print #1, Join(dataRowArr, ",") 
    Next 

    Close #1 
End Sub