VBAからPower Automate for desktopのフローを実行する
Power Autoamte外からのフロー呼び出しが可能に
先日のPower Automate for desktop(PAD)のバージョンアップにより、待望のPAD外からのフロー呼び出しが可能になりました。
Power Automate for desktop – June 2022 updat
つまり、ExcelのVBAから呼び出したり、自作プログラムから呼び出したり、デスクトップに置いたショートカットから呼び出したりすることができるようになりました。
有償ライセンスが必要
残念ながら誰でもこの機能を使えるわけではなく、有償ライセンスを契約している方だけです。
私は「アテンド型 RPA のユーザーごとのプラン」を契約しているため利用可能です。
知らないうちに、一回の実行ごとに課金される従量制プランも用意されています。これでも使えるのか不明です。
呼び出しにはURLを使う
呼び出す方法はURLを使ったものでした。
ブラウザから呼び出すこともできるし、シェルから呼び出すこともできます。
基本的な方法は次のページで詳しく解説されています。
[Power Automate for desktop]URL経由でデスクトップフローを実行する
実際の実行方法についてはこちらのページが良いでしょう。
外部リンク機能を使用した Power Automate for desktop のフローの様々な実行方法を試してみる
VBAからの呼び出し
というわけで、今回はVBAからシェルを使って呼び出してみました。
Public Sub uInvokePowerAutomate()
Const uID As String = "ここにはフローIDを指定する"
uRunPowerAutomate uID
End Sub
'指定されたフローをPower Automateで実行
'参照設定 Windows Script Host Object Model
Public Sub uRunPowerAutomate(ByVal uFlowID As String)
Const uEnvID As String = "ここには環境IDを指定する"
Dim uURL As String
Dim uWS As WshShell
uURL = "ms-powerautomate:/console/flow/run?environmentId=" & uEnvID
uURL = uURL & "&workflowId=" & uFlowID
Set uWS = New WshShell
uWS.Run uURL
End Sub
WshShellオブジェクトを扱うには、参照設定で、Windows Script Host Object Modelを指定しておく必要があります。(指定せずにCreateObjectを使っても良いです)
あとはワークシート上に設置したボタン等で、上のプロシージャーuInvokePowerAutomateを指定するだけです。環境IDについては、Default- をIDの頭につけないと、実行できませんでした。
アップデート
2022/11/29 追記
先日のアップデートにより、フローの詳細画面からURLを取得できるようになっていました。(元々こうだったのかもしれませんが)
フローの「…」をクリックし、詳細を選びます。
「URLを実行」でコピーボタンを選べるようになっていました。
ここで取得したURLを WshShell の Run に指定すれば実行できるはずです。
また、コンソール画面の「…」を選ぶと「デスクトップショートカットを作成」が選べるようになっていました。
これを使うとサクッとデスクトップにショートカットを作ることができます。
使ってみると
これで、今までいちいちPower Automateのコンソールから実行していたフローを、Excelからボタンクリックで簡単に呼び出すことができるようになりました。
それくらいと思われるかもしれませんが、実際に使ってみると結構便利だという事がわかってきました。
なぜかPADはデフォルトのフローの並び順が編集時間順で、名前順ではありません。また、デフォルトのソート順を変える方法も見当たりません。
そのため、PADを起動する、並び替える、フローを見つける、フロー実行、という手順が必要でした。
なにげに、並び替えとフローを見つけるというのが煩雑で、時には違うフローを実行してしまう時もありました。
Excelのボタンに貼り付けたり、デスクトップにショートカットを用意することにより、迷いなく実行できるようになりました。
また、Power Automateを知らない方でもスムーズに実行できます。
追記: 最近は、コンソールの検索機能を使ってフローを絞り込み、それから実行しています。これでもコンソール起動と検索の手間があるので、業務で使うエクセルシートからボタンを押すだけで呼び出せた方が断然簡単です。
日常使うフローはほぼExcelとデスクトップに配置したので、最近は、ほとんどコンソールを開かなくなりました。
コメント
コメントを投稿