エクセルの表データ内容をカンマ区切りのテキストデータで出力します
前回とは別に、今回はエクセルシートに作成した表データを、拡張子.csvあるいは.txtファイルにカンマ区切りのテキストとして出力するvba記述です。
vbaコード内で1行ずつ各セルごとにカンマで区切って書き込みをします。
■サンプル作業用の準備物
①エクセルのサンプル表データ
エクセルにあらかじめサンプルのデータを作成。
4列、11行のデータをテキストへ書き出しします。
②Cドライブに「テキスト出力」フォルダを準備
出力するテキストファイルを格納するためのフォルダを準備しておきます。
■エクセルの標準モジュールに記述するコード
Public Sub CSVOutput001()
Dim d As Integer
Dim dd As Integer
Dim strCSV As String
Open "C:\テキスト出力\test001.csv" For Output As #1
For d = 1 To 11
strCSV = ""
For dd = 1 To 4
If dd = 1 Then
strCSV = Cells(d, dd).Value
Else
strCSV = strCSV & "," & Cells(d, dd).Value
End If
Next
Print #1, strCSV
Next
Close #1
End Sub
■解説付きコード
コメントで解説記述したコード内容です。
ちなみにイミディエイトウィンドウでテキストを1行ずつ書き出して確認しています。
不要ならDebug.Print~の行は削除してください。
'エクセルシートのデータをCSVまたはtxtに出力する
Public Sub CSVOutput001()
Dim d As Integer
Dim dd As Integer
Dim strCSV As String
'書込みをするファイルを開く※拡張子はcsvかtxtを選択
Open "C:\テキスト出力\test001.csv" For Output As #1
'行と列の数を指定して出力
For d = 1 To 11 '1行目~11行目を出力指定
strCSV = ""
For dd = 1 To 4 '1列目~4列目を出力指定
If dd = 1 Then
'1列目を変数に入れる
strCSV = Cells(d, dd).Value
Else
'2列目以降はカンマと値を変数に入れる
strCSV = strCSV & "," & Cells(d, dd).Value
End If
Next '次の列に移動してForに戻す
'1行ずつファイルに書き込む
Print #1, strCSV
'イミディエイトウィンドウ確認用
Debug.Print strCSV
Next '次の行に移動してForに戻す
'ファイルを閉じる
Close #1
End Sub
■ちなみにテキストファイルは自動作成されます
テキストファイルを作成する際(Open~行)、指定の場所にファイル名が存在しない場合、新規作成されて保存されます。
ただし、同ファイル名がすでに存在している場合、その内容は上書きされてしまうので、ご注意ください。
最後に
行列数を指定したざっくりとしたコードとなりますが、ここから内容を広げていってもらえればと思います。
データのテキスト化ひとつでも色々な方法がありますので、自分のやりやすい方法を探しながら進めてみてください。ではでは。