Power Automate Desktop ExcelからExcelブックにループ転記

Excel転記のタイトル画像
スポンサーリンク
スポンサーリンク
ぴぴ
ぴぴ

給料の昇給にあたり、昇給表を作成したのですが、この昇給表から別のExcelブックに保存してある昇給通知書に昇給内容を転記したいのですが何か良い方法はありますか?

Excelで作成したブックの内容を、他のExcelブックに転記する方法を教えてください。

ピピンプイ
ピピンプイ

Power Automate Desktopを使えば簡単に、Excelブックから他のExcelブックに、セル内容を人数分自動で転記できますよ。

順を追って説明しますね。

今回は、Power Automate Desktop(パワーオートメイトデスクトップ)にExcelデータを取り込み、別のExcelブックに様式を作成しておき、そこに取り込んだExcelのデータを転記する方法をご紹介します。

1.作成手順

最初に作成手順を説明します。

1.転記元と先のExcelデータを用意
2.Power Automate Desktopを起動
3.現在の日時を取得
4.特別なフォルダーを取得
5.転記元のExcelデータを取り込む
6.転記先のExcelファイルに転記
7.マクロを作成して、ワークシートを追加
8.作成したExcelファイルの保存

今回は例として、従業員の昇給表を作成して、個々の昇給通知に自動転記していきます。

昇給表
昇給通知書

・個人別の昇給通知書が作成されます。

Excel転記の完成

完成形はこちら

ワークスペースにアクションの設置完了
ワークスペースにアクションの設置完了

フローの完成動画

※まだPower Automate Desktopをダウンロードしていない場合は、当サイトの別の記事にダウンロード方法を掲載しています。関連記事はこちら

2.Excelのデータを用意する

今回は例として、従業員の昇給前、昇給後の昇給一覧表を作成して、別ファイルの昇給通知の様式に自動転記していきます。

転記に必要なExcelファイルを用意します。

昇給表
昇給通知書

左の昇給表の部署名、氏名、昇給前、昇給後のセル内容を、右の昇給通知書の黄色いセルに自動転記するフローを作成します。

※ファイルの保存先

今回はデスクトップにPADフロー\昇給通知\の名前のフォルダを作り、そこに「昇給表」と「2022年4月昇給通知書」の名前でファイルを保存しています。

フォルダ名やファイル名は、後で使用します。

3.Power Automate Desktopを起動

次に入力した項目をPower Automate Desktopに取り込みます。

1.Power Automate Desktopを起動し、「+新しいフロー」を作成します。

Power Automate Desktopを起動

2.フローの内容が解かるように、フロー名を入力します。
3.フロー名を入力したら、下にある「作成」をクリックします。

フローの名の設定

新しいフローが作成されます。

4.現在の日時を取得

最初に、後でファイルを保存する時に、ファイ名に現在の日時を設定したいので、「現在の日時を取得」のアクションをMainのワークスペースに設置します。

1.左のアクションから「日時」の▷クリックして展開し、「現在の日時を取得します」をMainのワークスペースにドラッグ&ドロップします。

現在の日時を取得します

2.画面に「現在の日時を取得します」の設定画面が表示さるので、パラメータを設定します。

現在の日時を取得の設定

取得:現在の日時
タイムゾーン:システムタイムゾーン
生成された変数:CurrentDateTime

※変数とは文字や数値などのデータを一時的に、保管できる箱のようなものです。
今日の日時や明日の日時など、数値が変わる状況で、今の日時を使いたい場合に
変数名を使うことで、その時の日時を箱から自由に取り出せます。
変数には色々な型がありますが、Power Automate Desktopでは自動的に決まります。
日時はDatetime型に自動的に決定されます。

3.「保存」をクリックして設定を保存します。

Mainに「現在の日時を取得します」が設置されました。

現在の日時を取得の配置

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

次にデータを開く時に、デスクトップ環境がユーザー毎に違うので、特別なフォルダーを取得でユーザーに合わせたパス(ファイルの保存場所)を取得します。

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

特別なフォルダーを取得

今回はデスクトップにPADフロー\昇給通知\の名前のフォルダを作り、そこに「昇給表」と「2022年4月昇給通知書」の名前でファイルを保存していますので、デスクトップを選択しました。

SpecialFolderPathが:\Users\〇〇〇\デスクトップの代わりになります。

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

※順番通りにアクションが実行されますので、アクションをワークスペースに配置する際に、順番通りに配置します。

6.Excelデータの取込(転記元のファイル)

従業員の昇給表を作成して、個々の昇給通知に自動転記していきたいので、先ほど作成又は用意した、転記元のファイル(今回は例として昇給表のExcelファイル)をPower Automate Desktopに取り込みます。

昇給表

アクションの流れは
1.Excelの起動
2.アクティブなExcelワークシートの設定
3.Excelワークシートから最初の空の列や行を取得
4.Excelワークシートから読み取り
5.Excelを閉じる

Excelブックの取り込み
Excelの起動
アクティブなExcelワークシートの設定
Excelワークシートから最初の空の列や行を取得
Excelワークシートから読み取り
Excelを閉じる

※別の記事にExcelデータの取込方法の詳しい説明を掲載しています。該当記事はこちら

7.実行テスト

ここまでで一度、フローの実行を行い、フロー変数にデータが格納されるか確認を行います。

1.上にある「▷実行」をクリックするか、メニューにあるデバックの▷実行をクリックして、フローの実行を行います。

フローの実行

2.フローが実行されたら、画面右側のフロー変数の場所に、アクションで生成された変数の中にデータが格納されました。

CurrentDateTime:2022/4/1 10:20:50 などのフローを実行した日時が入ります。
ExcelData:EXCELファイルから読み取ったデータが格納されています。
ExcelInstance:EXCELインスタンが入ります。
FirstFreeColumn:空白列を取ってきます。
FirstFreeRow:空白行を取ってきます。
SpecialFolderPath:特別なフォルダーを取得します。

上記の各フロー変数の青文字の名前の所をダブルクリックすることで、中身が確認できます。
試しに{☓}ExcelDateをダブルクリックして中身を確認してみます。

Excelデータ
Excelデータ

Excelワークシートから読み取りで読み取ったデータが格納されています。
・詳細をクリックして、列名を指定できるように「範囲の最初に列名が含まれています」にチェックを入れたので、#の行に列名が表示されています。
※注意点としてPower Automate DesktopはExcelと違い、最初の番号が0から始まります。

3.確認が終わったら「閉じる」をクリックします。

8.Excelの起動(転記先のファイル)

従業員の昇給表を作成して、個々の昇給通知に自動転記していきたいので、先ほど作成又は用意した、転記先のファイル(今回は例として2022年4月昇給通知書のExcelファイル)を開くアクションを追加します。

※転記先のファイルにはマクロを使用しますので、マクロ有効ブックで保存します。

昇給通知書

1.まずは「Excelの起動」をExcelを閉じるの下にドラッグして、ワークスペースにExcelの起動のアクションを追加します。

Excelの起動

2.Excelの起動が表示されたら、Excelの起動:の右にある下向きの矢印をクリックして、「次のドキュメントを開く」を選択します。

Excelの起動の次のドキュメントを開く

3.次にドキュメントパス:右側にある{×}をクリックします。

今回は「特別なフォルダーを取得」を使用してパスを入力します。

特別なフォルダーを取得で生成された変数:「SpecialFolderPath」をダブルクリックします。

SpecialFolderPathの変数生成

ドキュメントパスに「SpecialFolderPath」が追加されました。

SpecialFolderPathの変数生成

4.次に%SpecialFolderPath%の後ろに、ファイルの置いてあるパス(ファイルの保存場所)を入力します。

ファイルの保存場所が解らない場合は、ドキュメントパスの横にある「ファイルを開く」で開いてから、%SpecialFolderPath%(デスクトップ)←ここを変更する\フォルダ名\フォルダ名\ファイル名

ドキュメントパス

私の場合はデスクトップ上にファイルがあるので、%SpecialFolderPath%(デスクトップ)\フォルダ名\フォルダ名\ファイル名になっています。

5.ドキュメントパスにExcelファイルの場所を指定したら、「保存」をクリックします。

生成された変数はExcelInstance2です。
Loop内の設定ではExcelインスタンスの設定を、今作成したExcelInstance2を使用します。
今開いたExcelファイルに対して色々なアクションを行いたいので、ファイル名の代わりに、変数名を使用してアクションの設定を行います。

9.Loop

Loop処理を実行して人数分の昇給通知書を作成します。

一人ならLoop処理を使用しなくてもいいのですが、2人以上の場合は、最初に戻って同じ処理を繰り返して、人数分の作成を行います。

1.アクションのループで「Loop」をダブルクリックするか、「Excelの起動」の下にドラッグして、ワークスペースに追加します。

Loopの設置

2.Loopの設定画面が表示されたら、下記の内容を入力します。

Loopの設定

開始値:「0」と入力します。
※Power Automate DesktopはExcelと違い、最初の番号が0から始まります。

終了:%ExcelData.RowsCount – 1%を直接入力するか、右にある{☓}をクリックして、ExcelDataの.RowaCountをダブルクリックして-1を追加します。

※ExcelData.RowsCountとはExcelデータの行数が格納されています。
-1にするのは、0から始まるため、行数が2の場合、012と3回繰り返してしまうので、1行減らします。

Loopの設定

増分:「1」と入力します。
Excelデータを1行ずつ処理したいので、1行終わったら、次の行に移動するため1を入力します。

3.設定が終わったら「保存」をクリックします。

9-1.アクティブなExcelワークシートの設定

次に開いたExcelファイルの、どのワークシートを使用するか設定します。

1.アクションのExcelで「アクティブなExcelワークシートの設定」を「Loop」の中にドラッグして、ワークスペースに追加します。

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

2.必要な設定を行います。

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

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

次と共にワークシートをアクティブ化:ワークシート名を使いたいので、名前を使用します。

ワークシート名:上記で作成した2022年4月昇給通知書のワークシート名を使います。
今回は例としてワークシート名を昇給通知書様式にします。

ワークシート名

※他にもインデックス番号でワークシートをアクティブ化することも出来ます。

3.設定が終わったら保存をクリックします。

9-2.Excelワークシートに書き込み

次に開いたExcelファイルの、どのセルに転記するか設定します。

1.アクションのExcelで「Excelワークシートに書き込み」を「アクティブなExcelワークシートの設定」の下にドラッグして、ワークスペースに追加します。

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

2.必要な設定を行います。

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

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

書き込む値:%ExcelData[LoopIndex][‘部署名’]%と入力します。

※変数に格納されている、ExcelDataのLoopIndex行目にある、列名[‘部署名’]のデータをセルに書き込む操作を行います。
列名に文字列を使用しているので、文字列に'(シングルクォーテーション)で囲みます。

書き込みモード:書き込む値で取り込んだデータをセルに返します。
今回はセルE4に書き込みたいので「」に「E」、「」に「4」を入力します。

昇給通知書

3.設定が終わったら保存をクリックします。

上記と同じ操作を繰り返して、残りのセルE6、E8、E10の設定を行います。

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

9-3.Excelマクロの実行

一端、Power Automate Desktopから、Excelに戻ってマクロを作成します。

書き込みが終わったワークシートをコピーしたいので、Power Automate Desktopのマクロの実行で使うマクロをExcelブックで作成します。

1.マクロの作成

1.転記元のExcelファイルを開きます。

マクロを使ってワークシートをコピー

マクロを使ってワークシートをコピーします。

2.開発タブの「マクロの記録」を開始します。

マクロの記録

※開発のタブが表示されていない場合は、下記の参考記事に詳しく設定方法を記載しております。

3.マクロ名を設定します。(今回は「ワークシートコピー」にしました)

マクロ名を設定

OKをクリックして、ワークシートのコピーの作業を記録します。

4.ワークシートを右クリックして、「移動またはコピー」をクリックします。

移動またはコピー

5.「コピーを作成する」にチェックを入れて「OK」をクリックします。

コピーを作成する

6.「記録終了」をクリックして、マクロの作成を終了します。

マクロの記録終了

7.記録が終了した後に、今コピーされたワークシートは使わないので削除します。

マクロの記録
ワークシートの削除

8.開発タブの「マクロ」をクリックして、マクロが実際に動くか実行してみます。

マクロの実行
マクロの実行

・マクロを実行し、ワークシートがコピーされたら、完成です。

・今コピーされたワークシートは使わないので削除します。

ワークシートの削除

9.マクロ有効ブックで保存して、Excelを閉じます。

※注意点として、8.Excelの起動(転記先のファイル)をマクロ有効ブックでファイル名を指定していない場合は、エラーになる可能性がありますので、8.Excelの起動(転記先のファイル)ファイル名を変更します。

2.Excelマクロの実行を使ってワークシートをコピーする

先ほど作成したマクロを使用します。

Power Automate Desktopに戻ります。

1.アクションのExcelの詳細を展開して「Excelマクロの実行」を「Excelワークシートに書き込み」の下にドラッグして、ワークスペースに追加します。

Excelマクロの実行

2.Excelマクロの実行の設定を行います。

Excelマクロの実行

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

マクロ:マクロ名ワークシートコピーを入力します。

3.設定が終わったら保存をクリックします。

9-4.Excelワークシートの名前を変更

マクロで実行した、ワークシートのコピーの名前を変更します。

1.アクションのExcelの詳細を展開して「Excelワークシートの名前を変更」を「Excelマクロの実行」の下にドラッグして、ワークスペースに追加します。

Excelワークシートの名前を変更

2.「Excelワークシートの名前を変更」の設定を行います。

Excelワークシートの名前を変更

Excelインスタンス:ExcelInstance2

ワークシートの名前を次の変更:インデックス

ワークシートインデックス:「1」

マクロでコピーしたワークシートが、一番左に作成されるので、インデックス番号を1にします。

ワークシートの新しい名前:%ExcelData[LoopIndex][‘氏名’]%

ワークシートを氏名で分けたいので、[‘氏名’]を使います。

3.設定が終わったら保存をクリックします。

ここでLoop内の処理を終了します。

10.Excelの保存

全ての処理が終了したらExcelを保存します。

1.アクションのExcelで「Excelの保存」を「End」の下にドラッグして、ワークスペースに追加します。

Excelの保存

2.「Excelの保存」の設定を行います。

Excelの保存

Excelインスタンス:ExcelInstance2

保存モード:名前を付けてドキュメントを保存

ドキュメント形式:既定

ドキュメントパス:詳細は下記に記載します。

%SpecialFolderPath%\PADフロー\昇給通知\%CurrentDateTime.Year%年%CurrentDateTime.Month%月%CurrentDateTime.Day%日昇給通知書.xlsm

ファイル名に日付を追加したいので、「現在の日時を取得します」で取得した年月日を使います。

ファイル名の内訳を説明します。
%特別なフォルダーを取得% \フォルダー名\ %最初に「現在の日時を取得します」で取得した年月日を使って、ファイル名に年月日を追加します。
%と%の間に年、月、日日昇給通知書.xlsmを入力します。

※フローが完成しました。

ワークスペースにアクションの設置完了
ワークスペースにアクションの設置完了

11.フローの実行

全てのアクションを設置し終えたら、フローを実行します。

1.上にある「▷実行」をクリックするか、メニューにあるデバッグの▷実行をクリックして、フローの実行を行います。

2.実行が始まったら、マウスやキーボードを動かさないで、待機します。

3.フローの実行がうまくいったら、個人の氏名が入力されているワークシートが作成されています。
個人ごとの昇給通知書が転記され、Excelファイルが保存されます。

完成

例として昇給通知書を作成しましたが、その他のExcelファイルでも試してみてください。

関連記事として、複数のExcelブックからセル内容をデスクトップ用PowerAutomateに読み取り、別のExcelブックのセルに転記する方法をご紹介します。

例として、納品した商品一覧のExcelブックから、別のExcelブックの納品書に品名、合計数量、単価、合計金額を転記する方法を掲載しています。

3つのExcelブックの納品内訳を、1つのExcelブックの納品書に転記します。

デスクトップ用PowerAutomate 複数のExcelブックからExcel転記

Excelブックの納品一覧から、別のExcelブックの請求書に自動で転記する方法をご紹介します。
納品数が多く1枚の請求書では書ききれない場合に、自動で2枚目の請求書に転記する方法もご紹介します。

複数のExcelブックから複数の様式にExcel転記

この他にも昇給表の部署から転記したい部署名を「入力ダイアログを表示」で入力し、特定の部署だけ昇給通知書に転記する方法をご紹介します。

IFで条件を指定してExcel転記

PADに数値を設定して、Excelブックの数値と比較し、該当した場合は別のExcelブックに転記するフローをご紹介します。
例として、従業員名簿から年齢を確認し、40歳なら「介護保険料控除開始のお知らせ」を、65歳なら「介護保険料控除終了のお知らせ」のExcelブックに自動で氏名を転記して保存する処理を行います。

数値を比較してExcel転記

これからもPower Automate Desktopを使った、業務の自動化の方法を掲載したいと思います。


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