VBAでファイルを出力するケースもよくあります。
- CSVファイル出力
'変数定義
Dim fso As Object
Dim ts As Object
Dim csvData As String
Dim lineData As String
Dim row As Range
Dim cell As Range
Dim itemData As Variant
Dim regionSpan As Range
Dim fileName As String
'ファイルシステムオブジェクトをインスタンス化する。
Set fso = CreateObject("Scripting.FileSystemObject")
'ファイル名を指定する
fileName = "E:\test.csv"
'保存するCSVファイルを開く
'2:書き込みモード
'True:存在しない場合は新規ファイルを作成する
'0:文字コード(ASCII(Shift-JIS))
Set ts = fso.OpenTextFile(fileName, 2, True, 0)
'データ範囲を自動取得する
Set regionSpan = Range("A1").CurrentRegion
'CSVに出力するセルの行、列範囲をループする。
For Each row In regionSpan.Rows
lineData = ""
'対象項目(列)を編集する
For Each cell In row.Columns
'セルの値を取得
itemData = cell.Value
'カンマ区切りとする
If lineData = "" Then
lineData = itemData
Else
lineData = lineData & "," & itemData
End If
Next
'改行する。
If csvData = "" Then
csvData = lineData
Else
csvData = csvData & vbCrLf & lineData
End If
Next
'出力データを書き込む
ts.Write (csvData)
'ファイルを閉じる
ts.Close
Set ts = Nothing
Set fso = Nothing
出力対象のセルの範囲(行、列)は、今回は、CurrentRegionを使っています。これを使うと、自動的にEXCEL側でデータ枠の範囲を取得してくれますので、便利ですが、業務仕様で条件によるセルの範囲が必要な場合が多い為、あまり使用しません。Write #を使って、カンマ区切りの出力もできますが、実業務では、項目毎に編集仕様が入り、加工が必要なことが多い為、上記のように手動で編集した方が汎用性が高いです。