【Power Automate Desktop】エクセルワークシートの値リストからフォルダを作成

1.やりたいこと

下図の通り、エクセルのワークシート A列に入力された値のリスト分のフォルダを作成する処理をPowerAutomateDesktopでフローを作成し実行します。単純な処理ですがPADの練習としてはよいのではないかと思います。

f:id:shusoshin:20210616145357g:plain

 

2.事前準備

今回は、作成したフローを継続的に使用することを想定して以下条件としました。

事前にPCのデスクトップに「TEST_Folder」という名前のフォルダを準備し、フローで作成したフォルダはこの中に入るようにします。

f:id:shusoshin:20210616145422g:plain

また、読み込み元のエクセルファイルを「TEST_File.xlsx」の名前で同フォルダに保管しておきます。 

※上記フォルダ、エクセルファイルの名称はなんでも構いません。

f:id:shusoshin:20210616145431g:plain

エクセルファイルの中身は次の通り。A列に入力されて値をフォルダ作成対象としますので、A1セル以下に入力しておきます。今回は、連番+_+47都道府県名としました。

※下図は、A列を2つに分けて表示しています。

f:id:shusoshin:20210616145446g:plain

3.実践(1)Excelの起動 ~ Excelワークシートdataの読み取り

PowerAutomateDesktop(プレビュー)から 新しいフローをクリックします。

f:id:shusoshin:20210616145504g:plain

任意のフロー名を入力して作成をクリックします。

f:id:shusoshin:20210616145558g:plain

まず、エクセルファイルからデータを読込むためのフローを作っていきます。

画面左のアクションから、Excel → Excelの起動をダブルクリック(又は右へドラッグ)します。

f:id:shusoshin:20210616145607g:plain

Excelの起動:次のドキュメントを開く を選択します。

ドキュメント パス: 右のファイルの選択ボタンをクリックし、TEST_Folderの中のTEST_File.xlsx を選択します。(又は直接パスを入力。)

f:id:shusoshin:20210616145615g:plain

f:id:shusoshin:20210616145623g:plain

インスタンスを表示する: エクセルを表示する必要はないのでオフにします。

読み取り専用として開く:どちらでも構いませんが、オープンエラーとならないようオンとしています。

詳細はデフォルトのままでよいので、これで保存をクリックします。

これにより、変数 ExcelInstance が生成されます。

f:id:shusoshin:20210616145630g:plain

ExcelExcelワークシートから最初の空の列や行を取得 をダブルクリックします。

これはワークシートからデータの範囲(最終行)を取得するためのアクションです。

f:id:shusoshin:20210616145648g:plain

Excelインスタンス:デフォルトで%ExcelInstance%が入るのでそのまま保存します。

変数 FirstFreeColumn と FirstFreeRow が生成されます。今回使うのは後者のみです。

f:id:shusoshin:20210616145655g:plain

ExcelExcelワークシートから読み取り をダブルクリックします。

f:id:shusoshin:20210616145720g:plain

Excelインスタンス: %ExcelInstance%(デフォルト値)

取得:  セル範囲の値 を選択

先頭列: 1 (A列)

先頭行: 1 (1行目)

最終列: 1 (A列)

最終行: %FirstFreeRow -1%    

   ※{X}をクリックし、FirstFreeRow を選択し、末尾に -1 と入力します。    

    FirstFreeRowは最初の空白行であり、データの最終行はその1行前と

    なるためです。

保存をクリックします。

変数 ExcelData で生成されます。

f:id:shusoshin:20210616145727g:plain

ExcelExcelを閉じる をダブルクリックします。

f:id:shusoshin:20210616145747g:plain

Excelインスタンス:%ExcelInstance%(デフォルト値)

Excelを閉じる前:ドキュメントを保存しない を選択します。

保存をクリックします。

f:id:shusoshin:20210616145816g:plain

4.補足  ~3.(1)実行動作確認~

ここは補足となりますので飛ばしても構いません。

下図は前項までに作成したフローです。全体としては途中段階ですが、ここまでで一度フローを実行してみます。

左上の実行ボタン▷ をクリックします。

f:id:shusoshin:20210616145944g:plain

インスタンスの表示をオフにしているので見た目のエクセルの動きはありませんが、フロー実行が完了すると、画面右の変数のフロー変数に中身が入ったことがわかります。試しに、前項最後に生成した変数 ExcelData をダブルクリックしてみます。

f:id:shusoshin:20210616150024g:plain

すると、エクセルから読み取ったDatatalbeが表示されます。下図は途中で見切れていますが、47都道府県分が変数としてきちんと取り込めたことがわかりました。

f:id:shusoshin:20210616150042g:plain

5.実践(2)ループ処理 For each でフォルダ作成

さて、フロー作成に戻ります。アクションから

ループ → For each をダブルクリックします。

f:id:shusoshin:20210616150217g:plain

パラメーターの選択

反復処理を行う値: 右の{X}をクリックし、ExcelData を選択します。

f:id:shusoshin:20210616150225g:plain

保存をクリックします。

変数 CurrentItem が生成されます。

f:id:shusoshin:20210616150233g:plain

フォルダー → フォルダーの作成 をダブルクリックします。

f:id:shusoshin:20210616150245g:plain

新しいフォルダーを次の場所に作成:

 右端のフォルダーの選択ボタンをクリックし、TEST_Folder を選択しOKをクリックします。(又は直接パスを入力)

f:id:shusoshin:20210616150252g:plain

f:id:shusoshin:20210616150301g:plain

新しいフォルダー名: 右端の{X}をクリックし、CurrentItem をクリックします。

f:id:shusoshin:20210616150307g:plain

保存をクリックします。ここまででフローの作成は完了です。

f:id:shusoshin:20210616150317g:plain

 

6.フロー実行

下図が作成したフロー全体です。左上の実行ボタン▷をクリックし実行してみます。

f:id:shusoshin:20210616150331g:plain

For each のところで47フォルダ分の処理が繰り返され、下図の通り47都道府県分のフォルダがTEST_Folderの中に作成されました。この数で実行時間は20秒でしたが、フローを保存し閉じた状態で実行した場合は5秒ほどで完了しました。

f:id:shusoshin:20210616150403g:plain

以上となります。