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

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

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

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

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

あわせて読みたい
【VBA入門】ファイル読み込み方法はこの2つを知っていれば十分
【VBA入門】ファイル読み込み方法はこの2つを知っていれば十分VBAでファイルを読み込む方法を2種類紹介します。1つはExcelブックとして読み込む方法、2つ目はテキストファイルとして1行ずつ読み込む方法です。この2つの方法を知っていれば大抵のツール作成は大丈夫です。
目次

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

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

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

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

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

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


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

ソースコードの説明

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

です。これだけ。

ファイルのオープン

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

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

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

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

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

ファイルのクローズ

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

Close #No

この一文でOK。

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

ファイルに書き出す部分

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

Print #No, 文字列

です。

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

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

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

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

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

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

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

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

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

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

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


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

んじゃ、また~

関連記事

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

コメント

コメントする

目次