2017年7月31日月曜日

力技_02:FileMakerからExcelワークブックをつくる(その4)

FileMakerからスクリプトを出力する


 Excelの方でスクリプトからワークシートを生成できるようになったので、今度はFileMakerからのスクリプト出力を作っていきます。

カスタム関数を定義する


 力技EMLではひとつのコマンドと複数のパラメータでひとつの命令セットとなります。FileMakerでは複数の値のまとまりはList(値一覧)=改行区切りテキストで扱うようになっていて※1、そのためのList関数も用意されているのでこれを使わない手はありません。
 ただ、これをExcelに持って行くときにはListをscriptワークシート上の1行に水平方向に並べていく必要があるため、改行区切りではなくタブ区切りの方が扱いやすくなります。
 この改行区切り→タブ区切りの変換を行う手順が度々でてくるので、カスタム関数を作ってスッキリさせましょう。

※1 少なくともバージョン15までは。バージョン16からJSONがサポートされたので、今後はこちらが使われてくると思われる。…というか個人的には使っていきたい。

 listToTABという名前でこのような関数を作りました。改行コードをタブに置き換えるためにSubstitute関数の置換条件指定を省略できるようにしただけの単純なものです。
 FileMaker Pro Advancedをお持ちでない方は、カスタム関数の定義ができないので、以下の説明を見て自作されるときはSubstituteを使うか、ダウンロードしたサンプルファイルをベースに作ってみてください。(定義済みのカスタム関数はAdvancedでなくても利用可能です)

 これを使って早速EML作成。一つの計算式でドドっと記述してしまうとこんな感じ。

 基本的には
  listToTAB ( List ( コマンド ; パラメータ1 [ ; パラメータ2 ; … ] ) )
で1命令を構成し、複数の命令はList ()で囲います。
 出来上がった文字列はタブ区切りテキストの形式になります。

 このテキストフィールドをコピーして、前回作成したExcelマクロを組み込んだファイルの「script」ワークシートのA1セルを始点にペーストします。Mac版Excelの場合は「形式を選択してペースト」しないとタブが無視されてしまうようです。
FileMakerで作成したEMLスクリプトをExcelにはり込む。
手順例:消去ボタン→A1セルを右クリックし「形式を選択してペースト」







 実行してみると新規エクセルファイルが作られます。
 セル結合や書式設定がされた表ができています。

 この力技もいよいよ佳境に。次回はFileMakerでデータ処理してExcel出力です。

0 件のコメント:

コメントを投稿