Power Automate Desktop 複数のExcelブックからデータを取り出す

アイキャッチ画像
スポンサーリンク
スポンサーリンク
ピピンプイ
ピピンプイ

今回は複数のExcelブックから必要なデータを取り出し、新規のExcelブックに転記する方法をご紹介します。
手作業で複数のExcelブックを開いてコピーして、別のExcelブックに貼り付けるのは大変ですよね。
Power Automate Desktopなら自動化することができます。
例として複数の請求書の品名・数量・単価・金額のデータを新規のExcelブックに転記します。

○9月の請求書(Excelブック1つにワークシート2つ)

請求書A09-001
請求書A09-002

○10月の請求書(Excelブック1つにワークシート2つ)

請求書A10-001
請求書A10-002

○請求書からデータを取り出し、新規のExcelブックに転記

転記後のExcelブック

完成フロー

フロー番号1から16
フロー番号17から30

1.カスタムフォームを表示

「カスタムフォームを表示」アクションを使用して、ファイルを選択できるフォームを作成します。

1.アクションの「メッセージボックス」から「カスタムフォームを表示」をワークスペースにドラッグします。

追加するアクション
カスタムフォームを表示

2.パラメータ選択の「カスタムフォームデザイナー」をクリックします。

カスタムフォームデザイナー

3.フォーム要素の「入力」「要素」「アクション」から必要な要素をフォーム構造にドラッグ&ドロップします。

今回使用するフォームの要素は
テキストブロック(フォームのタイトルに使用)
ファイル入力(最初と2番目のファイルを選択)
切り替え入力(さらに別のファイルを選択する)
送信(ファイル選択後の処理)

カスタムフォームデザイナーの入力

テキストブロック

フォーム内容をタイトルでお知らせします。

カスタムフォームデザイナーのテキストブロックの入力


ID:Title
テキスト:PADに読み取るファイルを選択してください。
太さ:ボルダー

ファイル入力

ファイルを選択できるように「ファイル入力」を設置します。

カスタムフォームデザイナーの入力のファイル入力

ID:FirstFile
ラベル:最初のファイルを選択します。
検証:必須
エラーメッセージ:ファイルが選択されていません。
ファイルを選択しないで、「OK」ボタンを押した場合にエラーメッセージが表示できるように設定します。

切り替え入力

変数に値のTrueが含まれている場合、別のファイルを選択するように設定します。

カスタムフォームデザイナーの入力の切り替え入力

ID:AnotherFile
タイトル:さらに別のファイルを選択しますか?
有効時の値:True
無効時の値:False

送信

フォームの最後に「送信」ボタンを押して処理を実行します。

カスタムフォームデザイナーの入力の送信

ID:Submit
タイトル:Ok

2.新しいリストの作成

新しいリストの作成」で作成した変数に「カスタムフォームを表示」で選択したファイルを取り込みます。

1.アクションの「変数」から「新しいリストの作成」をワークスペースにドラッグします。

追加するアクション
新しいリストの作成
新しいリストの作成

変数を「File」に変更します。
※自分で解りやすい変数名に変更します。

3.If

次に、上記の「カスタムフォームを表示」で作成したフォームをキャンセルした場合に、それ以降の処理を行わないようにIFで処理します。

カスタムフォームを表示を閉じる

1.アクションの「条件」から「If」をドラッグします。

追加するアクション
If
IF

・最初のオペランド:カスタムフォームを表示で生成された変数 %ButtonPressed% を入力します。
{☓}から選択することが出来ます。

・演算子:と等しくない(<>) を選択します。

・2番目のオペランド:Cancelと入力します。

IFの条件分岐で、キャンセルではない(等しくない)場合に処理が実行されます。
キャンセルした場合は、処理が中断されます。

4.項目をリストに追加

カスタムフォームを表示した後、選択したファイルを「新しいリストの作成」で作成したリストに保存します。

1.アクションの「変数」から「項目をリストに追加」をドラッグします。

追加するアクション
項目をリストに追加
項目をリストに追加 firstfile

「カスタムフォームを表示」で生成された変数%CustomFormData[‘FirstFile’]%に入っているファイルを「新しいリストの作成」で作成した%File%に格納します。

5.変数の設定

「カスタムフォームを表示」で生成された変数%CustomFormData[‘AnotherFile’]%変数の設定でAnotherFileに値(TrueかFalse)を設定して、AnotherFile変数に値Trueが含まれている限り、ループを繰り返すように設定します。

1.アクションの「変数」から「変数の設定」をドラッグします。

追加するアクション
変数の設定
変数の設定 Another File

「カスタムフォームを表示」で生成された変数%CustomFormData[‘AnotherFile’]%変数の設定でAnotherFileに値を設定します
後でIFのアクションを使用して、Trueで処理を実行して別のファイルを選択できるようにします。

6.ループ条件

AnotherFile変数に値のTrueが含まれている限り、ループを繰り返すようにします。

1.アクションの「ループ」から「ループ条件」をドラッグします。

追加するアクション
ループ条件
ループ条件

・最初のオペランド:True

演算子:と等しい(=)を選択します。

・2番目のオペランド:True

7.If

最初のファイルだけ選択して、2つ目のファイルを選択しなかった場合に、「別のファイルを選択する」のループから抜けるか、さらに別のファイルを選択した場合の処理の設定を行います。

AnotherFileにTrueが格納されている場合にファイルの選択を求める処理を行います。

1.アクションの「条件」から「If」をドラッグします。

追加するアクション
IF
IF

・最初のオペランド:変数の設定で設定した変数 %AnotherFile% を入力します。
{☓}から選択することが出来ます。

・演算子:と等しい(=) を選択します。

・2番目のオペランド:Trueと入力します。

8.カスタムフォームを表示

別のファイルを選択できるようにします。

1.アクションの「メッセージボックス」から「カスタムフォームを表示」をワークスペースにドラッグします。

追加するアクション
カスタムホームを表示

2.パラメータ選択の「カスタムフォームデザイナー」をクリックします。

カスタムフォームを表示
カスタムフォームを表示 ファイル入力

・ID:AdditionalFile
・ラベル:別のファイルを選択してください。
・検証:必須

カスタムフォームを表示 切り替え入力

・ID:AnotherFile
・ラベル:別のファイルを選択しますか?
・タイトル:はい
・有効時の値:True
・無効時の値:False

カスタムフォームを表示 送信

・ID:Submit
・タイトル:Ok

※別のファイルを選択しなかった場合:Falseになります。

9.項目をリストに追加

カスタムフォームを表示した後、選択したファイルをリストに保存します。

1.アクションの「変数」から「項目をリストに追加」をドラッグします。

追加するアクション
項目をリストに追加
項目をリストに追加

「カスタムフォームを表示」で生成された変数%CustomFormData2[‘AdditionalFile’]%に入っているファイルを「新しいリストの作成」で作成した%File%に格納します。

10.変数の設定

2回目の「カスタムフォームを表示」で生成された変数%CustomFormData2[‘AnotherFile’]%変数の設定でAnotherFileに値(TrueかFalse)を設定して、AnotherFile変数に値Trueが含まれている限り、ループを繰り返すように設定します。

1.アクションの「変数」から「変数の設定」をドラッグします。

追加するアクション
変数の設定
変数の設定

「カスタムフォームを表示」で生成された変数%CustomFormData2[‘AnotherFile’]%変数の設定でAnotherFileに値を設定します

11~12.Elseとループを抜ける

ファイルを選択しなかった場合に、「別のファイルを選択する」のループから抜けます。

1.アクションの「条件」から「Else」をドラッグします。
2.アクションの「ループ」から「ループを抜ける」をドラッグします。

ループを抜ける

13~14.End

ループ条件とIfのEndの配置を確認します。

13~14.End

15.Excelの起動

アクション「Excelの起動」で請求書に記載されている内容を新規のExcelブックに転記するために、Excelの起動を設置します。

1.アクションの「Excel」から「Excelの起動」をワークスペースにドラッグ&ドロップします。

追加するアクション
Excelの起動
Excelの起動

・Excelの起動:空のドキュメントを使用

生成された変数をExcelに変更します。
(自分で判りやすい変数名に変更できます。)

16.変数の設定

上記のExcelの起動で転記する際に、次の行に自動で移動できるように変数を設定します。

1.アクションの「変数」から「変数の設定」をワークスペースにドラッグ&ドロップします。

追加するアクション
変数の設定
変数の設定

・変数の値:1

17.Loop

Excelブックの数だけ「ループ」するように設定します。

追加するアクション
Loop

1.アクションの「ループ」から「Loop」をワークスペースにドラッグ&ドロップします。

18のLoopを追加

・開始値:0
・終了:%File.Count-1%
・増分:1

18.Excelの起動(転記元のExcelブック)

カスタムフォームで選択したExcelブック(請求書)が、新しいリストで作成した変数「File」に格納されているので、Excelの起動で開きます。

追加するアクション
Excelの起動

1.アクションの「Excel」から「Excelの起動」をワークスペースにドラッグ&ドロップします。

19のExcelの起動の内容を変更

・ドキュメントパス:%File[LoopIndex]%
LoopIndexを使用してExcelブックの数だけループ処理します。

19.すべてのExcelワークシートの取得

LoopアクションでExcelブック(請求書)のワークシートの数だけループ処理するため、「すべてのExcelワークシートの取得」から生成されたSheetNames.Countを取得します。

SheetNames.Countにはワークシートの数が格納されているので、その数を利用してループ回数を自動で決定します。

追加するアクション
すべてのワークシートの取得

1.アクションの「Excel」の「詳細」から「すべてのExcelワークシートの取得」をワークスペースにドラッグ&ドロップします。

すべてのExcelワークシートの取得

・Excelインスタンス:%ExcelInstance%

20.Loop

LoopアクションでExcelブック(請求書)のワークシートの数だけ、ループ処理します。

今回は各請求書に2つのワークシートが作成されています。

ワークシート9月
ワークシート10月
追加するアクション
Loop

1.アクションの「ループ」から「Loop」をワークスペースにドラッグ&ドロップします。

Loopのパラメータの選択

開始値:

次と共にワークシートをアクティブ化」をインデックスに設定する場合、インデックス番号は1から始まりますので、開始値に1を入力します。

アクティブなExcelワークシートの設定

終了:%SheetNames.Count%

SheetNames.Countのカウント数だけ、ループさせます。

%SheetNames.Count%の選択方法
①パラメータ選択の終了:右側の{☓}をクリックします。
②SheetNamesの▷をクリックします。
③.Countをクリックして選択した状態にします。
④選択をクリックします。

SheetNames.Countを選択します。

増分:1
ループの数を1ずつ増やしていきます。

フロー番号21で使用する「アクティブなExcelワークシートの設定」のワークシートインデックスに今回生成された変数LoopIndexを使用します。

21.アクティブなExcelワークシートの設定

Excelブックから読み取りたい、ワークシートを設定します。

今回は全てのワークシートからExcelDataを取得します。

追加するアクション
アクティブなExcelワークシートの設定

1.アクションの「Excel」から「アクティブなExcelワークシートの設定」をワークスペースにドラッグ&ドロップします。

アクティブなExcelワークシートの設定

・Excelインスタンス:%ExcelInstance%

・次と共にワークシートをアクティブ化:インデックス
ワークシートを左から順番にインデックス番号で開いていきます。

・ワークシートインデックス:%LoopIndex%
すべてのワークシートを開くために、ワークシートインデックスにLoopで生成された変数LoopIndexを使用し、ループの回数でインデックスの番号を取得します。

22.Excelワークシートから読み取る

Excelブックのワークシートから、読み取りたいセル範囲を設定します。

追加するアクション
Excelワークシートから読み取る

1.アクションの「Excel」から「Excelワークシートから読み取」をワークスペースにドラッグ&ドロップします。

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

今回はセル範囲「B12からE25」のセル内容を取得します。

請求書のセルB12からE25を選択

・Excelインスタンス:%ExcelInstance%
・取得:セル範囲の値
・先頭列:B
・先頭行:12
・最終列:E
・最終行:25

23.For each

For each」アクションのループ処理で1行ずつ、請求書のExcelデータを変数Currentltemに格納します。

1.アクションの「ループ」から「For eachをドラッグ&ドロップします。

追加するアクション
Excelワークシートに書き込む
For each

反復処理を行う値:Excelワークシートから読み取りで生成された変数 %ExcelData%を入力します。
※今回生成された変数:CurrentltemにExcelDataが1行ずつ格納され、行数分ループします。

24.Excelワークシートに書き込む

請求書に記載されている内容を、新規のExcelブックに転記していきます。

追加するアクション
Excelワークシートに書き込む

1.アクションの「Excel」から「Excelワークシートに書き込む」をワークスペースにドラッグ&ドロップします。

Excelワークシートに書き込む

・Excelインスタンス:%Excel%
フロー番号15「Excelの起動」で設定した変数Excelを入力します。

・書き込む値:%CurrentItem%

行単位で転記するために、フロー番号23のFor eachの変数を使用します。

・書き込みモード:指定したセル上
・列:A
・行:%NewVar%
フロー番号16の「変数の設定」で設定した変数を使用します。

25.変数を大きくする

上記のExcelワークシートに書き込む(フロー番号24)で設定した行:%NewVar%に「変数を大きくする」でLoopする都度NewVarに+1していき、行番号を増やしていきます。

行番号を増やすことで、次の「」に自動で移動するように設定します。

追加するアクション
変数を大きくする

1.アクションの「変数」から「変数を大きくする」をワークスペースにドラッグ&ドロップします。

変数を大きくする

・変数名:%NewVar%

・大きくする数値:1

26~27.End

Endを適切な位置に配置します。

LoopからEndまで

28.Excelを閉じる(フロー番号28)

カスタムフォームから選択したExcelブック(納品一覧表)を閉じます。

追加するアクション
Excelを閉じる

1.アクションの「Excel」から「Excelを閉じる」をワークスペースにドラッグ&ドロップします。

Excelを閉じる

・Excelインスタンス:%ExcelInstance%
・Excelを閉じる前:ドキュメントを保存しない

29~30.End

Endを適切な位置に配置します。

フロー番号1から16
フロー番号17から30

以上で複数のExcelブックからデータを取り出す方法をご紹介しました。

関連記事として複数のExcelブックの取り扱い方法をご紹介します。

タイトルとURLをコピーしました