VBSとInvokecodeの使い分けについて

RPA開発に携わってまだ日が浅い者です。
主にエクセルでのデータ処理を自動化する作業をしています。

アクティビティが使えない処理について、UiPathからVBSを実行させるか、InvokeCodeで書くかで迷っています。
基本的には単機能で作成して(InvokeCodeはライブラリとして作成)、複数のプロセスから呼び出せるようにするつもりです。

InvokeCodeの方は特定のCodeでUiPathの潜在バグらしきものがあり、回避策はあるものの不安定さはあるのかとも思い、皆さまどのようにされているか気になりました。

改修はVBSの方がファイル改修のみで楽そうですが、RPAはユーザー視点で作るべきでCodeはなるべく使わないということも聞きますので、いろいろ悩んでいます。

こんにちは

あくまで個人の意見ですが
基本的には組織の(中長期の)保守可能性を基準に判断するのが良いように思えます。
ここではVBS(InvokeVBScriptでしょうか?あるいはStart Process?)とInvokeCode(VB前提でしょうか?)の比較ですが、当然これ以外の言語やVisualStudioを使ったカスタムアクティビティ作成なども選択肢に入ると思います。これらを含めて組織にとって適切なものを選択すればよいと思います。
技術的な観点ですと、一方は別プロセスでの動作、もう一方は呼び出し元と同じプロセスとなるので、動作特性が異なるとも思いますので、そもそも二律相反ではないようにも思えます。

ちなみにアクティビティで出来なくてInvokeCodeでできる処理が必要になるシーンって多いですか?個人的には少々アクティビティ数が多くなったとしても、InvokeCodeもVBSも使わないに越したことはないと思ってはおります。

1 Like

ありがとうございます。
保守可能性についてです。
開発後はユーザー部門で保守管理する想定と聞いていおり、なるべく、可読性の高いものという要望を受けております。
その点、VBScriptが良いかと思いましたが、ご指摘にあった別プロセスになる点が良いのか悪いのか分からずにおりました。

はい、codeは使わないにこしたことはないのは念頭に置いておりました。ただ、安定的に実装できる方法が思い浮かばず…。
アクティビティにない処理でInvokecodeでできることですが、例に挙げるとエクセルのオプション設定などです。もしかして、アクティビティを駆使すれば安定的な形で実装できるのでしょうか?

初心者すぎて、質問ばかりで申し訳ありません。
よろしくお願いします。

こんにちは

ファイルーオプションの各機能でしょうか?保存オプション?
いずれもUI操作以外での操作アクティビティはExcel Activity Packageにはありませんね。

セキュリティ設定の問題があるかもですが、個人的には、マクロ/VBAがサポートしている範囲の機能なら、まずはマクロ/VBAを検討します。Invoke Code やVBScriptですとCOM経由の操作になると思いますが、リソースの開放を厳密にやらないとメモリリークや最悪プロセスが落ちたりするリスクが出てきますので、このあたりの対応可否次第かもしれません。

ありがとうございます。
ファイルーオプションの各機能です。UI操作がうまくできなかったので、ドツボにハマるよりはとこの検討に入った次第です。なるほど、マクロ/VBAは検討していませんでした。

Yoichi様でしたらUI操作での実装をされますか?その場合、どのように作られるのでしょうか?セレクターが取れなかったので、画像で認識させたのですが、するとスクリーンロック状態ではUIが取れず…。今度、オーケストレーターの導入の予定があり、バックグラウンド実行が基本になるかと思っているのですが、その状態で動作する方法を見つけられませんでした。

そもそも、今のところオーケストレーターについて全く知識がなく、触ったこともないので、全てが手探りです…。

こんにちは

Yoichi様でしたらUI操作での実装をされますか?

基本的にはマクロ/VBAのアプローチ、次にEXCEL Packageに同梱されているNPOIやClosed XMLといったライブラリでの操作、やむを得ない場合はUI操作の順番になるかと思います。

その場合、どのように作られるのでしょうか?セレクターが取れなかったので、画像で認識させたのですが、するとスクリーンロック状態ではUIが取れず…。

UI操作する場合でもセレクター前提にします。あとはキー操作ですね。最後の手段としての
画像認識です。いずれにしてもUI操作は空振りリスクが大きいので、動作のチェック&
リトライは必要なケースが多いように思えます。
セレクターの取れる・取れないはUiAutomationパッケージのバージョンによっても
変わりますので、そのあたりを上げてみるのも場合によっては有効かもしれません。

今度、オーケストレーターの導入の予定があり、バックグラウンド実行が基本になるかと思っているのですが、その状態で動作する方法を見つけられませんでした。

オーケストレーターから指示を受けて実行するUnattended Robotは(ロック画面下のような)
バックグラウンドで動作するわけではありません。コンソールまたはRDP接続を用いており、
画面が描画されますので、画像認識も動作します。

ありがとうございます。
検討の順番、とても勉強になります。
それぞれリサーチしてみたいと思います。
やはり、知識も技術も足りなすぎました。

オーケストレーターの件、まるで違って理解していました。描画されると聞いて安心です。こちらも、体験立てて学びたいです。

ご回答いただきありがとうございました。

1 Like