Power Automate Desktop 入力ダイアログで行単位のExcel転記

タイトル画像
スポンサーリンク
スポンサーリンク

前回ご紹介した、「Excelデータの列単位をループ転記」に、別のアクションを追加して、条件に合致した1行を別のExcelブックに転記する方法をご紹介します。

今回はExcelブックの給料一覧をPADに取り込み、「入力ダイアログ」に社員番号を入力し、該当した社員番号の1行を別のExcelブックに転記します。

●今回のアクションの流れ

1.特別なフォルダーを取得
2.Excelの起動
3.Excelワークシートから読み取り
4.Excelを閉じる
5.Excelの起動
6.Excelワークシートに書き込み
7.ループ条件
8.入力ダイアログを表示
9.If
10.For each
11.If
12.Excelワークシートから最初の空の列や行を取得
13.Excelワークシートに書き込み
14~17.End

※赤文字が今回追加するアクション

●転記する行を指定し、新しいExcelブックに転記します。

読み取りするExcelデータ

入力ダイアログに社員番号1,3,7と入力すると、別のExcelブックに行単位で転記されます。

転記されたExcel

フローの完成形

フローの完成形

実行動画

1.特別なフォルダーを取得

1.アクションの「フォルダー」から「特別なフォルダーを取得」をワークスペースにドラッグ&ドロップします。

特別なフォルダーを取得のパラメータ選択

私の場合はデスクトップのフォルダーにファイルを保存しているので、「特別なフォルダーの名前:デスクトップ」にしました。

特別なフォルダーを取得の詳しい説明は別の記事に掲載しております。該当記事はこちら

2.Excelの起動

Power Automate Desktopに読み取るExcelブックを選択します。

1.アクションの「Excel」から「Excelの起動」を「特別なフォルダーを取得」の下にドラッグ&ドロップします。

Excelの起動

ドキュメントパスに、ファイルが保存されている場所を指定します。

3.Excelワークシートから読み取り

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

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

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

取得:ワークシートに含まれる使用可能なすべての値

今回は単純な表形式で、タイトルや他に余計な数値も無いので、セル範囲ではなく、ワークシートに含まれる使用可能なすべての値を選択しました。

詳細:範囲の最初の行に列名が含まれています 

列名を取得したいので、チェックを入れます。

フロー実行後の変数(ExcelData)

変数に格納されるExcelData

すべてのワークシートを読み取りたい場合は、別の記事に掲載している「全てのワークシートからExcelDataを読み取る」を参照願います。

4.Excelを閉じる

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

Excelを閉じる

ドキュメントを保存しないでExcelを閉じます。

5.Excelの起動

転記先の空のExcelブックを開きます。

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

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

空のドキュメントを使用します。

生成された変数「ExcelInstance2

6.Excelワークシートに書き込み

空のExcelブックに見出しを転記します。

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

Excelワークシートに書き込みのパラメータ選択

Excelインスタンス:先ほどExcelの起動で、生成された変数「ExcelInstance2」を使用します。

書き込む値%ExcelData.ColumnHeadersRow%と入力します。
※ExcelDataの変数に格納されている、列名のデータをセルに書き込みます。

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

書き込みモード:セルを指定したいので「指定したセル上」を選択します。
今回はセルA1に書き込みたいので「」に「A」、「」に「1」を入力します。

ExcelのセルA1に書き込み

7.入力ダイアログを表示

入力ダイアログを表示して、社員番号を入力するアクションを設置します。

入力ダイアログ

1.「メッセージボックス」から「入力ダイアログを表示」を「Excelワークシートに書き込み」の下にドラッグ&ドロップします。

入力ダイアログを表示のパラメータ選択

入力ダイアログのタイトル:任意のタイトルを入力します。
今回は「社員番号」と入力します。
ユーザーにどのような行動を促したいか、タイトルでお知らせします。

・入力ダイアログのメッセージ:任意のメッセージを入力します。
社員番号を入力してください」と入力します。
ユーザーに伝えたいメッセージをお知らせします。

・既定値:ユーザーに入力してもらいたいので、空白にします。

・入力の種類:今回は文字数が少ないので、1行にします。

入力ダイアログを常に手前に表示する:手前に表示したいので、チェックを入れます。

生成された変数:

Userlnput     入力ダイアログで入力された社員番号を、IFで判定するために使用します。

ButtonPressed ループ条件やIFの最初のオペランドで使用します。

※自分で変数を変更することもできます。
今回は説明のため、変数をそのまま使用します。

8.ループ条件

転記が終わったら、「ループ条件」から「入力ダイアログを表示」に戻る処理を行います。

違う社員番号の行を転記したい場合は、「入力ダイアログを表示」に戻って、社員番号を入力します。

転記を終了したい場合は入力ダイアログのキャンセルを押します。

1.アクションにある「ループ」から「ループ条件」を「入力ダイアログを表示」のにドラッグ&ドロップします。

ループ条件を設置

2.ループ条件のパラメータを選択します。

ループ条件のパラメータ選択

最初のオペランド:入力ダイアログを表示で生成された変数 %ButtonPressed% を入力します。
{☓}から選択することが出来ます。

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

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

9.IF 条件分岐でキャンセル

次に、「入力ダイアログを表示」でキャンセルした場合に、それ以降の処理を行わないようにIFで処理します。

1.アクションにある「条件」から「IF」を「入力ダイアログを表示」の下にドラッグ&ドロップします。

IFのパラメータ選択

最初のオペランド:入力ダイアログを表示で生成された変数 %ButtonPressed% を入力します。
{☓}から選択することが出来ます。

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

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

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

10.For each

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

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

For each

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

11.IF

IF」アクションを使用して、「入力ダイアログを表示」で入力された社員番号の数字に該当する場合は、「Excelワークシートから最初の空の列や行を取得」と「Excelワークシートに書き込み」の処理を実行するよう設定します。

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

IFのパラメーターの選択

最初のオペランドと2番目のオペランドを比較します。

最初のオペランド:For eachで生成された変数 %Currentltem[‘社員番号’]% を入力します。

・演算子:「と等しい=」を選択します。
社員番号と同じ番号が入力された時に処理を実行します。

・2番目のオペランド:%Userlnput
入力ダイアログで表示で生成された変数を入力します。
入力ダイアログで入力された番号とCurrentltem[‘社員番号’]を比較します。

12.Excelワークシートから最初の空の列や行を取得

13.「Excelワークシートに書き込み」で空白行を取得するため、「Excelワークシートから最初の空の列や行を取得」のアクションを設置します。

1.アクションの「Excel」から「Excelワークシートから最初の空の列や行を取得」を上記「IF」の中にドラッグ&ドロップします。

Excelワークシートから最初の空の列や行を取得

Excelインスタンス:ExcelInstance2
生成された変数 FirseFreeRow(行)を次のアクションで使用します。

13.Excelワークシートに書き込み

入力ダイアログで入力された、社員番号の行を転記します。

1.アクションの「Excel」から「Excelワークシートに書き込み」を「Excelワークシートから最初の空の列や行を取得」の下にドラッグ&ドロップします。

Excelワークシートに書き込みのパラメータ選択

Excelインスタンス:先ほどExcelの起動で、生成された変数「ExcelInstance2」を使用します。

書き込む値%Currentltem%と入力します。

For eachCurrentltemにExcelDataが1行ずつ格納されているので、入力ダイアログで入力された社員番号のCurrentltemからExcelDataを取り出し、指定したセルに書き込みます。

書き込みモード:セルを指定したいので「指定したセル上」を選択します。
今回は列Aに書き込みたいので「」に「A」、「」に「%FirstFreeRow%」を入力します。
行に入力されたデータが上書きされないように、空白のセルに書き込みを行います。
「Excelワークシートから最初の空の列や行を取得」した変数FirstFreeRowを入力し、空白行を取得します。

以上で入力ダイアログで行単位のExcel転記の方法をご紹介しました。

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