区分定義書の変更時、定数や列挙体、マスタの一部を手動で修正するような運用だと、抜け漏れや間違いが発生する場合があります。この辺の手間や間違いを低減するために、区分定義書から自動的に成果物を作成するExcelマクロを度々作る機会があるので、作成してみました。
説明
区分一覧に基づいて、列挙体クラスファイル、INSERTファイルを作成します。
列挙体クラスファイルとして、単一クラスファイル内に全ての区分列挙体を定義する集約クラス、区分列挙体毎にクラスファイルを作成する個別クラス形式のファイルを出力できます。
入力ファイル仕様(区分一覧)
区分一覧シートに各区分を定義することを想定しています。
グループ・グループ名は毎行に記載しても、1グループで1つのみの記載でも問題ありません。
列挙体クラスの生成仕様(集約クラス)
次のように全ての区分(列挙体)を含む単一のクラスファイルを作成します。
出力の内容は、テンプレートシートにある内容を修正することで変更できます。
区分一覧に例として記載されているユーザ種別、削除フラグの区分(列挙体)は、次のように単一ファイルに出力されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | package example.web.constants; ... public class KbnEnums { public enum UserType implements KbnEnumBase { Admin("管理者",null,"10"), Normal("一般",null,"01"), Agent("一般代理",null,"09"); ... } public enum DeleteFlag implements KbnEnumBase { Invalid("無効",null,"0"), Valid("有効",null,"1"); ... |
列挙体クラスの生成仕様(個別クラス)
次のように列挙体単位でファイルを作成します。
出力の内容は、テンプレートシートにある内容を修正することで変更できます。
区分一覧に例として記載されているユーザ種別、削除フラグの区分(列挙体)は、次のように個別のファイルに出力されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | package example.web.constants.enums; ... public enum UserType implements KbnEnumBase { Admin("管理者",null,"10"), Normal("一般",null,"01"), Agent("一般代理",null,"09"); ... } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | package example.web.constants.enums; ... public enum DeleteFlag implements KbnEnumBase { Invalid("無効",null,"0"), Valid("有効",null,"1"); ... } |
INSERT文の生成仕様
区分マスタとして次のテーブルを想定しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | -- drop table MST_KBN; create table MST_KBN ( "GROUP" character varying(256) not null , "KBN" character varying(256) not null , "NAME" character varying(256) not null , "SHORT_NAME" character varying(16) , "VALUE" character varying(256) not null , "DISP_ORDER" integer , "DELETE_FLAG" character(1) default '0' , "CREATE_USER" character(16) , "CREATE_TIMESTAMP" timestamp , "UPDATE_USER" character(16) , "UPDATE_TIMESTAMP" timestamp , primary key ("GROUP", "KBN") ); |
区分一覧に例として記載されているユーザ種別、削除フラグの区分は、次のように出力されます。
出力先フォルダやファイル名、テーブル名を指定可能です。カラム名を変更する場合はVBAを修正してください。
エンコーディングはUTF-8です。
1 2 3 4 5 6 7 | -- truncate table MST_KBN; insert into MST_KBN("GROUP","KBN","NAME","SHORT_NAME","VALUE","DISP_ORDER","DELETE_FLAG","CREATE_USER","CREATE_TIMESTAMP","UPDATE_USER","UPDATE_TIMESTAMP") values('UserType','Admin','管理者',null,'10',1,'0','system',now(),'system',now()); insert into MST_KBN("GROUP","KBN","NAME","SHORT_NAME","VALUE","DISP_ORDER","DELETE_FLAG","CREATE_USER","CREATE_TIMESTAMP","UPDATE_USER","UPDATE_TIMESTAMP") values('UserType','Normal','一般',null,'01',2,'0','system',now(),'system',now()); insert into MST_KBN("GROUP","KBN","NAME","SHORT_NAME","VALUE","DISP_ORDER","DELETE_FLAG","CREATE_USER","CREATE_TIMESTAMP","UPDATE_USER","UPDATE_TIMESTAMP") values('UserType','Agent','一般代理',null,'09',3,'0','system',now(),'system',now()); insert into MST_KBN("GROUP","KBN","NAME","SHORT_NAME","VALUE","DISP_ORDER","DELETE_FLAG","CREATE_USER","CREATE_TIMESTAMP","UPDATE_USER","UPDATE_TIMESTAMP") values('DeleteFlag','Invalid','無効',null,'0',1,'0','system',now(),'system',now()); insert into MST_KBN("GROUP","KBN","NAME","SHORT_NAME","VALUE","DISP_ORDER","DELETE_FLAG","CREATE_USER","CREATE_TIMESTAMP","UPDATE_USER","UPDATE_TIMESTAMP") values('DeleteFlag','Valid','有効',null,'1',2,'0','system',now(),'system',now()); ... |
使い方
ダウンロード
次の場所から「区分データ生成.xlsm」をダウンロードします。
tools. Contribute to nextdoorwith/tools development by creat…
区分一覧の準備
区分一覧シートに区分値を定義します。
条件を指定して実行
「区分データ生成.xlsm」を開き、データ作成シートにて各種の条件を指定し「区分データ生成」をクリックします。
カスタマイズ方法
列挙体ファイル
テンプレートシートにある集約クラス、個別クラスのテンプレートを修正してください。
次のプレースホルダを使用できます。
プレースホルダ | 説明 | 展開例 |
---|---|---|
$package$ | データ作成シートで指定したパッケージ名に展開されます。 | example.web.constants |
$group_name$ | グループ名に展開されます。 | ユーザ種別 |
$group | グループに展開されます。 | UserType |
$enums$ | 列挙体の定義値に展開されます。 | Admin(“管理者”,null,”10″), … |
INSERTファイル
INSERT文をカスタマイズする場合は、ModKbnCreateモジュールのCreateInsertFileプロシージャを修正してください。