2022年1月のアップデートで、「Excel の起動」アクションでExcelファイルを開く際、単一プロセス下でインスタンスをグループ化できるようになりました。
https://powerautomate.microsoft.com/en-us/blog/power-automate-for-desktop-january-2022-update/ より これにより他ブックのマクロを参照できるようになっています。 他ブックのマクロを実行するフローフロー全体1. Excel の起動ドキュメントパスを指定して下記マクロ「Macro1」が書かれたファイル(Macro1.xlsm)を開きます(変数:%ExcelInstance%)。 Public Sub Macro1() Dim i As Long For i = 1 To 100000 ActiveSheet.Cells(i, 1).Value = i Next ActiveSheet.Range("B1").Value = "Macro1の処理が終了しました。" End Sub 2. Excel の起動「Excel の起動」オプションで「空のドキュメントを使用」を指定し、新規ファイルを作成した状態でExcelを起動します(変数:%ExcelInstance2%)。 3. Excel マクロの実行Macro1.xlsm ファイルで「Macro1」マクロを実行します。 4. Excel マクロの実行新規作成したファイルで Macro1.xlsm ファイルの「Macro1」マクロを実行します。 5. Excel を閉じる処理が終わったらExcelを閉じます。 実行画面
これまでの「Excel の起動」アクションでは、複数個Excelを起動した場合それぞれ別のプロセスとして立ち上がっていたため、上記のような形で別ファイルのマクロを実行することはできませんでしたが、今回のアップデートによって、ファイルをまたがってマクロを実行することができるようになりました。 関連WebサイトPower Automate Desktopでは、エクセルのマクロを実行させることができます。 VBAを使った関数を実行させることができるので、マクロ実行を自動化させたい場合に非常に便利です。 マクロの作成エクセルのマクロをまずは作成します。 サンプルとして、VBAを使って関数をワークブック内に作ります。 テスト用なので、単純にセルをコピーしてペーストするだけのものです。 フローの作成ファイルの起動まずエクセルでファイルを起動させます。 アクションで「Excel>Excelの起動」でファイル名を指定しておきます。 詳細でマクロの読み込みがあるので一応チェックしておきます。 マクロの実行アクションで「Excel>詳細>Excelマクロの実行」を追加。マクロ名を指定します。 今回はワークブック内のVBA関数なので「ThisWorkbook.doTest」のように記述します。 保存マクロでセルを上書きしていますので、ファイルを保存します。 アクションで「Excel>Excelの保存」を追加します。 終了最後にエクセルを閉じます。 フローの実行手順としては以下のように、エクセルの起動→マクロ実行→ファイル保存→エクセル終了となります。 実行してマクロで変更されたファイルを確認できれば成功です。 Power Automate Desktopからマクロを実行させるメリットは?既にエクセルファイルにマクロが仕組まれていれば、それを指定するだけで実行できるほうが楽です。 また「セルに色を付ける」などはVBAのほうからでないと設定できません。 PADでエクセルマクロの不具合マクロが動かない?そもそもマクロが正常に動作しない場合にはPower Automate Desktopのほうではどうしようもありません。先にVBAの動作などを調べておきましょう。 マクロを指定する場合には、「Excel>Excelの起動」のアクションで、「アドインとマクロを読み込む」をチェックしておきましょう。 マクロが見つからない?doTestという関数でマクロを実行しようとしたら、なかなか認識されずに苦労しました。 最終的には「ThisWorkbook.doTest」という名前にしたら実行できました。関数の呼び出し方がしっかり一致しないと認識されませんので注意しましょう。 また「Sub Workbook_Open()」のように起動時にマクロを実行するように書いておけば、起動時させることでマクロが実行できます。指定したマクロが実行されない場合は、この方法で動作確認をしてみるといいかもしれません。 |