ライブラリ「Excel操作(行の読み取り)」の注意点
みなさん、こんにちは。Kotaです。
日々大量のExcelデータを利用する筆者に取っては大変お世話になっている
ライブラリ「Excel操作(行の読み取り)」ですが、
このライブラリを使用する際のちょっとした(?)注意点と対処方法について
今回は書いてみたいと思います。
注)WinActor v630 / Excel2016 で確認した内容です。
環境によって結果が異なるかもしれませんので予めご了承ください。
(1)はじめに ~ Excelとシナリオ内容
ライブラリ「Excel操作(行の読み取り)」を使用して、
対象Excelから1行ずつ 複数列の値を取得し、
その取得した値(変数値)をノード「待機ボックス」で表示します。
(2)事象
シナリオを実行した結果(「待機ボックス」の表示内容)が以下です。
値を取得する対象行にExcel関数でエラーになっているセルがあった場合、
そのエラーセル以降の列の値を(エラーになっていなくても)取得できていないようでした。
これってどういうことなんでしょうかね、、? (筆者はスクリプトに疎いのです。。)
ちょっとこれは強引かもしれませんが、
『Excel関数の箇所でエラーになっている状態』を
『Excelが正しくない(破損しているような)状態』と捉えれば、
これは "元データ(Excel)側の問題でしょ" と言えるのかもしれませんが。。。
(3)対処方法
可能な限りエラーにならないよう対象Excelを管理していくのが大前提とは思いますが、
何らかの都合で止むを得ない場合の対処方法としては以下が考えられます。
【対処方法①】
ライブラリ「Excel操作(行の読み取り)」をそもそも使用せず、
ライブラリ「Excel操作(値の取得2)」を複数使用する。
⇒取得したい項目数が多いと、ライブラリの設置やプロパティの確認が大変かもしれません。
【対処方法②】
事前にExcelシート内の「#N/A」などを削除する。(手作業で修正)
⇒手作業としてやる以上、やはり手間がかかってしまいます。
【対処方法③】
シナリオ上の処理で、Excelシート内の全データをコピー、
いずれかのExcelシートに値貼り付けしたあとに
「検索と置換(Ctrl+F)」から「#N/A」などを削除(空に置換する)などをする。
⇒自動化できますが、このシナリオ作成の手間や、
エミュレーションで操作するため、動作の安定性が少しだけ心配です。
【対処方法④】
表示文字列として値を取得するよう、
スクリプトを「cell.value」→「cell.text」に変更する。
⇒この場合、「#N/A」という"文字列" を変数値として取得します。
そのため、その後の処理内容によっては「#N/A」の場合の
分岐処理を入れる等、もうひと手間 考える必要がありそうですね。
何かと重宝しているライブラリ「Excel操作(行の読み取り)」ですが、
どうやら使用する場合は対象Excelの状態を充分確認してから
シナリオに取り入れる必要がありそうです。
上記以外の対処方法などをご存じの方がいらっしゃいましたら、
お気軽にコメントいただけますと幸いです。
今回はこの辺で。