2017-07-28 6 views
0

これを使用してExcelからCSVにエクスポートすると、CSVデータの一部を構成しないセル内のセルのワークシート内のデータファイル名:Excelを使用してワークシートの範囲を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 

は、しかし、私はI60に例セルI6のために、特定の範囲に出力を制限できるようにする必要があり、私はこれを達成する方法を見つけるのに苦労しています、任意の提案は大歓迎します。 TIA ダンカン

答えて

0

一つの方法は、(間のカンマで)細胞におけるCONCATENATE値であると手動で保存します:ここ

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 

Iは、フィールドセパレータ及びセミコロンとしてカンマ(、)を使用した(;)ラインとして区切り記号は、必要に応じて変更できます。また、保存する範囲に範囲を設定します。ここで

+0

を.csvに選択範囲を保存するためのコードが、私は人間readibilityを好むことから、 – avb

+0

CSVを機械で読み取り可能になっている義務ではありません、それは不適切だった、私のコメントを削除しています人間よりもむしろ人間が読めるように表示することができます:)私はすべてがはっきりと見えるときも好きです。 –

+0

入力のために多くの感謝、私はcsvにエクスポートしようとしているセルの列は、00000018; 04072017; A04001-0; mg28848; PZ; 50; por3456; 28072017; IAA.01 ;全体を通してセミコロンを含む。理想的には、各セルがテキストまたはCSVファイル内の行であり、ファイル命名要素を維持する必要があります。申し訳ありませんが、この完全な初心者です – duncan297

0

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 
関連する問題