「Power Automate Desktop」の活用事例をご紹介します。
こちらでは、「Power Automate Desktop」の基本機能とExcel マクロを組み合わせて、少し発展的な内容を取り扱いたいと思います。
どうしても「Power Automate Desktop」の機能だけでは実現できなかった部分をExcel マクロを使うことによって補完する目的ですので、基本的にはフローで構築してExcel マクロは最小限の使用にとどめています。
もちろん「Power Automate Desktop」の基本的な動作の紹介も兼ねていますので、もしExcel 操作の自動化にご興味があればご一読ください。
フローの作成例
こちらが今回ご紹介する内容です。
こちらのフローでは、「Excel リストから任意の数値を探し出してセル色を変更する」といった内容の動作をおこないます。
こちらが実行結果です。
左側が実行前で、右側が実行後です。
「セルの値が5以上」を対象として、「セル色をRGB( 255, 100, 0)」に変更しています。
「Power Automate Desktop」では、「セル色の変更」に関連するアクションが用意されていないため、この部分をExcel マクロをつかって作成しています。
また、処理の最後に完了メッセージを設定しています。
具体的な作成手順
今回のフローの構成イメージはこちらのとおりです。
「Excel 情報の取得」と「完了メッセージ」の間に、ループ処理や条件分岐といった内容で構成されています。
ループ処理では、Excel リストを列基準で横の順番に指定したうえで、行基準で縦の順番に指定する形をとっています。こういった形にすることで、Excel リストにあるセルを順番にひとつずつ全てを取得することができます。
また、「条件分岐」のなかに「Excel 操作」を組み込むことによって、セル値による処理の実行有無を判別しています。
それでは、具体的な作成方法をご説明します。
手順1|実行中のExcel に添付
アクション「実行中の Excel に添付」を使用して、操作対象のExcel ファイルを取得します。
取得されたExcel ファイルは、変数「ExcelInstance」に代入されます。
なお、今回使用するファイル名は「sample_list.xlsm」で、こちらのような内容であらかじめ作成してあります。
(拡張子は「xlsx」ではなく、マクロ機能を有効にするために「xlsm」とする必要がありますのでご注意ください。)
手順2|Excel ワークシートから最初の空の列や行を取得
アクション「Excel ワークシートから最初の空の列や行を取得」をつかって、ワークシートにあるリストの情報を取得します。
取得される変数は以下のとおりです。
変数名 | 内容 |
FirstFreeColumn | 最初の空の列の数値です。 今回の例の場合では、D列に値が入力されていないため、取得される値は「4(左から数えて4番目のため)」になります。 |
FirstFreeRow | 最初の空の行の数値です。 今回の例の場合では、8行目に値が入力されていないため、取得される値は「8(上から数えて8番目のため)」になります。 |
手順3|変数の設定
変数「NewVar」を設定します。
先ほどの手順2で取得した変数「FirstFreeColumn」の値には「4」が代入されています。
ただ、実際の操作対象となる列は「A列からC列」となるため、言い換えると列番号では「1~3」の「3つの列」ということになります。
そのため、変数「NewVar」を設定して、変数「FirstFreeColumn」の値「4」から「1」を差し引いた値である「3」を取得することによって列数(この場合は「3つの列」)におうじた値を取得します。
ループによる繰り返し処理の設定をするために、このタイミングで変数「NewVar」を設定しています。
手順4|ループ条件
アクション「ループ条件」をつかって、手順3で取得した変数「NewVar」の値をもちいたループによる繰り返し処理の設定をします。
こちらのループによる繰り返しの設定は、Excel の「列基準」に該当するところです。
ここでは上記のとおり、変数「NewVar」の値が「0と等しくない」状態になるまで繰り返し処理を行うように指定します。
「手順10|変数の設定」にて後述しますが、この後の工程(下図のオレンジ色の部分)で変数「NewVar」の値を「1つずつ減らす」アクションを設定します。
この設定によって、変数「NewVar」の値が「3→2→1→0」と段階的に減少して、最終的に変数「NewVar」が「0」になったタイミングで繰り返し処理が停止するといった仕組みになっています。
手順5|Loop
アクション「Loop」をつかって、ループによる繰り返し処理の設定をします。
こちらのループによる繰り返しの設定は、Excel の「行基準」に該当するところです。
それぞれのパラメーターの選択に対して、入力値と内容はつぎのとおりです。
パラメーターの選択 | 入力値 | 内容 |
開始値 | 2 | 操作対象となるExcel リストの「2行目」から繰り返し処理を開始するため、「2」を入力します。 |
終了 | %FirstFreeRow – 1% | 変数「FirstFreeRow」には、「8」が代入されています。 繰り返し処理の対象となる行番号は「2~7」のため、変数「FirstFreeRow」から「1」を差し引くことによって終了の値を調整しています。 |
増分 | 1 | 2行目から7行目まで「ひとつずつ」順番にすべてのセルの繰り返し処理をおこなうため、増分を「1」としています。 |
手順6|Excel ワークシートから読み取り
アクション「Excel ワークシートから読み取り」をつかって、セルの値を取得します。
取得されたセルの値は、変数「ExcelData」に代入されます。
今回は「単一セルの値」を取得対象として、「先頭列」と「先頭行」にはそれぞれの変数を指定する形をとっています。
フローを実行することによって、具体的に代入される値を確認しましょう。
以下のとおり、繰返処理の回数に応じてそれぞれの変数に順番に値が代入されることによって、対象のセル番地が一巡されることになります。
繰返処理の回数 | 先頭列:NewVar | 先頭行:LoopIndex | 対象のセル番地 |
1 | 3 | 2 | C2 |
2 | 3 | 3 | C3 |
3 | 3 | 4 | C4 |
4 | 3 | 5 | C5 |
5 | 3 | 6 | C6 |
6 | 3 | 7 | C7 |
7 | 3 | 8 | C8 |
8 | 2 | 2 | B2 |
9 | 2 | 3 | B3 |
10 | 2 | 4 | B4 |
(省略) | (省略) | (省略) | (省略) |
まずは「3列目」を対象として、行番号「2~8」のセルを取得しています。
「3列目」が終了すると「2列目」が開始されます。
おなじように「2列目」でも行番号「2~8」のセルを取得します。
「1列目」もおなじ動作をおこない、手順4の「ループ条件」で設定したとおり変数「NewVar」の値が「0と等しくない」状態になるまで繰り返し処理が実行されます。
このような順番でセル数に応じた繰り返し処理を実行しています。
手順7|If
アクション「If」をつかって、条件分岐の処理をします。
こちらではセル値(変数「ExcelData」に代入されている値)が「5以上」の場合に処理を実行する設定をしています。
なお、セル値が「5未満」である場合は、「If」のなかに含まれるフローを実行しません。
手順8|Excel ワークシート内のセルをアクティブ化
アクション「Excel ワークシート内のセルをアクティブ化」をつかって、セルの値をアクティブ化します。
ここで言うアクティブ化とは、「セルを選択すること」を意味しています。
「手順6|Excel ワークシートから読み取り」でセル値を取得した方法とおなじ方法をもちいてセルを選択します。
先ほどの手順6でセル値を取得したものの、ワークシートのセルを選択している状態になっていないため、こちらの設定が必要になります。
(「取得」と「選択」はちがう考え方をする必要があります。)
手順9|Excel マクロの実行
アクション「Excel マクロの実行」をつかって、マクロ実行の設定をします。
詳細は後述しますが、パラメーターの選択「マクロ」に今回の実行対象となるマクロ名である「color」を記入しています。
今回使用するマクロはこちらです。
マクロの中身としては、セル色を変更する内容が記述されています。
Sub color() Selection.Interior.color = RGB(255, 100, 0) End Sub
すこし下準備が必要ですが、操作対象となるExcel ファイルにはあらかじめマクロを記述しておく必要があります。
こちらは「Power Automate Desktop」での設定ではなく、Excel ファイルごとに設定する必要があります。
具体的なExcel マクロの設定方法はこちらをご覧ください。
- 「マクロの有効化」と「開発タブ」の設定をおこなう
(参考:【Excel VBA入門】セキュリティ設定と開発タブ|エクセル マクロの初期設定) - 「VBE」をつかってマクロを記述する
(参考:【Excel VBA入門】「VBE」の使い方|エクセル マクロのエディタ)
手順10|変数の設定
「手順4|ループ条件」で前述したとおり、繰返し処理の設定のため変数「NewVar」の値を上書きする設定をします。
手順3であらかじめ設定しておいた変数「NewVar」の値から「1」を差し引いた値を、おなじ名前の変数「NewVar」に代入します。
この工程によって変数「NewVar」の値が「1差し引かれた値」に更新されます。
ご説明が反復しますが、繰返し処理(今回は「ループ条件」)をおこなうたびに「3→2→1→0」と段階的に減少する変数「NewVar」の値に対応させる形で以下の設定をおこなっています。
- 「手順4|ループ条件」の繰返回数の設定
- 「手順6|Excel ワークシートから読み取り」の列番号の設定
手順11|メッセージを表示
アクション「メッセージを表示」をつかって、さいごに完了メッセージを表示させます。
まとめ
RPAツール「Power Automate Desktop」とExcel マクロの組み合わせの事例をご紹介しました。
今回はExcel マクロをつかって「セル色を変更」する例をご紹介しましたが、それ以外にもExcelマクロにはさまざまな機能が用意されています。
どうしても「Power Automate Desktop」の基本機能だけでは実現できないケースがあれば、Excel マクロの導入をご検討いただくのも一つかと思います。
こちらに「Power Automate Desktop」でできることや基本的な操作方法をまとめていますので、よろしければ一度ご覧ください。