既存のExcelフォーマットへKapowからデータを書き込もうとするとエラーが発生する。

フォローする

attention_archive.png

既に長年業務で使用しているExcelファイルに対してBizRobo!からデータを書き込もう(Set Content of Cell / Set Value of Cell (セルのコンテンツ設定/セルの値設定)アクションによる)とした場合、意図せず下記のようなエラーがDesign Studio内で表示されることがあります。

org.apache.poi_.ss_.formula.eval_.NumberEval.err_.png

原因としては、BizRobo! はApache POI を使用してExcelへの読み書きを実施していますが、Excelにおける一部の古い関数やアドインに紐付けられた関数はApache POIの仕様に対応していないものがあります。BizRobo!においても同様にApache POIで対応していない機能については取り扱うことができないため、エラーとして認識されてしまいます。

<対応方法>

地道な作業になりますが、エラーを発しているExcelファイルに対し、何がエラーの原因になっているかを1つずつ探っていく必要があります。以下の作業を繰り返し、エラーが出る場合と出ない場合の境界線を探り、原因となる要素を絞り込んでいきます。

  1. 複数のシートで構成されているブックの内、1つ1つのシートを切り出してどのシートでエラーが発生するかを探る。
  2. f 特定シート内に含まれる関数や書式を1つずつ消しながらロボットでの操作を行い、どの条件を削除した時にエラーが発生しなくなったかを特定する。
  3. 特定した条件のみを当初のブックから除外し、ロボットがエラーを発生させなくなることを確認。
  4. 上記1~3を繰り返す。

ちなみに本インシデントについては、セルL12 が =EDATE($I$12;3) として L12 を参照する形となっているものの、このL12 の値が空白であるため、数値変換できずにエラーとなっていることが直接の原因となっておりました。
v9.6以降の POI Library ではこの値を 0 に設定することにより回避を行っております。
従いまして、v9.4, v9.5 においても、既存のシート内で空白ではなく、何らかの数値を返すように変更いただきますと、回避可能かと存じます。(EDATE関数はサポート対象関数です)
具体的なサポート対象・非対象関数については実行可能・不可能なExcel関数の一覧をご覧下さい。