Power Automate Desktopの使い方(Excelからデータ入力するサンプル)

ichi3270です。

MicrosoftのPower Automate Desktop、最近話題になってますね。

無料でRPA!?
さっそく試してみよう~

超シンプルなサンプルとして、Excelの一覧表から、WEBシステムに社員データを登録するという操作を自動化してみたいと思います。

完成品はこんなの

Power Automate Desktopでは、こんなことができます。というサンプルです。

わかりにくいけどExcelの一覧から自動入力しています

Excelを開いて、上から順にWEBシステムに登録していっています。

インストール・設定

Power Automate Desktopのインストールや設定は、いたって簡単だったので、簡単にだけ説明します。

まずは、下記サイトからアプリをダウンロードして、インストールします。

Microsoft Power Automate

インストールが完了したら、指示通り、ブラウザの拡張機能をインストールしましょう。
私はGoogle Chromeを使っているので、そちらの拡張機能をインストールしました。

Google Chromeのリンクをクリック
Chromeに追加をクリック

ここまでできたら、コンピューターを再起動します。
再起動後、Power Automate Desktopを起動しましょう。

設定はとりあえずこれだけでOK~

フローを作成する

Power Automate Desktopを起動してログインしたら、+新しいフローをクリックして、フローの名前を入力し、作成をはじめましょう。

新しいフローをクリックした後、名前を設定する

Excelの社員名簿を開く

今回サンプル用に用意したファイルはこんな感じです。
このファイルの2行目から最終行までの社員を、Webシステムに登録するフローです。

あくまでサンプルなので超簡素・・・

ということで、フローの最初の動作はこのExcelファイルを開くことです。
早速、Power Automate Desktopで設定してみます。

Excelの起動 をダブルクリック(もしくは右側へドラッグ&ドロップ)
社員登録用のExcelファイルを開くように設定

画面下部に> 生成された変数 ExcelInstanceと表示されています。

これは、簡単に言うと、開いた社員登録.xlsxを、このフローの中ではExcelInstanceという名前で扱いますよ~という意味です。

早速、画面上部の▷ボタンを押して、Excelが起動するか試してみましょう。

▷を押すと社員登録.xlsxが開くはず

Google ChromeでWebシステムにアクセスする

次に、社員データを登録するWebシステムにChromeでアクセスする処理を作成します。

新しいChromeを起動する をダブルクリック(もしくは右側へドラッグ&ドロップ)
Webシステム(https://web-breeze.net/others/automate/syobosys.html)を開くように設定

こちらも、▷ボタンでテストをすると、Chromeで指定したサイトが開くことを確認できます。
なお、先ほどと同じように、>生成された変数が表示されています。

このGoogle Chromeは、Browserという名前で扱うということですね。

Excelからデータを取得する

さて、次は、先ほど開いた社員登録.xlsx(ExcelInstance)からデータを取得します。

事前にExcelの最終行を理解しておく

Excelファイルからデータを取得するには、表内のどこからどこまでを取得するのかを指定する必要があります。

社員登録.xlsxは、最初の行は1行目だけど、最後の行は時によって変わるんだけど・・・

やり方もいくつかありそうなのですが、今回はExcelワークシートから列における最初の空の行を取得を使ってみます。

なるほど~。空の行の1つ前が最終行だもんね~。

Excelワークシートから列における最初の空の行を取得 をダブルクリック(もしくは右側へドラッグ&ドロップ)
1列目(A列)の最初の空行を探す設定

このように設定すると、ExcelInstance(社員登録.xlsx)1列目(A列)が最初に空となる行行番号が取得できます。
今回のサンプルでは、5行目まで社員が入力されていたので、最初の空行である行番号=6が取得されます。

(ちなみに、ExcelInstanceが%で挟まれていますが、変数を使う時はそういうものだと思っておけばOKです。)

今回の生成された変数FirstFreeRowOnColumnという名前です。
取得した行番号が、FirstFreeRowOnColumnという名前で保存されたというイメージです。

Excelワークシートから読み取り

では、Excelシートからデータを読み取ってみましょう。

Excelワークシートから読み取り をダブルクリック(もしくは右側へドラッグ&ドロップ)
取得するデータの範囲を指定する

ExcelInstance(社員登録.xlsx)1列目~2列目1行目 ~ 最初の空行 – 1行の範囲を取得するよう設定しました。

先ほど、最初の空行はFirstFreeRowOnColumnという名前で保存しましたね。
最終行はその1つ前の行ですので、%FirstFreeRowOnColumn – 1%とします。

取得したデータは、ExcelDataという名前で保存されます。

▷ボタンでテストしてみましょう。
実行後に画面右側のフロー変数を見ると・・・4行、2列のデータが取得できたことがわかります。

4行 / 2列 のデータが取得できたことがわかる

ExcelDataから表示をクリックすると、データの中身が確認できます。

取得したデータ(ExcelData)の中身

これで、Excelデータの読み取りができました。

Web画面で社員データを登録

Excelデータから社員データの読み取りができたので、次は、Webシステムに入力するフローを作ります。

今回の例では、入力の手順は下記のようになります。

  1. 社員名のテキストボックスに入力
  2. 部署名のテキストボックスに入力
  3. 社員登録ボタンを押す
  4. 確認ダイアログが表示されるので、OKする

上記の動作を、取得した社員データの件数分、繰り返し実行すればよいです。

For eachで繰り返し処理

全てのデータに対して繰り返し処理を行うには、For eachが便利です。

For each をダブルクリック(もしくは右側へドラッグ&ドロップ)
%ExcelData%(Excelから取得したデータ)の全行に対して反復処理を行う
フローに For each と End が追加された

For eachEndがフローに追加されました。
この2つの間に処理を記述すると、ExcelData(Excelから取得したデータ)の各行に対して、その処理が実行されます。

CurrentItemは何なの?

CurrentItemには、処理中の行のデータが入っています。
1行目を処理している時は、CurrentItemのデータはExcelDataの1行目のデータ、
2行目を処理している時は、CurrentItemのデータはExcelDataの2行目のデータ
・・・が入る、と思ってください。

Google Chromeを操作

ここからは、取得したデータをWebシステムに登録する処理を作ります。

テキストボックスへの入力

まずは、Webシステムの社員名のテキストボックスにデータを入力する処理を追加します。

Webページ内のテキストフィールドに入力する をダブルクリック(もしくは右側へドラッグ&ドロップ)
UI要素 → 新しいUI要素の追加
要素にマウスカーソルを重ねた状態でCtrl + クリック
テキストに %CurrentItem[0]% を入力

*画面にはCtrl + 左矢印を押してからクリックと表示されますが、左矢印を押す必要はありません

これで、Webシステムの社員名のテキストボックスに、Excelの社員名を転記する処理ができました。テキストに設定した、%CurrentItem[0]%は、ExcelDataの処理中の行の1列目(社員名)のデータです。

1列目なのに [0] なことに気をつけてね。
プログラミングとかでは、0からスタートすることが日常茶飯事(?)です~

同じ手順で、部署名を入力する処理も作ってください。
テキストには、%CurrentItem[1]%を設定してくださいね。

ボタンのクリック

次に、社員登録ボタンをクリックする処理を作ります。

Webページのボタンを押します をダブルクリック(もしくは右側へドラッグ&ドロップ)

テキストボックスの時とほぼ同じ手順になりますので画像は割愛します。
UI要素の追加で、社員登録ボタンを追加して、保存すればOKです。

※ 今回のサンプルWebシステムは、ボタンを押してもページの読み込みが発生しないため、詳細ページが読み込まれるまで待機しますOFFにしました。

確認ダイアログにOKする

今回のWebシステムでは、社員登録ボタンを押すと、下図のようなダイアログが表示されます。

このOKボタンは、どうもUI要素の追加ができないようです・・・
(私の知識不足だったらすみません)

ということで、Webページのボタンを押しますが使えないので、キーボードのEnterキーを押す処理をフローに追加します。

キーの送信 をダブルクリック(もしくは右側へドラッグ&ドロップ)
特殊キーの挿入 → その他 → Enter

上図の操作で、Enterキーを押すという処理が追加できました。

フローの確認・実行

さて、今回作ったフローをあらためて確認してみてください。
もしも並び順が違う場合などは、ドラッグ&ドロップで順序の入れ替えができます。

完成したフロー

同じようにフローができていたら、▷ボタンで実行してみてください。
この記事冒頭の動画のように動くと思います。

コメント

  1. 竹本 より:

    始めまして。初心者です。
    とても勉強になります。
    質問してもよろしいでしょうか?

    例のように入力欄が最初から表示されていないような場合についてお聞きしたいです。

    例えば、Webシステムにリスト状に表示されているテキストをクリックして入力画面に行くような構成になっていて、リストは数ページにまたがり、表示されている場合。

    上から順にクリックして画面を開いては、決まった項目に入力する。
    を繰り返す場合はどのようにすれば良いでしょう?

  2. yoko ochiai より:

    わかりやすく説明いただきありがとうございます。
    まったく同じようにフローを組んでみましたが、8 Webページのボタンを押します の箇所でエラーになります。どういった対処が必要でしょうか。

  3. 鬼隊長 より:

    個人的には、今一番ホットな話題である「Power Automate Desktop」
    初学者ゆえ、大変参考になります。
    これは今後、VBAのようにこのスキルがあると、ビジネス上での強みになる予感がします。
    逆のパターン、Web上で収集したデータを自動的にエクセルファイルに書き込む方法もにも興味がありますね。