トップページ

#18_6 文字形式ファイルの書き込み


シートの内容を文書形式で保存

CSVではなく、区切りのない連続した文書形式でテキストファイルに出力する時には、Print #ステートメンントを使います。

例えば、次のようなマクロがあります。

これを実行すると、以下のようになります。

Print #ステートメントは、内容をダブルクォーテーションで囲んだり、区切り文字を挿入したりしません。さらに、データ項目間のスペース間のスペースもファイルに出力されるため、文書形式のデータを出力するのに最適です。

Line Input #ステートメントの遂になるステートメントだと覚えていけばOKです。

(応用)固定長フィールド形式の保存方法

それでは応用編として、シートのデータを固定長フィールド形式で出力するマクロを紹介します。

その前に、このマクロを実現するための必須事項を紹介します。まずEXCEL VBAに置いて、文字列はUnicodeで処理されるため、半角も全角文字も、1文字は2バイトとして処理されますが、ワークシートのデータを固定長フィールド形式で出力するためには、半角1文字は1倍と、全角1文字は2バイトに換算する必要があります。早い話が、StrConv関数で、UnicodeからANSI文字列に変換処理する必要があるということです。

さらにもう一点、セルのデータのバイト数が指定したバイト数に満たない場合には、スペースを出力して各フィールドの長さを揃える必要がある点です。これは、LenB関数でデータのバイト数を算出し、Space関数で不s区しているバイト数分のスペースを出力するという2段階の処理で実現できます。

以上の点に注意して、以下のマクロを参照してください。

その実行結果は以下のようになります。