前回は、Excelブックから1つのワークシートのExcelDataを読み取る方法をご紹介しました。前回の記事
今回は、Excelブックから全てのワークシートのExcelDataを読み取る方法をご紹介します。
使用するアクション
1.特別なフォルダーを取得
2.新しいリストの作成
3.Excelの起動
4.すべてのExcelワークシートの取得
5.Loop
6.アクティブなExcelワークシートの設定
7.Excelワークシートから読み取り
8.項目をリストに追加
9.End
10.Excelを閉じる
使用するExcelブック
すべてのワークシートからExcelDataを読み取り、変数に格納します。
作成するフロー
順を追って説明します。
1.特別なフォルダーを取得
Excelブックの保存場所を指定します。
1.アクションの「フォルダー」から「特別なフォルダーを取得」をワークスペースにドラッグ&ドロップします。
私の場合はデスクトップのフォルダーにファイルを保存しているので、「特別なフォルダーの名前:デスクトップ」にしました。
※特別なフォルダーを取得の詳しい説明は別の記事に掲載しております。該当記事はこちら
2.新しいリストの作成
Loopを使用して、ワークシートの数だけ読み取りを行うと、Loopする度に、ExcelDataが上書されてしまうので、「新しいリストの作成」で生成した変数にExcelDataを格納します。
7.で使用する「Excelワークシートから読み取り」で取得したExcelDataを、ワークシートの数だけ「新しいリストの作成」で生成された変数に追加するアクションを設定します。
1.アクションの「変数」から「新しいリストの作成」をワークスペースにドラッグ&ドロップします。
※今回は区別しやすいように、生成された変数を任意の名前(ExcelDataList)に変更しました。
3.Excelの起動
Power Automate Desktopに読み取るExcelブックを選択します。
1.アクションの「Excel」から「Excelの起動」をワークスペースにドラッグ&ドロップします。
4.すべてのExcelワークシートの取得
すべてのExcelワークシートの取得からワークシートの数を取得します。
5.Loopアクションでワークシートの数だけ、ループ処理してExcelDataを取得するため、「すべてのExcelワークシートの取得」から生成されたSheetNames.Countを使用します。
SheetNames.Countにはワークシートの数が格納されているので、その数を利用してループ回数を自動で決定します。
1.アクションの「Excel」の「詳細」から「すべてのExcelワークシートの取得」をワークスペースにドラッグ&ドロップします。
フローの実行後
5.Loop
Loopアクションでワークシートの数だけ、ループ処理してExcelDataを取得します。
1.アクションの「ループ」から「Loop」をワークスペースにドラッグ&ドロップします。
開始値:1
6.で使用する「アクティブなExcelワークシートの設定」のワークシートインデックスに今回生成された変数LoopIndexを使用します。
次と共にワークシートをアクティブ化をインデックスに設定する場合、インデックス番号は1から始まりますので、開始値に1を入力します。
終了:%SheetNames.Count%
SheetNames.Countのカウント数だけ、ループさせます。
%SheetNames.Count%の選択方法
①パラメータ選択の終了:右側の{☓}をクリックします。
②SheetNamesの▷をクリックします。
③.Countをクリックして選択した状態にします。
④選択をクリックします。
増分:1
ループの数を1ずつ増やしていきます。
6.アクティブなExcelワークシートの設定
Excelブックから読み取りたい、ワークシートを設定します。
1.アクションの「Excel」から「アクティブなExcelワークシートの設定」をワークスペースにドラッグ&ドロップします。
今回は全てのワークシートからExcelDataを取得します。
次と共にワークシートをアクティブ化:インデックス
ワークシートを左から順番にインデックス番号で開いていきます。
ワークシートインデックス:%LoopIndex%
すべてのワークシートを開くために、ワークシートインデックスにLoopで生成された変数LoopIndexを使用し、ループの回数でインデックスの番号を取得します。
7.Excelワークシートから読み取り
Excelブックのワークシートから、読み取りたいセル範囲を設定します。
1.アクションの「Excel」から「Excelワークシートから読み取り」をワークスペースにドラッグ&ドロップします。
取得:ワークシートに含まれる使用可能なすべての値
今回は単純な表形式で、タイトルや他に余計な数値も無いので、セル範囲ではなく、ワークシートに含まれる使用可能なすべての値を選択しました。
詳細:範囲の最初の行に列名が含まれています
列名を取得したいので、チェックを入れます。
8.項目をリストに追加
「Excelワークシートから読み取り」で取得した「ExcelData」を、ワークシートの数だけ「新しいリストの作成」で生成された変数「ExcelDataList」に追加するアクションを設定します。
1.アクションの「変数」から「項目をリストに追加」をワークスペースにドラッグ&ドロップします。
項目の追加:%ExcelData%
追加先リスト:%ExcelDataList%
※新しいリストの作成で別の変数名を入力した場合は、その変数名を入力して下さい。
フローの実行後、ExcelDataListにExcelDataが入ります。
9.End
LoopとEndの中に下記のアクションを移動させます。
アクティブなExcelワークシートの設定
Excelワークシートから読み取り
項目をリストに追加
10.Excelを閉じる
1.アクションの「Excel」から「Excelを閉じる」をワークスペースにドラッグ&ドロップします。
今回はドキュメントを保存しないでExcelを閉じます。
以上で複数のExcelワークシートをPower Automate Desktopに読み取る方法をご紹介しました。
給与一覧のExcelブックから4月、5月、6月のワークシートをループ処理して、Power Automate Desktopに読み取ります。