【現役SEが伝授】CSVを固定長TXTに変換!システム登録で失敗しないための桁合わせ術

【現役SEが伝授】CSVを固定長TXTに変換!システム登録で失敗しないための桁合わせ術

記事
IT・テクノロジー
ExcelやCSVで作ったデータを基幹システムに登録しようとして、「固定長テキスト(TXT)形式でアップロードしてください」と言われ、困ったことはありませんか?

・1項目ごとにスペースを入れて桁数を合わせるのが苦痛
・全角文字が入るとバイト数がズレてシステムエラーになる
・どこがズレているのか探すだけで日が暮れてしまう

実は、固定長データの作成は「文字数」ではなく「バイト数」で数えなければならないため、手作業では限界がある作業なのです。


■ なぜCSVから固定長への変換は難しいのか?

固定長データには「1項目めは20バイト、2項目めは10バイト」という厳密なルールがあります。

一番やっかいなのが「全角文字」の扱いです。
・半角文字(1文字 = 1バイト)
・全角文字(1文字 = 2バイト)

例えば、10バイトの枠に「山田商事」を入れる場合。
4文字ですが、全角なので8バイト。残りは6ではなく「2」です。
文字数で数えて6個スペースを足すと、4バイトはみ出し、後ろの項目がすべてズレてしまいます。

逆に、全角6文字の「アイワークス」は12バイト。10バイトの枠には、そもそも入りません。
見た目では「6文字だから大丈夫そう」に見えるのが、この作業の怖いところです。


■ 現場で起きやすいトラブル

特に次のようなシーンで、桁合わせのミスが発生しやすくなります。

・銀行振込用の全銀データ作成
・EDI(電子データ交換)での取引先へのデータ送信
・古いオフコン系システムへのデータ移行

「見た目では合っているはずなのに、なぜかエラーが出る」という現象の多くは、この1バイトのズレが原因です。


■ 対策方法

安全に固定長データを作るには、次の方法が一般的です。

① Excel関数(LENB関数など)を駆使してスペースを足す
② テキストエディタの矩形選択で強引に調整する
③ プログラムで自動的に埋める

ただ、関数の設定をミスしたり、コピペで1文字削ってしまったりするリスクは常に付いて回ります。

そのため私は、CSVファイルを、定義どおりの固定長TXTに書き出すExcelのツールを作って使っています。

・桁は「バイト」で数える(全角2・半角1を自動で判別)
・項目名と桁数は、表に並べるだけ
・文字は後ろを空白、数字は前を0で埋める
・枠からはみ出す値は、何行めのどの項目かを一覧で出す
・エラーが1件でもあれば、ファイルを作らない(足りないファイルを渡さないため)
・本番の前に、先頭100件を試しに変換して確認できる

この仕組みを使えば、プレッシャーのかかる桁合わせ作業から解放され、正確なデータをすぐに作れます。


■ 同じことで困っている方へ

このツールのVBAコード全文と、貼り付け手順・使い方を、ココナラで公開しています。
Excelにコードを貼るだけで使えます。

▽CSV → 固定長TXT(この記事のツール)


▽固定長TXT → CSV(逆向き)

※項目と桁数の表は、2つのツールで共通です。同じ表がそのまま使えます。

「うちのレイアウトに合わせて作ってほしい」「毎日の作業を自動にしたい」という場合は、専用版でお作りします。お気軽にご相談ください。

▽サービス(専用版)
「固定長TXTとCSVを、桁ズレなく相互に変換します」


現役のSEとして、専門用語はなるべく使わずにご説明します。
サービス数100万件のスキルマーケット、あなたにぴったりのサービスを探す