【VBA入門】CSVファイルをテキスト形式で書き出す方法

VBAファイル書き出し
  • URLをコピーしました!
※当ブログではアフィリエイト広告を表示しています

今回はVBAでCSVファイルをテキスト形式で書き出す方法を紹介します。

この方法を知っていれば、CSV以外でも「.txt」形式のファイルも書き出せます。

案外、簡単にファイルに書き出せますよ。

目次

テキストファイルに書き出すソースコード

csvファイルを出力する方法は2つあります。

1:テキスト形式で書き出す方法
2:Excelシートに書き出し、フォーマットをCSVに指定して保存する方法

しかし、2の方法はフォーマット変換が上手くいかなくて警告がでたりする場合もあって、私は好んでいません。

1のテキスト形式で書き出した方が確実なので、いつも1の方法でやっています。

今回紹介するのも、1のテキスト形式で書き出す方法です。


今回は、ボールの軌道を計算して、csvファイルに書き出す関数を作ってみました。
(ボールの軌道計算部分は省略しています。)

Option Explicit

Sub Main()
    Dim speed As Double
    Dim angle As Double
    Dim dt As Double
    Dim time As Double
    Dim posvel() As Double
    Dim tmp As String
    
    'input
    speed = Cells(2, 2).Value
    angle = Cells(3, 2).Value
    dt = Cells(4, 2).Value
    
    time = 0
    
    '出力ファイル
    Open "Output.csv" For Output As #1
    
    Do
        posvel() = calcBallOrbit(speed, angle, time)
        tmp = CStr(time) + "," + CStr(posvel(0)) + "," + CStr(posvel(1)) _
            + "," + CStr(posvel(2)) + "," + CStr(posvel(3))
        
        Print #1, tmp
        
        time = time + dt
    Loop While posvel(1) >= 0
    
    Close #1
    
End Sub

Function calcBallOrbit(ByVal speed As Double, ByVal angle As Double, _
                        ByVal tm As Double) As Double()
 ~ボールの軌道を計算する関数 中身は略~
End Function

ソースコードの説明

ソースが長くなりましたが、今回のキモは

    '出力ファイル
    Open "Output.csv" For Output As #1
        Print #1, 文字列
    Close #1

です。これだけ。

ファイルのオープン

Open “ファイル名” For Output As #No

で出力するファイルを開きます。

ファイル読み込みの時は「For Input」でしたが、出力では「For Output」になります。
なお、ファイルが既にある場合は、新しく上書きされます。

もし既存のファイルのデータに追記する場合は、「For Append」で追記になります。

「No」にはファイル番号を指定します。
今回はファイルが1つだけなので「#1」と指定しています。

ファイルのクローズ

ファイルのクローズは、ファイル読み込みの場合と同じです。

Close #No

この一文でOK。

「No」にはファイルオープンの際に指定した番号を入れます。

ファイルに書き出す部分

ファイルに書き出す部分は

Print #No, 文字列

です。

こちらも同様に「No」にはファイルオープンで指定した番号をいれます。

なお、CSV形式にしたいので、文字列にはデータとデータの間にカンマ「,」を入れる必要があります。

        tmp = CStr(time) + "," + CStr(posvel(0)) + "," + CStr(posvel(1)) _
            + "," + CStr(posvel(2)) + "," + CStr(posvel(3))

上記のようにカンマをデータ間に挿入しておきましょう。

なお、書き出し部分の「Print #1, 文字列」の部分を

Write #1, 文字列

とした場合、文字列の出力に「””」が付きます。

「Write」で出力した場合と「Print」で出力した場合のファイルは以下です。

「Write」で出力した場合
「Write」で出力した場合
「Print」で出力した場合
「Print」で出力した場合

メモ帳(テキストエディタ)で開くと文字列の前後に「””」が付くだけの違いですが、Excelで開いてみると違いが顕著です。

「Write」で出力したファイルをExcelで開いた場合
「Write」で出力したファイルをExcelで開いた場合

Writeで出力したファイルをExcelで開くと、1つの文字列として認識されてデータがセルに分かれていません。
カンマ区切りが意味をなしていないのです。

なので、csvファイルを出力したいなら、「Write」ではなく「Print」で出力するべきです。


今回はCSVファイル書き出しの方法の紹介でした。

んじゃ、また~

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

関連記事

応援よろしくお願いします☆

この記事を書いた人

理系夫婦の妻のほうです。
大学、大学院(修士)で物理を専攻。
2016年に長女を出産、2021年に長男を出産。
フルタイム勤務ワーママ→休職→専業主婦。

コメント

コメントする

目次