この記事ではPower Automate for desktop(以下PAD)でExcel マクロを実行する方法について解説します。
Power Automate for Desktopの「Excel マクロ」アクションの制約
PADでExcelマクロを実行する場合、通常のマクロ実行と違い下記のような制約があるので注意が必要です。
Power Automate for Desktopの「Excelマクロ」アクションの制約
- 標準モジュール内にあるSubプロシージャか、Functionプロシージャのみ実行できる。
- Sheetsモジュールやクラスモジュールのプロシージャは実行できない。
- Private句を使ったプロシージャを呼び出すことは可能。
- VBAからPADへ値を受け渡すことはできない。ファイルか何かを経由するなど工夫する必要がある。
- PADからVBAに引数を渡すことは可能。
- 個人用マクロブック(personal.xlsb)に保存されているマクロは実行できない(?)(私の環境ではできませんでした。)
テスト用Excel ファイルの準備
▲こんな感じの表を作りました。
PADから2つの引数を受け取って、A4セルとB4セルに転記し、VBAによって合算し結果をC4セルに受け取るという流れです。
下記のような「main」という名前のsubプロシージャを作りました。
▲VBAProject(Book1)を右クリックして「挿入」>「標準モジュール」をクリックして標準モジュールModule1を追加します。
Sub main(num1 As Integer, num2 As Integer) With ThisWorkbook.Worksheets(1) .Range("A4").Value = num1 .Range("B4").Value = num2 .Range("C4").Value = num1 + num2 End With End Sub
▲標準モジュールModule1に上記のコードを追加します。step1で作成したExcel ファイルに上記のコードを記述してマクロ形式拡張子でExcel ファイルを保存します。保存したファイルの場所を覚えておいてくださいね。
VBAコードの処理の流れ
- PADから2つの入力を受け取る。
- 2つを足し算する。
Power Automate for desktopフローを作成します。
追加するアクションは2つだけです。
- Excelの起動
- 次のドキュメントを開く
- 読み取り専用として開く
- 今回はマクロで書き込みを行うのでチェックをオフにします。
※「アドインとマクロの読み込み」にチェックを付ける必要はありません。
▼パラメータを入力します。
- Excelインスタンス
%ExcelInstanse%
- マクロ
- 実行するマクロ名とマクロに渡す引数を入力します。
「マクロ」に渡すパラメータの記述方法
引数なしプロシージャ名
引数1個ありプロシージャ名;引数
引数複数の場合は複数の数だけセミコロンで区切ります。 プロシージャ名;引数1;引数2;引数3
今回のテストデータの例ではプロシージャ名はmain、引数に2つの数字を受け取る仕様になっているので、main;200;300
としました。
マクロに渡す引数は、マクロに記述された引数の数とデータ型を一致させるように注意しましょう。
PADから引数200と300を渡し、VBA内で合算した結果を出力できました。うまく連携できていますね。
マクロファイルとは別のExcelファイルにマクロを実行する方法は?
マクロが保存されているファイルExcelファイルAのマクロを、別のExcelファイルBに対して実行する方法は下記の記事をご覧ください。
準備中
まとめ
- Power automate desktopでExcelマクロを実行するには「Excelマクロの実行」アクションを使用する。
- PADからExcelマクロに引数を渡すことができる。
プロシージャ名;引数1;引数2;引数3
のように記述する。
週1~2くらいのペースで記事内のコンテンツを増やしつつ過去記事のアップデートをしています。気に入っていただけたら是非ブックマークやFeed登録よろしくお願いします!
このブログではRPA・ノーコードツール・VBA/GAS/Pythonを使った業務効率化などについて発信しています。
参考になりましたらブックマーク登録お願いします!
▲Power Automate for desktopをこれから始める方におすすめです。
▲動画で学びたい方はこちらのオールインワンで学べる講座がおすすめです。