cancel
Showing results for 
Search instead for 
Did you mean: 

Excel側のダイアログが想定通り動作されず、処理停滞で状態が警告になる件

MikiKanda
Level 3
お世話になっております。

今テストしているロボットで、
Excelの処理で止まって進めなくなり、
コントロールルーム上の状態が「警告」になってしまう事象が起きています。

主な処理順は下記通りとなります。
① Excelを開く
② マクロを実行する。マクロ実行完了後、Excel側にダイアログが表示される
③ Excel側のダイアログに対し、OKボタンを押す
 (OKボタン押下後にダイアログが消え、Excel上の内容が再表示される)
④ Excel VBOの「Get Worksheet as Collection Offset」を実行

警告が発生する箇所は、上記④のタイミングとなります。
画面上で確認したところ、③ の処理が上手く行ってない模様で、
ダイアログが表示されたまま&Excelも再表示されていない(=真っ白)の状態で、④ の処理に入ります。
それにより、④が予定通りの処理ができず、状態が警告になった。(と思われる)

念のため、③のダイアログが「本当にもう表示されていないよね!?」と確認するよう、
画面待機確認は二回入れていますが、それでも回避することができず...
また、④の処理にタイムアウトを入れられないかも試してみましたが、
私の知識が浅いのと、やり方が良くなかったかで、上手く実装できませんでした。
※Excel上でダイアログを表示させないのが一番とは重々存じておりますが、
 都合上、Excelを修正することは不可能となっておりまして...

ここで、もし解決や回避の仕方をご存じの方がいらっしゃいましたら、
その方法をご教示いただきたいです。
例えば、Excel側のダイアログがちゃんとOKボタンが押された確認方法とか、
VBO等にタイムアウトを実装する方法とか、
警告時の退避方法とか...

長々となりましたが、何とぞよろしくお願いいたします。

7 REPLIES 7

こんにちはミキ・サアン, マクロが実行された後に取得しているポップは何ですか?理想的には、ポップアップを取得しないでください。ポップアップが表示される唯一の理由は、リンクが不足しているか、データが Excel ファイルで上書きされている場合です。私の意見では、マクロを実行した後、そのポップアップを排除しようとする必要があります。そのポップアップが重要でない場合は、このように考えてみましょう

あなたの考えを私に知らせてください。

MikiKanda
Level 3
Hello, Mr.MuraliKrishna Kodi

マクロ実行後に表示されるダイアログは以下画像のようなものです。
36232.png
ダイアログはExcel マクロ側の処理で、自動的に表示されるように設定されています。
私のほうで、ダイアログを表示されないようにするのは、
EXCELの使用者や作成者側にNGとされていますので、ダイアログの排除はできません。

sumire
Level 9

こんにちは。

ダイアログが出ない(マクロ実行完了までいかない)ときにダメってことですよね。

警告は、ステージの「Warning threshold」とその右の「Number of minutes」で定義された時間のぶん操作が無いと出るステータスです。

https://qiita.com/Sumire_Neko/items/aace99eeab8cb5269224

なので、ダイアログが出ていない=マクロの実行が完了したという報告がBlue Prism側に戻ってきていないからずっとExcel側がコントロールを持ちっぱなしになっている、ということだと思います。
VBAを書いたことのあるかたはご経験がおありだと思いますが、②のところでマクロをタイムアウト実行して、完了しなくても(この場合はダイアログが出なくても)時間が経ったらコントロールをBlue Prism側に戻してくれるようにしたらいいのではないでしょうか。

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

上の記事は古いので(1年半とか前)自作する方向で記事が書かれていますが、今はDXに既存のBOがあります。これのタイムアウト実行のアクションがそれです。なので自作しなくてもこちらをお試しになったらいいです。

MS Excel VBO - Extended

最初にこれを使ったときに私がハマったのは、Excelファイルを開くところから全部同じBO内のアクションでやらなければうまく動かない(マクロ実行のところだけこのBOに差し替えてもダメ)というところです。

うまくいくといいですね!私もExcelとかAccessのマクロを操作するところはよく詰まります。

------------------------------
Mitsuko
Asia/Tokyo
------------------------------

MikiKanda
Level 3
Kurataさん
こんにちは。
コメントありがとうございます。

私のほうの説明が良くなかったと思いますが、
事象としては、
マクロの処理は終わった後に、ダイアログが表示されます。
そして、ダイアログでのクリック処理が上手く行ってないことで(BP上はクリックを押したが、実際押されていなかった)、
警告の表示時間に達して、警告になった。という内容となります。
※マクロの処理は、遅くても5秒で終わります

私も、今回の件のみならず、
Excelやマクロの処理で、思うようにいかないときが多く、悩まされています...

sumire
Level 9

ダイアログボックスでAttachはできるけどボタン押下で空振りしちゃう、という感じでしょうか……。

画面待機確認は二回入れていますが」の画面は、何を待機しているものでしょうか?Excel?ダイアログボックス?OKボタン?

③のあとにダイアログボックスのAttachをやって、AttachできたらOK押下を再度やる、Attachできなければめでたくダイアログボックスが消えたということで④へ、という感じではどうでしょうか?

------------------------------
Mitsuko
Asia/Tokyo
------------------------------

MikiKanda
Level 3
Kurata さん

>ダイアログボックスでAttachはできるけどボタン押下で空振りしちゃう、という感じでしょうか……。
そうですね。
空振りしちゃうような感じです。

>「画面待機確認は二回入れていますが」の画面は、何を待機しているものでしょうか?Excel?ダイアログボックス?OKボタン?
ここでの待機確認画面は、ダイアログボックスのことです。

>③のあとにダイアログボックスのAttachをやって、AttachできたらOK押下を再度やる、Attachできなければめでたくダイアログボックスが消えたということで④へ、という感じではどうでしょうか?
ご認識の通りです。
でも、2回行っていても、空振りは起きてしまうのが現状です。
マクロ処理で警告が出る場合に、Excelを強制的に終了したいとも考えていましたが、
実装ができなくて困っています。(自分の知識不足というのもありえますが...)

A.Fujita
Level 3
こんにちわ。

的外れだったら恐縮ですが、ダイアログはどこから表示させているのですか?
マクロ内のMsgboxとかだったら、マクロは終了していないことになります。→既出ですがBluePrismには制御が戻ってきません。
ログ上でダイアログのAttachは成功しているのでしょうか?

マクロが終了していないと仮定して、自分の回避策を載せておきます。
・マクロの起動はVBSなどで行うようにする。(BluePrism以外から起動するようにする)
・BluePrism側では上記のVBSをStartProcessで実行する。
・マクロが終わるのに十分な待機を行う。
・BluePrism側でダイアログをAttachして応答する。

以上です。