固定長ファイル・可変長ファイルを区切るExcelツール

IT作業員Tipsシリーズ!

いつもお世話になっております。
RfromL.comです。

今回は他システムとのインターフェース(以下、IF)ファイルを確認する際に、良く使っているツールについてです。

固定長ファイル・可変長ファイルを項目ごとに区切って、1項目1セルに表示します。
恐らくみんな似たようなものを作っているのではないでしょうか。

番外として改行コード無しの固定長ファイルにサクラエディタで改行コードを付与する方法も紹介します。

CONTENTS

  1. 使用するソフト
  2. 対象とするファイル形式の種類
  3. IFファイル具体例
  4. ツールのフォーマット作成
  5. 固定長ファイル用のツール
  6. 可変長ファイル用のツール
  7. ※番外 固定長ファイル(改行コードなし)の場合

1.使用するソフト

  • Microsoft Office Excel
  • sakuraエディタ
  • ※固定長ファイル(改行コードなし)でのみ使用

2.対象とするファイル形式の種類

  • 固定長(改行コードあり)
  • 可変長
  • 固定長(改行コードなし)

3.IFファイル具体例

IF仕様書 例

連番項目名項目長編集仕様備考
1商品コードX4商品TBLの商品コードをセット
2商品名N20商品TBLの商品名をセット
3原価911商品TBLの原価をセット
4売価97商品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列にコピーした内容を張付ける。

データの内容が、項目ごとに区切られ、対象のセルに表示される。(完成!)


以上です。
宜しくお願い致します。