デスクワークを超絶快適にするおすすめギアたち詳しく見る

PADでExcel マクロに引数を渡して実行する。

じょじお

この記事ではPower Automate for desktop(以下PAD)でExcel マクロを実行する方法について解説します。

目次

Power Automate for Desktopの「Excel マクロ」アクションの制約

じょじお

PADでExcelマクロを実行する場合、通常のマクロ実行と違い下記のような制約があるので注意が必要です。

下記は公式の情報ではありません。わたし個人が検証してみた結果です。(2021年12月25日)参考程度にお読みください。

Power Automate for Desktopの「Excelマクロ」アクションの制約

  • 標準モジュール内にあるSubプロシージャか、Functionプロシージャのみ実行できる。
    • Sheetsモジュールやクラスモジュールのプロシージャは実行できない。
  • Private句を使ったプロシージャを呼び出すことは可能。
  • VBAからPADへ値を受け渡すことはできない。ファイルか何かを経由するなど工夫する必要がある。
  • PADからVBAに引数を渡すことは可能。
  • 個人用マクロブック(personal.xlsb)に保存されているマクロは実行できない(?)(私の環境ではできませんでした。)
Power Automate for desktopからVBAは標準モジュールに記述されたプロシージャのみ実行できる。

テスト用Excel ファイルの準備

STEP
テスト用Excel ファイルの準備
テストデータ

▲こんな感じの表を作りました。

じょじお

PADから2つの引数を受け取って、A4セルとB4セルに転記し、VBAによって合算し結果をC4セルに受け取るという流れです。

STEP
テスト用VBAマクロの作成
じょじお

下記のような「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つだけです。

STEP
「Excelの起動」アクションを追加します。
Power automate desktop Excelの起動アクション
Power automate desktop Excelの起動アクション
  • Excelの起動
    • 次のドキュメントを開く
  • 読み取り専用として開く
    • 今回はマクロで書き込みを行うのでチェックをオフにします。

※「アドインとマクロの読み込み」にチェックを付ける必要はありません。

STEP
「Excelマクロの実行」アクションを追加します。
Power automate desktop Excelマクロの実行

▼パラメータを入力します。

Power automate desktop Excelマクロの実行
  • Excelインスタンス
    • %ExcelInstanse%
  • マクロ
    • 実行するマクロ名とマクロに渡す引数を入力します。

「マクロ」に渡すパラメータの記述方法

引数なし
プロシージャ名

引数1個あり
プロシージャ名;引数

引数複数の場合は複数の数だけセミコロンで区切ります。
プロシージャ名;引数1;引数2;引数3

今回のテストデータの例ではプロシージャ名はmain、引数に2つの数字を受け取る仕様になっているので、main;200;300としました。

じょじお

マクロに渡す引数は、マクロに記述された引数の数とデータ型を一致させるように注意しましょう。

STEP
フローを実行します。
Excelテストデータ

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 Desktopおすすめ入門教材です。

▲Power Automate for desktopをこれから始める方におすすめです。

▲動画で学びたい方はこちらのオールインワンで学べる講座がおすすめです。

この記事が気に入ったら
フォローしてね!

シェアしてくれたらウレシイ(·:゚д゚:·)
  • URLをコピーしました!
  • URLをコピーしました!
目次
閉じる