VB6/VBA で csv ファイルを出力する方法はいくつかあります。
Openステートメントでファイルを開いて出力する
Open ステートメントでファイルを開いて出力する場合は、まず Open ステートメントでテキストファイルを開き、Write # ステートメントで csv データを一項目ずつ出力し、最後に Close ステートメントでファイルを閉じるといった処理を行います。
【サンプルコード1】
Public Sub sample1()
Dim intNo As Integer
Dim strArray() As Variant
'出力するデータを設定
strArray = Array(Array("名前", "住所", "電話番号"), _
Array("てすと太郎", "東京都港区XX-XX-XX", "111-1111-1111"), _
Array("てすと次郎", "埼玉県さいたま市XX-XX-XX", "222-2222-2222"), _
Array("てすと三郎", "神奈川県横浜市XX-XX-XX", "333-3333-3333"))
'ファイルオープン
intNo = FileSystem.FreeFile()
Open "C:\tmp\sample1.csv" For Output As #intNo
'ファイル出力
Dim i As Integer
For i = 0 To UBound(strArray)
Write #intNo, strArray(i)(0), strArray(i)(1), strArray(i)(2)
Next i
'ファイルクローズ
Close #intNo
End Sub
【出力結果csv1】
"名前","住所","電話番号"
"てすと太郎","東京都港区XX-XX-XX","111-1111-1111"
"てすと次郎","埼玉県さいたま市XX-XX-XX","222-2222-2222"
"てすと三郎","神奈川県横浜市XX-XX-XX","333-3333-3333"
上記サンプルは「C:\tmp\sample1.csv」に、プログラム内で設定した csv データを出力しています。上記例は Output モードでファイルをオープンしているため、出力際に指定のファイルが存在しない場合は新規作成されます。ファイルが既に存在している場合は、上書き保存しますが、追記したい場合は Append モードでオープンします。Open ステートメントの使用方法はこちらを参照ください。
なお、Write # ステートメントで文字列を出力すると、各データ文字列はダブルクォーテーションで囲われ、項目間にはカンマが自動で挿入されます。
FileSystemObjectで出力する
FileSystemObject を使って出力する場合は、まず FileSystemObject のインスタンスを生成し、その OpenTextFile メソッドを使ってファイルをオープン(TextStream オブジェクトを生成)します。オープンしたファイルに対する書き込みは、生成したTextStream オブジェクトの WriteLine メソッドで行います。
【条件】
- 「Microsoft Scripting Runtime」を参照設定する必要がある。(scrrun.dllが必要)
【サンプルコード2】
Public Sub sample2()
Dim Fso As New FileSystemObject
Dim Ts As TextStream
Dim strArray() As Variant
'出力するデータを設定
strArray = Array(Array("名前", "住所", "電話番号"), _
Array("てすと太郎", "東京都港区XX-XX-XX", "111-1111-1111"), _
Array("てすと次郎", "埼玉県さいたま市XX-XX-XX", "222-2222-2222"), _
Array("てすと三郎", "神奈川県横浜市XX-XX-XX", "333-3333-3333"))
'ファイルオープン
Set Ts = Fso.OpenTextFile("C:\tmp\sample2.csv", ForWriting, True)
'ファイル出力
Dim i As Integer
For i = 0 To UBound(strArray)
Ts.WriteLine """" & strArray(i)(0) & """,""" & strArray(i)(1) & """,""" & strArray(i)(2) & """"
Next i
'ファイルクローズ
Ts.Close
Set Ts = Nothing
End Sub
【出力結果csv2】
出力結果は上記 sample1 と同じになります。
上記サンプルは「C:\tmp\sample2.csv」に、プログラム内で設定したcsvデータを出力しています。上記例は ForWriting モードでファイルをオープンしているため、ファイルが既に存在している場合は上書き保存しますが、追記したい場合は ForAppending モードでオープンします。また、出力の際に指定のファイルが存在しない場合、新規にファイルを作成する場合は、OpenTextFile メソッドの第三引数に True を指定します。