Power Automate for desktop(PAD)でWebからダウンロードしたファイルにマクロを実行して値を受け渡す方法を学習します。
マクロからPADに値を受け渡しする方法のひとつの例としてご参考になさってください。
この記事でわかること!
- Power Automate for desktopでスクレイピングしてファイルをダウンロードする方法がわかる。
- Power Automate for desktopでWebからダウンロードしたファイルにマクロを実行する方法がわかる。
- Power Automate for desktopで実行したマクロによって変更された値をPower Automate for desktopで読み取る方法がわかる。
ダウンロードしたExcelファイルにマクロを実行したい。
下記をやりまーす。
Power Automate for desktopでやることの確認
▲図はWebからスクレイピングしてダウンロードしたExcelファイルです。Power Automate for desktopでVBAマクロを実行して、12行目の2つのセルに新しい品目と金額を書き込みを行います。(図の赤枠)
▲マクロで書き込みを行うと合計金額C17セルに入力されているSUM関数の値が更新されます。図では、もともとの合計金額600円が、マクロの書き込みにより1000円に更新されました。
▲更新された合計金額1000円という数字を一旦マクロブックに書き込みます。これをPower Automate for desktopで読み取ります。
取得出来たことの確認としてメッセージボックスに合計金額を表示することにします。
Power Automate for desktopではマクロの実行結果を直接受け取れない
Power Automate for desktopの「Excelマクロの実行」アクションは出力変数を生成しません。つまりマクロ実行結果をPower Automate for desktopに受け渡すことができません。このため以下のような処理にしました。
- マクロ実行する
- マクロ実行結果をマクロブックのセルに書き込む。
- Power Automate for desktopの「Excelワークシートから読み取り」アクションで読み取り。
- マクロブックを閉じる。
フロー作成の前に
Webページからファイルをダウンロードする方法は?
Webページからファイルをダウンロードする方法は、以前別の記事で解説していますので今回は簡単な解説しか行いません。詳しい解説をご覧になりたい方は下記をご参考になさってください。
▲Power Automate for desktopの「レコーダー」機能でWebページのUI要素を簡単に取得する方法について解説しています。
Power Automate for desktopでExcelマクロを実行するための事前知識は?
Power Automate for desktopでExcelマクロを実行するための事前知識については下記の記事で解説しています。あわせてご覧ください。Power Automate for desktopによるExcel マクロ実行におけるいくつかの制限について解説しています。
(STEP0)作業手順の確認
ここから実際に作業していきます。下記の手順で作業します。
やること
- 事前準備として実行するExcelマクロブックを用意します。
- Power Automate for desktopでフローを作成します。
- フローを実行します。
(STEP1)Excelマクロの作成
最初に準備としてマクロつくります。
VBE(Visual Basic for application Editor)が開きます。
Sub WriteExcel(FILENAME As String) Dim Book As Workbook Set Book = Excel.Workbooks.Open(FILENAME) '2つのセルに書き込みする。 With Book.Worksheets(1) .Range("B12").Value = "みかん" .Range("C12").Value = 400 End With 'マクロブックに更新された合計金額を記録する。 ThisWorkbook.Worksheets(1).Range("A1") = Book.Worksheets(1).Range("C17").Value '保存して閉じる。 Book.Close savechanges:=True Set Book = Nothing End Sub
▲今回記述したコードはこちらです。DLしたファイルのB12セル、C12セルの値を入力して上書き保存するマクロです。
「×」ボタンかAlt+F4を押してVBEを閉じます。
下記に保存しました。
- ファイル名:
C:\Users\user\Documents¥textMacrobook.xlsm
- マクロ名:
WriteExcel
(STEP2)Power Automate for desktopでフローを作成します。
フローの完成図はこちら
完成図です。
図のフローはIEを開いた後閉じ忘れているので、閉じるアクションを追加してください。
フロー作成手順
▲Power Automate for desktopの基本操作はこちらをご覧ください。
▲「ブラウザー自動化>新しいInternet Explorerを起動します」
▲パラメータを入力します。
- 起動モード:オートメーションブラウザーを起動します。
- 初期URL:ターゲットとなるWebページのURLを入力します。例:https://www.teijitaisya.com/scraping-testpage/
- ウィンドウの状態:標準
テスト用のWebページを下記に用意しました。自由にお使いください。
▲「Webページのダウンロードリンクをクリックします」アクションを追加します。
▲パラメータを入力します。
- Webブラウザーインスタンス:%Browser%
- UI要素:後述
- 保存先フォルダ―:ファイルをダウンロードするパスを指定します。(パスとは?)
UI要素を追加する方法については下記で解説しています。参考になさってください。
▲Excel>Excelの起動
▲パラメータを入力します。
- Excelの起動:次のドキュメントを開く
- ドキュメントパス:マクロブックのパスを選択します。(パスとは?)
- インスタンスを表示する:バックグラウンドで処理するか、フォアグラウンドで処理するかの設定です。
- 読み取り専用として開く:読み取り専用で開きたいのでチェックをオフにします。
- アドインとマクロの読み込み:チェックをオフにします。
▲「Excel>詳細>Excelマクロの実行」
▲パラメータを入力します。
- Excelインスタンス:%ExcelInstanse%
- マクロ:「マクロ名(;引数1;引数2;引数3)」という形式でマクロ名を指定します。
WriteExcel;%DownloadedFile.FullName%
今回実行するマクロ名は「WriteExcel」という名前です。引数としてWebからダウンロードしたExcelファイルのフルパスを欲しがっているので渡します。ファイルのフルパスは「Webページのダウンロードリンクをクリックします」の出力変数である%DownloadedFile%
変数のFullNameプロパティに格納されています。
▲「Excel>Excelワークシートから読み取り」
▲パラメータを入力します。
- Excelインスタンス:%ExcelInstanse%
- 取得:単一セルの値
- 先頭列:A
- 先頭行:1
▲Excel>Excelを閉じる
▲パラメータを入力します。
- Excelインスタンス:%ExcelInstanse%
- Excelを閉じる:ドキュメントを保存しない
マクロブックを閉じます。
▲「メッセージボックス>メッセージを表示」
▲パラメータを入力します。
- メッセージボックスのタイトル:合計金額が更新されました!
- 表示するメッセージ:%ExcelData%円だよ
%ExcelData%はSTEP6で追加した「Excelワークシートから読み取り」アクションの出力変数です。
補足:「Webブラウザーを閉じる」アクション忘れた。
「Webブラウザーを閉じる」アクションを忘れていました。このフローではブラウザーが開かれたままになってしまうので追加してください。「Excelの起動」アクションの手前に挿入するのが良いかと思います。
(STEP3)フローを実行します。
実行動画
(エラー)「Webページのダウンロードリンクをクリックします」アクションで失敗する
UI要素を特定できずに失敗している可能性があります。レコーダーを使ったUI要素の登録は完璧ではありません。セレクタービルダーを開いてUI要素を確認してチューニングしてください。
例えばスクレイピングテストページのExcelダウンロードリンクはレコーダーだけでは掴みきることができません。これはスクレイピングテストページにはダウンロードリンクが2つあるため、レコーダーが登録したUI要素の命令文(CSSセレクター)だとどちらのリンクなのかPower Automate for desktop自身がわからないためです。このためセレクタービルダーを開き最後のaタグの「ordinal と等しい -1」にチェックを入れます。これによってUI要素を確実に特定します。
Webからファイルをダウンロードするとき、同じファイル名が存在する場合
同じファイルが存在する場合の挙動については下記の記事で解説しています。
Excel VBAコード集
まとめ
以上、Power Automate for desktopでExcelマクロを実行して結果をPower Automate for desktopに渡す方法について学習しました。
このブログではRPA・ノーコードツール・VBA/GAS/Pythonを使った業務効率化などについて発信しています。
参考になりましたらブックマーク登録お願いします!
Power Automate学習教材
▲Kindleと紙媒体両方提供されています。デスクトップフロー、クラウドフロー両方の解説がある書籍です。解説の割合としてはデスクトップフロー7割・クラウドフロー3割程度の比率となっています。両者の概要をざっくり理解するのにオススメです。
▲Power Automate for Desktopの基本をしっかり学習するのにオススメです。この本の一番のメリットはデモWebシステム・デモ業務アプリを実際に使ってハンズオン形式で学習できる点です。本と同じシステム・アプリを使って学習できるので、本と自分の環境の違いによる「よく分からないエラー」で無駄に躓いて挫折してしまう可能性が低いです。この点でPower Automate for desktopの一冊目のテキストとしてオススメします。著者は日本屈指のRPAエンジニア集団である『ロボ研』さんです。
▲Power Automate クラウドフローの入門書です。初心者の方には図解も多く一番わかりやすいかと個人的に思っています。
Microsoft 365/ Power Automate / Power Platform / Google Apps Script…
▲Udemyで数少ないPower Automateクラウドフローを主題にした講座です。セール時は90%OFF(1200円~2000円弱)の価格になります。頻繁にセールを実施しているので絶対にセール時に購入してくださいね。満足がいかなければ返金保証制度がありますので安心してご購入いただけます。