今回が講義の第二回目となります。前回はVBAとUiPathで使われているVB.netの基礎的な違いを学んでいただきました。今回は、さらにVBSとUiPathについて比較をしましょう。なぜならばRPAの開発にはVBSを活用することが多いからです。
さて、VBSを見たことがありますか?かなり歴史があり、古そうなデザインでこのアイコンです。S字のマークのようなもの。名前からするとVBSですから、EXCELのVBAとも似ているような気がしますよね?VBAを書ける人は多いでしょうが、VBSに変換してRPA製品がVBSを動かす方が安定的です。そのためよくVBSを記述することが多いのです。
VBAからVBS、そしてUiPathやWinActorなどのRPA製品を一緒に使いこなしてみましょう。いまから、VBSからUiPathに変換していきます。
RPA活用辞典を無料でDL
経験者によるマンツーマントレーニング!
プログラミング経験ないけど1ヶ月でUiPathができるようになれるコースはこちら↓
VBS(ブイ・ビー・スクリプト)とは?
VBScript(ブイ・ビー・スクリプト)マイクロソフトによるスクリプト言語です。そのため、ファイルやフォルダの操作(ファイルのコピーや移動、フォルダの作成、削除など)や、テキストファイルの処理は、「VBScript」でおこなうのです。EXCELのVBAについての学習は前回行いましたが、VBAで記述した方が速度も速く処理が安定していますので、OFFICEソフトの中の動作はVBAで記述するのが一般的です。そのため、今日はEXCELの外の動作なので、VBSで記述する必要があります。それを学びます。VBAと似ていますが、少し記述方法が違いますので注意してください。
VBS(ブイ・ビー・スクリプト)とUiPathを触ってみよう
[VBS]googleメールとスケジュールを開く
さあ、ChromeブラウザでGooglleのカレンダーページとGoogleメールをそれぞれ開くというプログラムを作りましょう。
まずはVBSで作ります。
①メモ帳アプリを立ち上げましょう。
②そこに下記を記述(ブルー背景以外のテキスト)します。できれば、学習なので自分で記述しましょうね。
1.Dim objWSH,MailUrl,CaleUrl ← Dimを使って変数(objWSH,MailUrl,CaleUrl)を宣言
2.MailUrl=”http://mail.google.com/mail/” ←変数を指定(MailUrl)
3.CaleUrl=”http://calendar.google.com/calendar/” ←変数を指定(CaleUrl)
4.Set objWSH=CreateObject(“WScript.Shell“) ← 動かし方を指定する(objWSHという変数が”WScript.Shell“である)
5.objWSH.Run MailUrl,1 ←「メールを表示」を実行(objWSH)
6.objWSH.Run CaleUrl,2048 ←「カレンダーを開く」変数を実行(objWSH)
7.Set objWSH=Nothing ←変数を指定(objWSH)
解説
水色に解説を書きましたが、4行目を理解しておきましょう。”WScript.Shell”とは何でしょう?ご存知ですか?
これは、Windowsと対話する「Shell」つまり「指定した動かし方をコンピュータに伝えるプログラム」のこと。
つまり4行目は 変数である”Set objWSH”は、プログラムをセットする、つまり動作そのものを指定しているのです。
そして5行目でその変数である”Set objWSH”を実行させます。数字の”1″とはVBSでは表示を意味しています。
6行目の2048は、新しいタブで表示することを意味しています。
そして7行目は、”Set objWSH=Nothing”とは、変数を解除する、つまり停止、プログラムを終了するということです。
③では、ファイルを保存します。「メール_スケジュール確認.vbs」と拡張子を.vbsとしてデスクトップに保存しましょう。
※:ファイルは拡張子等を表示する設定にしておきましょう。
④では「メール_スケジュール確認.vbs」をダブルクリックして実行しましょう。
ブラウザにおいてgoogleメールとgoogleカレンダーが新規でChromeブラウザが開きましたか?
※アカウントの設定が行われており、Chromeブラウザにおいてログインが自動でできる状態を想定しています。
[UiPath]準備:googleメールとスケジュールを開く
では、本題です。早速Chromeでメールページとスケジュールが開くか自分で10分ほど考えてくださいね。
①新規プロジェクトのプロセスをクリックして名前と説明に「メールとカレンダーを開く」と名前を付けます。
前提条件:ツール設定
今回はIEではなく、Chromeを動かします。そのためにはUiPathの「ホーム」タブをクリックしてから、左の「ツール」を設定する必要があります。つまりChromeを動かすためにはUiPathで動くようにChromeにツールの設定をする必要があるからです。
②UiPath拡張機能のChromeをクリックしてください。これにより、Chrome側にUiPathの命令で動くように設定ができるのです。
③インストールできたかの確認は、Chromeを再起動してから、メニュー>拡張機能でインストール状況が確認できます。
④ブラウザChromeを開いてGoogleメールページを開きましょう。アクティビティーはわかりますね?
アクティビティ
「ブラウザーを開く」です。
変数
変数は、「MailUrl」と「CaleUrl」を使ってください。
変数とは・・・プログラミング開発において「値を入れておく箱」です。しかしそれには一定のルールがあります。文字か、数字なのかなど分類したものを入れておくものです。変数には主に下記の形式があります。今回はURLを指定しますので、文字列を操作しますので、String型になります。ちなみにGenericValueはUiPath独自のフォーマットで複数の形式に対応する型です。
さあ、自分で考えて10分考えてください。自分で考えることが一番の学習です。
UiPathでの開発
UiPathのアクティビティは300以上あり、大きく2通りのワークフロー(シナリオ)を作ることができます。今回のアクションでは「ブラウザを連続で開く」だけです。
- UiPathでVBSのコードを丸ごとUiPathに変換
- アクティビティーのVBSを使用
-
UiPathでVBSのコードを丸ごと変換の場合
⑤ 変数を設定する
変数の形式は文字列なのでStringにします。かつ文字は[“]ダブルクオテーションで囲むんですよね。忘れた人は第1回目に戻って復習してください。
[UiPath]googleメールを開く
⑥アクティビティの「ブラウザを開く」をダブルクリック(ドラッグ)する。
⑦変数「MailUrl」を右にあるプロパティーの「入力」に設定します。Mといれるだけで候補が表示されます。それを選択します。
⑧同様にブラウザを選択します。今回はChromeでしたね?選択しましょう。設定が完了したら、ファイルをすべて保存してください。
⑨では、デバック(テスト)しましょう。googleメールページが表示されたら次に進みます。
⑩ さて、あと一つで終わりですね。Chromeでもう一つタブを作り、そこにURLを張り付ければいいのです。わからなくなった場合は自分で実際に再現してみましょう。そして動作の漏れがないか、確認をします。(自分で考えましょう)
[UiPath]googleスケジュールを開く
⑪新しくタブを開きましょう。いくつか方法はありますが、ショートカットを使います。ブラウザに新しいタブを開くのは「Ctrl+t」です。
アクティビティでは「UI Automation>要素>キーボード>ホットキーを押下」がショートカットを設定できるアクションです。選択の理由は端末の動作が常に安定していること。つまり端末の画素数が異なっていても影響を受けないことです。(ほかにも手段はありますが。)
⑫Doの中に置きます。そしてキーのところに「t」と入力して下さい。そして保存します。デバッグしてみてください。Chromeメールページが開いた後に新規でChromeタブが開きますか?
⑬では、タブが点滅していることを見てください。こちらに「文字を入力」しましょう。
アクティビティから「文字を入力」をドラッグして設定します。
⑭画面上で指定をクリックして先ほどのブラウザを選択します。グレーアウトしています。それをURL点滅部分をめがけてクリックします。
それでも何か、エラーのようです。理由を見てみましょう。「必須のアクティビティTextが指定されていない」とエラー表示されました。
⑮どうも下のテキストに入力する必要があるようです。「文字を入力」というアクティブティなので、カレンダーのURLを入力したら動きそうですね。早速入力してみましょう。事前に変数設定をしたいたので「CaleUrl」を入力します。プロパティーも下記のように入力前にクリックにチェックを入れます。
⑯早速デバッグ(テスト)して実際に動くか確認します。アドレスは指定されていますが、ページに移動していません。どうしてでしょう。そんなときは実際に人間が動作を検証しましょう。
⑰人間はアドレスを入力したら無意識に「Enter」を押しています。それをロボットにもさせれば動きそうです。早速修正しましょう。
⑱「UI Automation>要素>キーボード>ホットキーを押下」をもう一度使いましょう。enterを実行するのです。enterは+のタブをクリックするとリストが表示されます。
⑲上記のように「キー」に入力されました。ファイルを保存してから早速デバッグを実行してみましょう。実行が成功したはずです。
出力画面
⑳実行時にエラーがあるか、どうかは下の「出力画面」をクリックして確認します。成功なら、実行を終了したと記載され、実行時間が掲載されています。エラーの人はもう一度やり直しましょう。
VBSからUiPathへの変換まとめ
さあ、ブラウザを二つ開くだけでしたが、いかがでしたでしょうか?VBSからUiPathへの変換は以上となります。
2.アクティビティーのVBScriptを使用
についての回答です。
- UiPathのアクティビティ>システム>VBScriptを呼び出し を使ってVBSのソースのPathを指定して実行するだけです。
どこまでVBSを利用し、UiPathに変換するかは会社ごとにガイドラインがありますので、ルールに準じて開発を行いましょう。またIEで同じ動作を行うとどうなるか、時間がある場合はテストしてみてください。少しChromeとは動きが異なります。ではお疲れさまでした。これで第二回は終わりとなります。
次回は最終回となります。Orchestratorというツールを使って日付関数について学習していきます。是非ご覧下さい。
下記は実践的な内容になりますので、気になる人は読んでみてくださいね。
[補足:実践]:RPA製品開発とVBSやVBAなどの変換について
RPAの開発ではTOBEフローを作成後、ロボットフローを書くのですが、そのVBAやVBSが含まれたフローの要件定義書(ロボット設計図のこと)を見ながら、SEは開発を始めます。そして机上のまま開発が終わり、RPA開発が初めてのスタッフや新人SEは安心するものです。しかし、テストで実行した際に、エラーになることが多いのも事実です。開発会社ならこの設計(要件定義)ではクレームになりかねません。
人間が実行することを想定したVBSのプログラミング
それぞれの環境によって異なりますが、人間がVBAを実行していた時には問題なく動いていた動作が、ロボットでは実行端末の速度が遅くなったり、仮想の設定によりタイミングが間に合わずに動作がエラーとなり、止まってしまったりすることが多いのが事実です。
例えば、複数のファイルを一気に開いて、他のEXCELファイルに書き込み処理していたVBSを利用する場合があります。
上記の通り、VBSとしては何も問題がありません。が、しかしRPA化する際には、ROBOTにおいてスムーズに動くように、一つファイルを開いたら、新規ファイルに表示のシートをまとめて張り付けたら、ファイルをすぐ閉じる。そして次のファイルを開いてマスターファイルに貼り付けて閉じる、それを繰り返したりするようにしたほうがPCに負担が少なくていいのです。下記がROBOT用のフローに変更した場合のフローです。(実際には繰り返しがあります)
そのように現場では人間が実行させてきたVBSの構造をそのまま使おうとしていることが多く、クライアントも開発の必要性がないと判断することが多いです。そしてそのためにテストのフェーズまで来て動作しないことに気付き、再度開発をやり直し、開発時間を追加することが多くなり非効率となる場合があります。待機時間の設定でも回避できますが、今後の運用を考えて実行機のスペックが低い場合などはメンバーに改善提案をする方が無難でしょう。大手の企業ではほぼこのようなフローに変更しており、開発者は運用時に備えた要件定義を作っています。
ROBOTが実行することを想定したVBSプログラミングに修正
今回の例では、3つのファイルを同時に開くのではなく、test1.xlsxを開き、新規ファイルを開き、test1.xlsxのシートをコピーするし、すぐtest1.xlsxを閉じるプログラムに修正します。
それに対して経験者であれば。開発以前にロボットが最適に動くためのメモリーや、ハードディスクなどのスペック条件を確認し、仮想環境や、ネットワークの権限や、スピードによるタイミングの設定に至るまで細部に開発フェーズから考慮します。そしてテストフェーズをスムーズに行うことができます。さて、まとめを書きますね。
[まとめ] VBAもVBSも人間が実行してきたフローのままではエラーになる場合が多いので、エンジニアは、IT環境に準じてロボットが動くように仕様変更する必要がある。
RPAの開発においてVBAもVBSの取り扱いは重要です。必ずUiPathの開発前にVBAやVBSの動作がある場合は、その開発担当が在籍していればその方に確認しておきましょう。いないときは困りますね。その場合はUiPathの開発者が内容を確認するしかありません。そのため、VBSを含むプロセスでは。開発にそのVBSを把握する時間を考慮しなくてはなりません。
そしてそれらを想定せずに開発を行っていた場合は、担当のマネージャーやPM(プロジェクトマネージャー)に報告し、開発時間について相談しましょう。
実践のまとめ
RPAの開発では上流が重要です。VBAやVBSのソース内容をレビューして動作確認後、要件定義書の漏れがないように作成しましょう。
オンラインで1ヶ月でできるようになる??『UiPath』を短期間でマスターしたい方はこちら↓
コメントを残す