Windows 10 Power Automate Desktop で Excel セルの収集を行ってみました

実際のケースとして自動化をしたくなるのは単純作業の繰り返しではないでしょうか。

よくあるのは Excel のセルデータをコピーするというパターンとなります。

という訳で、どのような書き方をすればうまくいくのか見ていきたいと思います。

まず、読み取り元の Excel を見てみましょう。

今回は一つのフォルダーに対象となる Excel とそれ以外のファイルが置かれた場所を作りました。

対象となる Excel は同一フォーマットでそれぞれの B2 セルに値が書き込まれているというものとしています。

f:id:mohessu:20210323002329p:plain

こんな感じにデータを用意しました。

f:id:mohessu:20210323005449p:plain

まずは Power Automate Desktop を開き新しいフローを作っていきます。

f:id:mohessu:20210321220325p:plain

最初に選ぶのはフォルダーからファイルを選ぶところです。

f:id:mohessu:20210323011134p:plain

Excel ファイルを格納したフォルダーを選択し、必要に応じてフィルターを行います。
今回はフォルダー内に関連しないファイルが含まれるため、拡張子で絞りました。

f:id:mohessu:20210323004017p:plain

続いてアクションからデータを保存する Excel を起動します。

f:id:mohessu:20210323011249p:plain

ここで開く Excel はデータ保存用なので、データをすべて書き終えるまでは開きっぱなしにしておきましょう。タスク量が多くなる場合は途中で保存するとよいかもしれません。

f:id:mohessu:20210323011408p:plain

そして、イメージを付けずらい難関、変数を用意します。

この変数では各 Excel ファイルから読み取ったデータを書き出すときに書き出すセル位置を変更するために利用するおまじないとなります。

コード屋はすんなり入ってくるのですが、この概念になれるのは時間がかかりますよね。まずはこんなものと思いながら入力してみましょう。

変数の設定を押して変数を作ります。

f:id:mohessu:20210323011518p:plain

この変数には文字や数字など様々なデータを入れられます。

が、今回は数字を入れていきます。 0 を設定しておきましょう。

f:id:mohessu:20210323011831p:plain

次の工程で、漸く用意した Excel を起動していきます。
これまた難しい、ループの中にある For each をクリックします。

この For each では「繰り返し」動作を行う時に使うおまじないです。

複数の Excel を開くので、これを使うという訳です。

f:id:mohessu:20210323012106p:plain

最初に設定したファイルを取得したものに対して繰り返し動作を行っていきます。
実は先ほどフォルダーの Excel ファイルを取得しているのですが、先ほどのはファイルの場所の一覧であって、ファイルの場所ではありません。

For each を通すことで一覧からファイル一つを取り出す。という形になります。

もともととってきたファイルの一覧は {x} を押すことで選択できます。
Files という名前が Excel ファイルの一覧なのでそれを選びましょう。

f:id:mohessu:20210323012636p:plain

選択するとこんな感じになります。

生成された変数という項目がありますが、この名前を For each の中で使うことで Excel ファイルの場所を扱うことができるのです。

f:id:mohessu:20210323012337p:plain

こんな形になってきたでしょうか。

そろそろ折り返しなので頑張りましょう。

f:id:mohessu:20210323012843p:plain

次はまた Excel の起動です。
今度は最初に出てきた読み取り元の Excel を起動する形です。

Excel の起動を押していきましょう。

f:id:mohessu:20210323013206p:plain

今度は Excel ファイルの一覧から Excel を起動するという動作となるため、次のドキュメントを開くを選んでドキュメントパスに CurrentItem の .FullName を選択します。

f:id:mohessu:20210323003036p:plain

こんな感じですね。必要に応じて読み取り専用として開くことも検討しましょう。

f:id:mohessu:20210323002812p:plain

 

f:id:mohessu:20210323003350p:plain

これでデータの入った Excel が起動するため、今度はその中のセルを読み取っていきます。

セルの読み取りは Excel ワークシートか... となっているところから行えます。

f:id:mohessu:20210323013723p:plain

読み取りたい値はすべての Excel ブックで、アクティブセルの B2 セルに入っているため、以下のように設定します。

ここまでに Excel は 2 つ起動しているため ExcellInstance2 という名前のものがデータの入っている方ですね。 もう一つの Excel はデータを書き出す方です。

f:id:mohessu:20210323013834p:plain

読み取り終えたら Excel を閉じましょう。

f:id:mohessu:20210323014129p:plain

使わないデータは早々に閉じておくのが良いですね。

f:id:mohessu:20210323014143p:plain

続いて Excel の書き出し側です。

こちらはファイルごとにセルの位置を移動していく必要があります。

先ほど作った変数を操作して、セルの位置を変えていきましょう。

変数を大きくするを利用すると、指定したサイズだけ変数の値を変えられるのでこれを利用します。 

f:id:mohessu:20210323012009p:plain

こんな感じに 大きくする数値に 1 と入れると 1 回通るたびに 1 ずつ変数の値が大きくなっていきます。

Excel のセル位置を 1 ずつ変えられるということですね。

f:id:mohessu:20210323005208p:plain

この設定を終えたらいよいよ書き出しです。

Excel ワークシートに... を選ぶと特定のシートにデータを書き込めます。

f:id:mohessu:20210323014247p:plain

今回は Excel ファイルごとに行を変えていきたいので、行 に変数を指定します。

先ほど 1 大きくした変数を当てましょう。

For each の中で大きくしているので、次のファイルを読み込むときに大きくなります。

f:id:mohessu:20210323014401p:plain

こんな感じに表示されますね。
これで B 列の 1 行目から順にデータを書いていく形を作ることができました。

f:id:mohessu:20210323014920p:plain

全体像はこんな感じですね。

ちょっと長くなりましたが、これで特定のフォルダーにある Excel ファイルの B2 セルからデータをコピーして 1 つの Excel ファイルに書き出すことができました。

上の方にある 再生 ボタンを押すと動作確認することができます。

f:id:mohessu:20210323015826p:plain

f:id:mohessu:20210323014901p:plain

 

こんな感じにデータが取得されたかと思います。

f:id:mohessu:20210323005350p:plain

慣れると簡単なのですが、慣れるまでは大変なので、ぜひこの動きを覚えてみてくださいね。

音楽:形而上マチウド