Enterprise Blue Ocean ◮

神谷町RPAブログ

  • Blue Prism 初級者向け
    • Blue Prism を 無料で利用する 方法はこちら
    • Blue Prism の Blue Prism 事始め!オンボーディングの記事はこちら
    • Blue Prism で Excelを操作 する記事はこちら
  • Blue Prism、ちょっと進んだコンテンツ☆
    • Blue Prism の ベストプラクティス 記事はこちら
    • Blue Prism の 逆引きナレッジ wiki こちら
    • Blue Prism を リアルタイムで起動する 方法はこちら
  • RPA、そもそも論!
    • Youtube で、あらためて振り返る RPA とは?・・・はこちら☆

Blue Prism から Excel マクロをタイムアウト時間指定で実行する

お久しぶりです、「レッドブーツ88」です。

 

どうでも良い話ですが、一般的な音楽としてメロディーを作曲する際は、通常、ピアノの黒鍵と白鍵を組み合せることになり1オクターブに最大で12音しか存在しません。(ブルースのブルーノートやインド音楽ならその間の音とかも利用するので12音より多いとも言えそうですが)

 

大昔、たった12個しかない音を組み合わせてメロディーを作っても昔の人が作ったものにどうしても似てしまうよなーと考えたことがあったのですが、そんな話をよりスケールを大きく考えて全てのメロディーを用意してパブリックドメインにしてしまった方が居るようです。いやー凄い話です。 

www.gizmodo.jp


さて、今回は、Blue Prism から Excel VBO を用いてマクロを実行する際にタイムアウト時間を指定する手順を紹介いたします。

 

 

良く遭遇する課題

例えば、製品に付属する MS Excel VBO からマクロを実行する際に、以下のようにマクロ処理でダイアログが表示されてしまった場合は手動でダイアログを閉じないと Blue Prism 側へ応答が戻されず実行中のままとなり、利用者からは Blue Prism がハングしたように見えてしまう事象が発生してしまいます。


f:id:EnterpriseBlueOcean:20200402175023p:plain

f:id:EnterpriseBlueOcean:20200402175116p:plain

 

MS Excel VBO の Run Macro アクションの実装

標準の MS Excel VBO の Run Macro アクションを確認すると以下のようになっていることが分かります。

f:id:EnterpriseBlueOcean:20200402175201p:plain

GetInstance(Handle).Run(Macro_Name)

 

Run Macro アクションをタイムアウト可能なように改善

Run Macro アクションを複製し(ここでは Run Macro Timeout と言う名前で複製しています)、以下のようにパラメータでタイムアウト時間を指定できるように修正すると、指定した時間が経過すれば呼び出し元へエラーが戻されるようになります。

f:id:EnterpriseBlueOcean:20200402175333p:plain

f:id:EnterpriseBlueOcean:20200402175357p:plain

ExecWithTimeout(Timeout, "Run Macro",
Sub() GetInstance(Handle).Run(Macro_Name))

 

カスタム Excel VBO を用意するザックリな手順

ご利用中の Blue Prism に含まれる Excel VBO をコピーし(別名で保存が便利です)、コピーした VBO 上の Run Macro アクションから Run Macro Timeout などの名前で複製を行います。

f:id:EnterpriseBlueOcean:20200402175425p:plain

 

Run Macro Timeout アクションの開始ステージへ呼び出し元からタイムアウト時間を指定するためのパラメータを追加します。

f:id:EnterpriseBlueOcean:20200402175451p:plain

 

あとはコードステージの実装を上記のように ExecWithTimeout 関数を経由するように修正するだけです。

 

まとめ

  • Excel マクロを実行する際にタイムアウト時間を指定することが可能です
  • サンプル定義をユーザーコミュニティ上で共有しました (ログインが必要です)

 
あるお客様から昔は Excel VBO の中でタイムアウト時間が指定できなかったのに、いつの間にか指定できるようになったアクションが幾つかあると教えていただいたので、試しに Open Workbook アクションを見てみたら、クロージャ―みたいな実装でタイムアウトを実現していることに気づいて上記対応を思いつきました。このサンプルが何かしら参考になれば幸いです。