
給料の昇給にあたり、昇給表を作成したのですが、この昇給表から別の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ファイルの保存
今回は例として、従業員の昇給表を作成して、個々の昇給通知に自動転記していきます。


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

完成形はこちら


フローの完成動画
※まだPower Automate Desktopをダウンロードしていない場合は、当サイトの別の記事にダウンロード方法を掲載しています。関連記事はこちら↓
2.Excelのデータを用意する
今回は例として、従業員の昇給前、昇給後の昇給一覧表を作成して、別ファイルの昇給通知の様式に自動転記していきます。
転記に必要なExcelファイルを用意します。


左の昇給表の部署名、氏名、昇給前、昇給後のセル内容を、右の昇給通知書の黄色いセルに自動転記するフローを作成します。
※ファイルの保存先
今回はデスクトップにPADフロー\昇給通知\の名前のフォルダを作り、そこに「昇給表」と「2022年4月昇給通知書」の名前でファイルを保存しています。
フォルダ名やファイル名は、後で使用します。
3.Power Automate Desktopを起動
次に入力した項目をPower Automate Desktopに取り込みます。
1.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データの取込方法の詳しい説明を掲載しています。該当記事はこちら
7.実行テスト
ここまでで一度、フローの実行を行い、フロー変数にデータが格納されるか確認を行います。
1.上にある「▷実行」をクリックするか、メニューにあるデバックの▷実行をクリックして、フローの実行を行います。

2.フローが実行されたら、画面右側のフロー変数の場所に、アクションで生成された変数の中にデータが格納されました。
CurrentDateTime:2022/4/1 10:20:50 などのフローを実行した日時が入ります。
ExcelData:EXCELファイルから読み取ったデータが格納されています。
ExcelInstance:EXCELインスタンが入ります。
FirstFreeColumn:空白列を取ってきます。
FirstFreeRow:空白行を取ってきます。
SpecialFolderPath:特別なフォルダーを取得します。
上記の各フロー変数の青文字の名前の所をダブルクリックすることで、中身が確認できます。
試しに{☓}ExcelDateをダブルクリックして中身を確認してみます。


Excelワークシートから読み取りで読み取ったデータが格納されています。
・詳細をクリックして、列名を指定できるように「範囲の最初に列名が含まれています」にチェックを入れたので、#の行に列名が表示されています。
※注意点としてPower Automate DesktopはExcelと違い、最初の番号が0から始まります。
3.確認が終わったら「閉じる」をクリックします。
8.Excelの起動(転記先のファイル)
従業員の昇給表を作成して、個々の昇給通知に自動転記していきたいので、先ほど作成又は用意した、転記先のファイル(今回は例として2022年4月昇給通知書のExcelファイル)を開くアクションを追加します。
※転記先のファイルにはマクロを使用しますので、マクロ有効ブックで保存します。

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

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

3.次にドキュメントパス:右側にある{×}をクリックします。
今回は「特別なフォルダーを取得」を使用してパスを入力します。
特別なフォルダーを取得で生成された変数:「SpecialFolderPath」をダブルクリックします。

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

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

私の場合はデスクトップ上にファイルがあるので、%SpecialFolderPath%(デスクトップ)\フォルダ名\フォルダ名\ファイル名になっています。
5.ドキュメントパスにExcelファイルの場所を指定したら、「保存」をクリックします。
生成された変数はExcelInstance2です。
Loop内の設定ではExcelインスタンスの設定を、今作成したExcelInstance2を使用します。
今開いたExcelファイルに対して色々なアクションを行いたいので、ファイル名の代わりに、変数名を使用してアクションの設定を行います。
9.Loop
Loop処理を実行して人数分の昇給通知書を作成します。
一人ならLoop処理を使用しなくてもいいのですが、2人以上の場合は、最初に戻って同じ処理を繰り返して、人数分の作成を行います。
1.アクションのループで「Loop」をダブルクリックするか、「Excelの起動」の下にドラッグして、ワークスペースに追加します。

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

開始値:「0」と入力します。
※Power Automate DesktopはExcelと違い、最初の番号が0から始まります。
終了:%ExcelData.RowsCount – 1%を直接入力するか、右にある{☓}をクリックして、ExcelDataの.RowaCountをダブルクリックして-1を追加します。
※ExcelData.RowsCountとはExcelデータの行数が格納されています。
-1にするのは、0から始まるため、行数が2の場合、012と3回繰り返してしまうので、1行減らします。

増分:「1」と入力します。
Excelデータを1行ずつ処理したいので、1行終わったら、次の行に移動するため1を入力します。
3.設定が終わったら「保存」をクリックします。
9-1.アクティブなExcelワークシートの設定
次に開いたExcelファイルの、どのワークシートを使用するか設定します。
1.アクションのExcelで「アクティブなExcelワークシートの設定」を「Loop」の中にドラッグして、ワークスペースに追加します。

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

Excelインスタンス:先ほどExcelの起動で、生成された変数ExcelInstance2を使用します。
次と共にワークシートをアクティブ化:ワークシート名を使いたいので、名前を使用します。
ワークシート名:上記で作成した2022年4月昇給通知書のワークシート名を使います。
今回は例としてワークシート名を昇給通知書様式にします。

※他にもインデックス番号でワークシートをアクティブ化することも出来ます。
3.設定が終わったら保存をクリックします。
9-2.Excelワークシートに書き込み
次に開いたExcelファイルの、どのセルに転記するか設定します。
1.アクションのExcelで「Excelワークシートに書き込み」を「アクティブなExcelワークシートの設定」の下にドラッグして、ワークスペースに追加します。

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

Excelインスタンス:先ほどExcelの起動で、生成された変数ExcelInstance2を使用します。
書き込む値:%ExcelData[LoopIndex][‘部署名’]%と入力します。
※変数に格納されている、ExcelDataのLoopIndex行目にある、列名[‘部署名’]のデータをセルに書き込む操作を行います。
列名に文字列を使用しているので、文字列に'(シングルクォーテーション)で囲みます。
書き込みモード:書き込む値で取り込んだデータをセルに返します。
今回はセルE4に書き込みたいので「列」に「E」、「行」に「4」を入力します。

3.設定が終わったら保存をクリックします。
上記と同じ操作を繰り返して、残りのセルE6、E8、E10の設定を行います。

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ワークシートに書き込み」の下にドラッグして、ワークスペースに追加します。

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

Excelインスタンス:先ほどExcelの起動で、生成された変数ExcelInstance2を使用します。
マクロ:マクロ名のワークシートコピーを入力します。
3.設定が終わったら保存をクリックします。
9-4.Excelワークシートの名前を変更
マクロで実行した、ワークシートのコピーの名前を変更します。
1.アクションのExcelの詳細を展開して「Excelワークシートの名前を変更」を「Excelマクロの実行」の下にドラッグして、ワークスペースに追加します。

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

Excelインスタンス:ExcelInstance2
ワークシートの名前を次の変更:インデックス
ワークシートインデックス:「1」
マクロでコピーしたワークシートが、一番左に作成されるので、インデックス番号を1にします。
ワークシートの新しい名前:%ExcelData[LoopIndex][‘氏名’]%
ワークシートを氏名で分けたいので、[‘氏名’]を使います。
3.設定が終わったら保存をクリックします。
ここでLoop内の処理を終了します。
10.Excelの保存
全ての処理が終了したらExcelを保存します。
1.アクションのExcelで「Excelの保存」を「End」の下にドラッグして、ワークスペースに追加します。

2.「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ブックの納品書に転記します。
Excelブックの納品一覧から、別のExcelブックの請求書に自動で転記する方法をご紹介します。
納品数が多く1枚の請求書では書ききれない場合に、自動で2枚目の請求書に転記する方法もご紹介します。
これからもPower Automate Desktopを使った、業務の自動化の方法を掲載したいと思います。