こんにちはサラリーマンブロガーのこーんです
仕事で使えるExcelシリーズになります。
今回はシートの内容をCSVに書き出す方法です。
CSV書き出しのソース
以下は注文データをCSVに吐き出すことを想定したものです。
Sub CSV出力() Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets(1) Dim csvFile As String csvFile = ActiveWorkbook.Path & "\注文.csv" Open csvFile For Output As #1 Dim i As Long, j As Long i = 2 '2行目から書き出す' Do While ws.Cells(i, 5).Value <> "" 'E 列が空白になるまで繰り返す j = 5 '書き出し範囲の先頭' Do Print #1, ws.Cells(i, j).Value & ","; j = j + 1 If j > 26 Then Exit Do '26列までを範囲とする' Loop Print #1, ws.Cells(i, j).Value & vbCr; i = i + 1 Loop Close #1 MsgBox "csvに書き出しました" End Sub
以下は解説と変更パラメータになります。
i = 2 '2行目から書き出す'
何行目から書き出すかの設定。この場合ヘッダーを除きたかったため2行目から書き出すことにしたもの。
Do While ws.Cells(i, 5).Value <> "" 'E 列が空白になるまで繰り返す
シートのデータを上から下まで順番に書き出します。書き出すデータが無くなると終了。
普通は1列目で良いですが関数などで埋めている場合は別な列を番号で指定してあげます。
j = 5 '書き出し範囲の先頭'
If j > 26 Then Exit Do '26列までを範囲とする'
CSVに書き出す範囲を列で指定します。この場合は5列目から26列目まで。
いつもの流し込み用のデータ作成などルーチンワーク的な仕事を自動化するのに役立ちます。
〈関連記事〉
www.tokidokioton.com