OR
誰でも自由に記事を投稿・編集できるオープンリファレンス
記事ID:649
区分:プログラム  |  分類:VB  |  最終更新日:2014/12/16
クリエイティブ・コモンズ 表示-継承ライセンス 2.1
【VB6/VBA】csvファイルを出力する
関連タグ:vb6, vba, ファイル入出力
このエントリーをはてなブックマークに追加      
本文
履歴
編集
閲覧数: 45,292
VB6関連技術まとめ > 【VB6/VBA】csvファイルを出力する

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 を指定します。

関連記事
外部リンク
外部リンクはありません。
- 記事検索 -