前回に引き続きマクロの応用編を行っていきたいと思います
目的
前回、フォーミュラで生XMLを更新を用いて四則演算を設定ファイルに沿って行うマクロをご紹介いたしましたが、今回はもう一段階応用して、設定ファイルに従い条件に該当したレコードのみをフォーミュラツールで加工を行うマクロを作ってみようと思います。
このマクロは設定を外部ファイルに依存する事でワークフローを修正することなく、処理内容を変更する事が出来るマクロとなります。一度作りこめば応用範囲も大きく便利なマクロになります。
必要な設定を考える
まず、マクロを作成する上でどの様な機能を満たせばよいかを考えます。今回は条件抽出を考えましょう。
抽出条件
抽出条件ですが、まずフィルタリングツールの設定で必要な条件を考えてみます。
①対象カラム
②データ型式
③フィルター条件(<> = null 含む など)
④フィルター条件の値
フィルタリングツールを使う上で主な条件項目は大体この4つになると思います。②のデータ型式のみ、マクロ処理前にデータ型を修正する場合には不要になるかもしれませんが、今回は条件に入れておきます。
また、nullの判定ですがEmptyの判定と明確に分けたい場合を除き、一つにした方が良いかと考察します。ですのでNull判定を行う場合は、Null or Empty判定を行うようにします。
設定ファイルを作成する
前項までの事を踏まえて設定ファイルをどの様に記載する事で実現でき、分かりやすい書き方を考えます。
今回抽出条件は以下のような設定ファイルにしてみました。
データ型式、等符号はドロップリストによる選択、IDはフォーミュラ設定と連携できるようにフィルタリングされたレコードが同じIDの記載があるフォーミュラの設定ファイル記載内容を行う事を想定します。なお、等符号で-を選択した場合、そのカラムは確認なしとなるようにします。設定は煩雑になりますがこうする事でレコードごとに、確認するカラムを選択できるようにします。
上記の場合ID1だとカラムAが5で、カラムBが4以上で、カラムCにKCMEが含まれ、カラムDが1のレコードが選択対象になります。
ID2だとカラムAが3、カラムBが4以下で、カラムCにKCMEが含まれないレコードが選択対象になります。
設定ファイルからマクロ更新出来る形式に加工する
次にこの設定ファイルを読み込み、フィルタリングツールを更新するマクロに適した形式に加工します。
今回のフィルタリングマクロは「フォーミュラで値を更新」を用います。カスタムフィルターの場合、フィルター設定を連続して記載すれば動くため更新する値はExpressionのみになるからです。
以上を踏まえて設定ファイルからマクロを更新する為のデータを作成するワークフローを組みます。
今回はこのようにワークフローを構成しました。
実行すると設定ファイルが次の様になります。
レコード毎にフィルタ設定が纏まります。もし、andではなくor条件を行いたい場合は、設定ファイルを変更します。
OR設定を作りたいレコードをコピーして設定内容を変更します。この時同一IDにする事で、どちらの条件でフィルタされたデータでもID1の処理を行う事ができ、OR条件によるフィルタリングを実行できます。
実行結果
マクロを接続し、フィルタリングまでを実行すると以下のような結果が得られます。
設定ファイルの条件に一致したレコードにIDを紐づけされ出力されていることが分かります。
後半では紐づいたIDを元にフォーミュラの処理を行います。