\ 楽天BLACK FRIDAYセール! /

Excelマクロを実行して値をPADに返す。

じょじお

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でやることの確認

STEP
WebページからExcelファイルをダウンロードします。
Power Automate for desktop

Webページ(スクレイピングテストページ)をPADでスクレイピングしてExcelダウンロードします。

STEP
ダウンロードしたExcelファイルに、Excelの書き込みを行うVBAマクロを実行します。
Power Automate for desktop excel
WebからダウンロードしたExcelファイル

▲図はWebからスクレイピングしてダウンロードしたExcelファイルです。Power Automate for desktopでVBAマクロを実行して、12行目の2つのセルに新しい品目と金額を書き込みを行います。(図の赤枠)

STEP
更新された合計金額を取得します。
Power Automate for desktop excel
WebからダウンロードしたExcelファイル

▲マクロで書き込みを行うと合計金額C17セルに入力されているSUM関数の値が更新されます。図では、もともとの合計金額600円が、マクロの書き込みにより1000円に更新されました。

Power Automate for desktop ecxel
マクロブック

▲更新された合計金額1000円という数字を一旦マクロブックに書き込みます。これをPower Automate for desktopで読み取ります。

わざわざマクロブックに書き込みを行う理由は、マクロからPADに直接値を受け渡しできないからです。

STEP
更新された合計金額をPower Automate for desktopで取得します。

取得出来たことの確認としてメッセージボックスに合計金額を表示することにします。

STEP
おわり

Power Automate for desktopではマクロの実行結果を直接受け取れない

Power Automate for desktopの「Excelマクロの実行」アクションは出力変数を生成しません。つまりマクロ実行結果をPower Automate for desktopに受け渡すことができません。このため以下のような処理にしました。

  1. マクロ実行する
  2. マクロ実行結果をマクロブックのセルに書き込む。
  3. Power Automate for desktopの「Excelワークシートから読み取り」アクションで読み取り。
  4. マクロブックを閉じる。

マクロ実行結果をマクロブックのセルに一時的に記録しておき、それをPADから読み取りにいきました。

フロー作成の前に

Webページからファイルをダウンロードする方法は?

Webページからファイルをダウンロードする方法は、以前別の記事で解説していますので今回は簡単な解説しか行いません。詳しい解説をご覧になりたい方は下記をご参考になさってください。

▲Power Automate for desktopの「レコーダー」機能でWebページのUI要素を簡単に取得する方法について解説しています。

Power Automate for desktopでExcelマクロを実行するための事前知識は?

Power Automate for desktopでExcelマクロを実行するための事前知識については下記の記事で解説しています。あわせてご覧ください。Power Automate for desktopによるExcel マクロ実行におけるいくつかの制限について解説しています。

(STEP0)作業手順の確認

じょじお

ここから実際に作業していきます。下記の手順で作業します。

やること

  1. 事前準備として実行するExcelマクロブックを用意します。
  2. Power Automate for desktopでフローを作成します。
  3. フローを実行します。

(STEP1)Excelマクロの作成

じょじお

最初に準備としてマクロつくります。

STEP
Excelファイルを新規作成します。
STEP
Alt+F11を押してVBEを開きます。

VBE(Visual Basic for application Editor)が開きます。

STEP
標準モジュールに新しいモジュールを作成します。
STEP
VBAコードを書きます。
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セルの値を入力して上書き保存するマクロです。

STEP
Visual Basic Editorを閉じます。

「×」ボタンかAlt+F4を押してVBEを閉じます。

STEP
Excelマクロ有効ブック(.xlsm)形式でブックを保存してExcelを閉じます。 

下記に保存しました。

  • ファイル名:C:\Users\user\Documents¥textMacrobook.xlsm
  • マクロ名:WriteExcel

(STEP2)Power Automate for desktopでフローを作成します。

フローの完成図はこちら

じょじお

完成図です。
図のフローはIEを開いた後閉じ忘れているので、閉じるアクションを追加してください。

Power Automate for desktop

フロー作成手順

STEP
Power Automate for desktopを開きます。

▲Power Automate for desktopの基本操作はこちらをご覧ください。

STEP
「新しいInternet Explorerを起動します」アクションを追加します。

ファイルのダウンロードに使う「Webページのダウンロードリンクをクリックします」アクションは、Internet Explorerにしか対応していません。必ずIEを選択してください。

Power Automate for desktop

▲「ブラウザー自動化>新しいInternet Explorerを起動します」

Power Automate for desktop

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

  • 起動モード:オートメーションブラウザーを起動します。
  • 初期URL:ターゲットとなるWebページのURLを入力します。例:https://www.teijitaisya.com/scraping-testpage/
  • ウィンドウの状態:標準

テスト用のWebページを下記に用意しました。自由にお使いください。

STEP
「Webページのダウンロードリンクをクリックします」アクションを追加します。
Power Automate for desktop

▲「Webページのダウンロードリンクをクリックします」アクションを追加します。

Power Automate for desktop

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

  • Webブラウザーインスタンス:%Browser%
  • UI要素:後述
  • 保存先フォルダ―:ファイルをダウンロードするパスを指定します。(パスとは?

UI要素を追加する方法については下記で解説しています。参考になさってください。

STEP
「Excelの起動」アクションを追加します。
Power Automate for desktop

▲Excel>Excelの起動

Power Automate for desktop

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

  • Excelの起動:次のドキュメントを開く
  • ドキュメントパス:マクロブックのパスを選択します。(パスとは?
  • インスタンスを表示する:バックグラウンドで処理するか、フォアグラウンドで処理するかの設定です。
  • 読み取り専用として開く:読み取り専用で開きたいのでチェックをオフにします。
  • アドインとマクロの読み込み:チェックをオフにします。

「アドインとマクロの読み込み」はExcelを開いた時にトリガー実行されるマクロが仕込まれている場合に、それを実行するかどうかの設定っぽいです(OnOpenトリガー)。今回ここで開くExcelブックのマクロを実行するわけなので一見この設定はオンにしなければいけないのかなと思いがちですが、そういうわけで今回は必要ありませんのでチェックをオフにします。

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

▲「Excel>詳細>Excelマクロの実行」

Power Automate for desktop

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

  • Excelインスタンス:%ExcelInstanse%
  • マクロ:「マクロ名(;引数1;引数2;引数3)」という形式でマクロ名を指定します。WriteExcel;%DownloadedFile.FullName%

今回実行するマクロ名は「WriteExcel」という名前です。引数としてWebからダウンロードしたExcelファイルのフルパスを欲しがっているので渡します。ファイルのフルパスは「Webページのダウンロードリンクをクリックします」の出力変数である%DownloadedFile%変数のFullNameプロパティに格納されています。

STEP
「Excelワークシートから読み取り」アクションを追加します。
Power Automate for desktop

▲「Excel>Excelワークシートから読み取り」

Power Automate for desktop

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

  • Excelインスタンス:%ExcelInstanse%
  • 取得:単一セルの値
  • 先頭列:A
  • 先頭行:1
STEP
「Excelを閉じる」アクションを追加します。
Power Automate for desktop

▲Excel>Excelを閉じる

Power Automate for desktop

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

  • Excelインスタンス:%ExcelInstanse%
  • Excelを閉じる:ドキュメントを保存しない

マクロブックを閉じます。

STEP
「メッセージを表示」アクションを追加します。
Power Automate for desktop

▲「メッセージボックス>メッセージを表示」

Power Automate for desktop

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

  • メッセージボックスのタイトル:合計金額が更新されました!
  • 表示するメッセージ:%ExcelData%円だよ

%ExcelData%はSTEP6で追加した「Excelワークシートから読み取り」アクションの出力変数です。

STEP
フローが完成しました。

補足:「Webブラウザーを閉じる」アクション忘れた。

「Webブラウザーを閉じる」アクションを忘れていました。このフローではブラウザーが開かれたままになってしまうので追加してください。「Excelの起動」アクションの手前に挿入するのが良いかと思います。

(STEP3)フローを実行します。

実行動画

(エラー)「Webページのダウンロードリンクをクリックします」アクションで失敗する

UI要素を特定できずに失敗している可能性があります。レコーダーを使ったUI要素の登録は完璧ではありません。セレクタービルダーを開いてUI要素を確認してチューニングしてください。

Power Automate for desktop

例えばスクレイピングテストページの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学習教材

Power AutomateをKindleで学びたい方はコチラ
¥2,200 (2022/12/06 08:56時点 | Amazon調べ)
\楽天スーパーセール開催中!/
楽天市場

▲Kindleと紙媒体両方提供されています。デスクトップフロー、クラウドフロー両方の解説がある書籍です。解説の割合としてはデスクトップフロー7割・クラウドフロー3割程度の比率となっています。両者の概要をざっくり理解するのにオススメです。

\楽天スーパーセール開催中!/
楽天市場

Power Automate for Desktopの基本をしっかり学習するのにオススメです。この本の一番のメリットはデモWebシステム・デモ業務アプリを実際に使ってハンズオン形式で学習できる点です。本と同じシステム・アプリを使って学習できるので、本と自分の環境の違いによる「よく分からないエラー」で無駄に躓いて挫折してしまう可能性が低いです。この点でPower Automate for desktopの一冊目のテキストとしてオススメします。著者は日本屈指のRPAエンジニア集団である『ロボ研』さんです。

¥2,750 (2022/12/06 08:56時点 | Amazon調べ)
\楽天スーパーセール開催中!/
楽天市場

Power Automate クラウドフローの入門書です。初心者の方には図解も多く一番わかりやすいかと個人的に思っています。

Microsoft 365/ Power Automate / Power Platform / Google Apps Script…

Power Automateを動画で学びたい方はコチラ

▲Udemyで数少ないPower Automateクラウドフローを主題にした講座です。セール時は90%OFF(1200円~2000円弱)の価格になります頻繁にセールを実施しているので絶対にセール時に購入してくださいね。満足がいかなければ返金保証制度がありますので安心してご購入いただけます。

お役に立てたらシェアお願いします!
  • URLをコピーしました!
  • URLをコピーしました!
目次