前回、名前を指定してPower Automate Desktopのフローを実行するPowerShellスクリプトについて記事を書きました。
UI AutomationでPADの画面を操作する仕組みで、同様の処理はVBAからでも実行することができます(UIAutomationClient(UIAutomationCore.dll)要参照)。
※本マクロの使用は自己責任でよろしくお願いいたします。
実行ボタンを押した後、Sleepを使わずに処理待ちするのが上手くいかなかったので、PADを終了する場合は、フロー実行後にすぐにウィンドウを閉じる処理となっています。
VBAからでもPADのフローを呼び出せるとなると、Outlookが使える環境であれば、メール受信時に発生するイベント「(Application).NewMailEx」を使ってメール受信をトリガーにしてフローを実行することもできるわけです。
下記は一例ですが、受信したメールの件名が「PADフロー実行:(フロー名)」の場合にフロー名で指定したフローを実行します。
Private Sub Application_NewMailEx(ByVal EntryIDCollection As String) Dim itm As Object Dim v As Variant Set itm = Application.Session.GetItemFromID(EntryIDCollection) If TypeOf itm Is Outlook.MailItem Then v = Split(itm.Subject, ":") If v(LBound(v)) = "PADフロー実行" Then StartPADFlow v(UBound(v)), False End If End Sub
下の動画では、スマホのOutlookからメールを送り、カメラで撮影した写真を添付メールで送信するフローを実行しています。
以上のように、Power Automateのデスクトップフローを使わなくても、PADのフローを呼び出せることが確認できたわけですが、前回の記事でも書いた通り、安定してフローを実行できるわけではないため、実務ではデスクトップフローを使用した方が良いだろうと思います。
この記事へのコメントはありません。