実際のケースとして自動化をしたくなるのは単純作業の繰り返しではないでしょうか。
よくあるのは Excel のセルデータをコピーするというパターンとなります。
という訳で、どのような書き方をすればうまくいくのか見ていきたいと思います。
まず、読み取り元の Excel を見てみましょう。
今回は一つのフォルダーに対象となる Excel とそれ以外のファイルが置かれた場所を作りました。
対象となる Excel は同一フォーマットでそれぞれの B2 セルに値が書き込まれているというものとしています。
こんな感じにデータを用意しました。
まずは Power Automate Desktop を開き新しいフローを作っていきます。
最初に選ぶのはフォルダーからファイルを選ぶところです。
Excel ファイルを格納したフォルダーを選択し、必要に応じてフィルターを行います。
今回はフォルダー内に関連しないファイルが含まれるため、拡張子で絞りました。
続いてアクションからデータを保存する Excel を起動します。
ここで開く Excel はデータ保存用なので、データをすべて書き終えるまでは開きっぱなしにしておきましょう。タスク量が多くなる場合は途中で保存するとよいかもしれません。
そして、イメージを付けずらい難関、変数を用意します。
この変数では各 Excel ファイルから読み取ったデータを書き出すときに書き出すセル位置を変更するために利用するおまじないとなります。
コード屋はすんなり入ってくるのですが、この概念になれるのは時間がかかりますよね。まずはこんなものと思いながら入力してみましょう。
変数の設定を押して変数を作ります。
この変数には文字や数字など様々なデータを入れられます。
が、今回は数字を入れていきます。 0 を設定しておきましょう。
次の工程で、漸く用意した Excel を起動していきます。
これまた難しい、ループの中にある For each をクリックします。
この For each では「繰り返し」動作を行う時に使うおまじないです。
複数の Excel を開くので、これを使うという訳です。
最初に設定したファイルを取得したものに対して繰り返し動作を行っていきます。
実は先ほどフォルダーの Excel ファイルを取得しているのですが、先ほどのはファイルの場所の一覧であって、ファイルの場所ではありません。
For each を通すことで一覧からファイル一つを取り出す。という形になります。
もともととってきたファイルの一覧は {x} を押すことで選択できます。
Files という名前が Excel ファイルの一覧なのでそれを選びましょう。
選択するとこんな感じになります。
生成された変数という項目がありますが、この名前を For each の中で使うことで Excel ファイルの場所を扱うことができるのです。
こんな形になってきたでしょうか。
そろそろ折り返しなので頑張りましょう。
次はまた Excel の起動です。
今度は最初に出てきた読み取り元の Excel を起動する形です。
Excel の起動を押していきましょう。
今度は Excel ファイルの一覧から Excel を起動するという動作となるため、次のドキュメントを開くを選んでドキュメントパスに CurrentItem の .FullName を選択します。
こんな感じですね。必要に応じて読み取り専用として開くことも検討しましょう。
これでデータの入った Excel が起動するため、今度はその中のセルを読み取っていきます。
セルの読み取りは Excel ワークシートか... となっているところから行えます。
読み取りたい値はすべての Excel ブックで、アクティブセルの B2 セルに入っているため、以下のように設定します。
ここまでに Excel は 2 つ起動しているため ExcellInstance2 という名前のものがデータの入っている方ですね。 もう一つの Excel はデータを書き出す方です。
読み取り終えたら Excel を閉じましょう。
使わないデータは早々に閉じておくのが良いですね。
続いて Excel の書き出し側です。
こちらはファイルごとにセルの位置を移動していく必要があります。
先ほど作った変数を操作して、セルの位置を変えていきましょう。
変数を大きくするを利用すると、指定したサイズだけ変数の値を変えられるのでこれを利用します。
こんな感じに 大きくする数値に 1 と入れると 1 回通るたびに 1 ずつ変数の値が大きくなっていきます。
Excel のセル位置を 1 ずつ変えられるということですね。
この設定を終えたらいよいよ書き出しです。
Excel ワークシートに... を選ぶと特定のシートにデータを書き込めます。
今回は Excel ファイルごとに行を変えていきたいので、行 に変数を指定します。
先ほど 1 大きくした変数を当てましょう。
For each の中で大きくしているので、次のファイルを読み込むときに大きくなります。
こんな感じに表示されますね。
これで B 列の 1 行目から順にデータを書いていく形を作ることができました。
全体像はこんな感じですね。
ちょっと長くなりましたが、これで特定のフォルダーにある Excel ファイルの B2 セルからデータをコピーして 1 つの Excel ファイルに書き出すことができました。
上の方にある 再生 ボタンを押すと動作確認することができます。
こんな感じにデータが取得されたかと思います。
慣れると簡単なのですが、慣れるまでは大変なので、ぜひこの動きを覚えてみてくださいね。
音楽:形而上マチウド