IT作業員Tipsシリーズ!
いつもお世話になっております。
RfromL.comです。
今回は他システムとのインターフェース(以下、IF)ファイルを確認する際に、良く使っているツールについてです。
固定長ファイル・可変長ファイルを項目ごとに区切って、1項目1セルに表示します。
恐らくみんな似たようなものを作っているのではないでしょうか。
番外として改行コード無しの固定長ファイルにサクラエディタで改行コードを付与する方法も紹介します。
CONTENTS
1.使用するソフト
- Microsoft Office Excel
- sakuraエディタ
- ※固定長ファイル(改行コードなし)でのみ使用
2.対象とするファイル形式の種類
- 固定長(改行コードあり)
- 可変長
- 固定長(改行コードなし)
3.IFファイル具体例
IF仕様書 例
連番 | 項目名 | 型 | 項目長 | 編集仕様 | 備考 |
1 | 商品コード | X | 4 | 商品TBLの商品コードをセット | |
2 | 商品名 | N | 20 | 商品TBLの商品名をセット | |
3 | 原価 | 9 | 11 | 商品TBLの原価をセット | |
4 | 売価 | 9 | 7 | 商品TBLの売価をセット |
固定長ファイル 例
IF仕様書を基に用意した固定長ファイル例
可変長ファイル 例
IF仕様書を基に用意した可変長ファイル例
固定長ファイル(改行コードなし) 例
IF仕様書を基に用意した固定長ファイル(改行コードなし)例
4.ツールのフォーマット作成
IF仕様書をもとに、ツールの基となるフォーマットを用意する。
5.固定長ファイル用のツール
ツールの作成
用意しておいたツールの基になるエクセルを開き、C8セルに数式「=MIDB($B8,C$5,C$4)」を入力する。
C8セルをコピーして、必要な場所を選択して貼り付ける。
使い方
確認したいファイルを開き、全選択(Ctrl + A)してコピーする。
用意したツールを開き、B列に先ほどコピーした内容を張付ける。
データの内容が、項目ごとに区切られ、対象のセルに表示される。
これで完成です。
6.可変長ファイル用のツール
ツールの作成
用意しておいたツールの基になるエクセルを開き、
「開発タブ > Visual Basic > 挿入 > 標準モジュール」
の順で操作して、標準モジュールを挿入して下記のコードを貼付けます。
Function u_split(str1 As String, str2 As String, str3 As Long)
Dim x
x = Split(str1, str2)
u_split = ""
If (str3 > 0) And (str3 <= UBound(x) + 1) Then
u_split = x(str3 - 1)
End If
End Function
C8セルに数式「=u_split($B8,”,”,C$1)」を入力します。
※Excelが2007形式(xlsx)の場合
「ファイル > 名前を付けて保存 > デスクトップ」の順で操作し、「ファイルの種類(T):」をExcel マクロ有効ブック(*.xlsm)で保存します。
保存の際に、以下の警告が出る場合がありますが「OK」で良いです。
使い方
確認したいファイルを開き、全選択(Ctrl + A)してコピーする。
用意したツールを開き、B列に先ほどコピーした内容を張付けます。
データの内容が、項目ごとに区切られ、対象のセルに表示されます。
これで完成です。
7.※番外 固定長ファイル(改行コードなし)の場合
ツール自体は固定長ファイルの改行コードありと同じものを使用するが、確認したいファイルを開くときに、sakuraエディタを使用する。
確認したいファイルをsakuraエディタで開く。
「設定(O) > 共通設定(C) > 編集タブ」を開き、折り返し行に改行を付けてコピー(C)をチェックする。
次に「設定(O) > タイプ別設定一覧(L)」を開き、一覧から開いているファイルに該当するファイルタイプを指定して、設定変更(S)を選択する。
※今回は、拡張子がtxtなので「テキスト ( txt,log,1st,err,ps )」を指定。
折り返し方法(<)に「指定桁で折り返す」、折り返し桁数(R)に「42」を指定する。
※折り返し桁数には、1レコードのMAXレングスを指定する。今回の場合は1レコード42バイトあるので、42を指定。
設定が完了すると、42桁で折り返し表示されるので、全選択(Ctrl + A)してコピー。
固定長ファイルを区切るExcelツールを開き、B列にコピーした内容を張付ける。
データの内容が、項目ごとに区切られ、対象のセルに表示される。(完成!)
以上です。
宜しくお願い致します。