【サークル:踊ってみた同好会(仮)】Excel操作ノードで、Excelを非表示にして、高速化してみた!
(Excel操作ノードは、ライブラリのほうです。)
WinActorの実行端末について でも回答したのですが、Excel操作ノードで、Excel自体を非表示にすると、表示させている場合とどのくらい差が出るのか、検証してみます。
で使用しているデータ
データファイル.xlsx(上記サンプルシナリオで使用している「辞書作成用データファイル.CSV」に項目を1行追加したもの)から
セルの値を3つ取得し、文字連結して、結果.xlsx に書き出すシナリオです。
データファイルは30件のデータがあります。
【スクリプト変更箇所】
xlsApp.Visible = True
の部分を
xlsApp.Visible = False
と変更します。
「上書き保存」や「保存せず閉じる」は1か所、
それ以外のノードは3か所ずつあります。
【実験:その1】
データファイル.xslxを開いて全面化、最終行を取得。
繰り返しの中でG~I列の値を値1~値3の変数に格納し、文字列連結
(値3が特定の文字の時だけ値1と値2だけ連結)
結果.xlsxに連結結果を値設定していきます。
図のようなフローとなります。
このシナリオをそのまま実行…(1)
図の赤枠のノードをExcelを表示させないようにスクリプト変更して実行…(2)
それぞれ、3回ずつ実行させた中での最短時間は次のようになりました。
(1)39.868秒
(2)29.477秒
【実験:その2】
繰り返しの設定を「データ数、データファイル「値⇒データファイル.xlsx」として
図のようなフローになります。(値の取得が必要ないのですっきりします。)
このシナリオをそのまま実行…(3)
図の赤枠のノードをExcelを表示させないようにスクリプト変更して実行…(4)
それぞれ、3回ずつ実行させた中での最短時間は次のようになりました。
(3)14.310秒
(4)12.746秒
たかが30件の単純なデータ処理で、これだけ差が開くとなると、件数が増えると、恐ろしいことになります。
Excel操作のノードが、もっさり動く印象ですが、工夫次第でさくさく動くようになります!
------
個人的に、繰り返しノードの「データ数」で、データファイルを設定する方法を好んで使用しているのでが、
ファイルの途中から作業させることができないのが使いずらい部分で、そうなると【その1】のようにするしかありません。
あるシナリオを作成していて、仕方なく変更して実行させたら、1件にかかる時間が増えてしまって、考え付いたのがこの方法でした。
(ちなみに、3つある値の取得を1つのノードにしてしまうときっと(2)も、もっと早くできると思います。)
スクリプトを変更して、Excelを非表示のまま動かす場合、
最後の上書き保存や、保存せず閉じるのノードで、Excelを終了させているので、大丈夫ですが、
値の設定などのノードの実行したまま終了すると、表示されていないExcelが開きっぱなしになりますので、ご注意ください。
(なおスクリプトを編集した場合、公式のサポート対象外となる場合がありますので、スクリプト編集は自己責任でお願いします。)