Power Automate Desktop|Excelワークシートからデータを読み取る方法

Excelからデータを取得したい!

よくある作業ですよね!このページでは、Excelワークシートからデータを読み取るフローを解説します。フローを作成する方法を解説しているので、フローを作りながら理解してください。

店舗マスタ.xlsx

Excelワークシートからセルの値を読み取る方法は「Excelワークシートから値を読み取る方法」で解説したので、セルの値だけを読み取りたい場合は、そちらの記事をお読みください。

この記事の内容

それではどうぞ!

この記事を書いた人
この記事を書いた人
こさい
こさい

(株)完全自動化研究所代表のこさいです。

1) エンジニア歴25年超。RPA支援8年超
2) RPA関連の書籍を6冊出版。
3)ご質問・お仕事のご依頼はこちら

Excelワークシートからデータを読み取るフローを作成しよう

[店舗マスタ.xlsx]のデータを読み取るフローを解説します。実際にフローを作成しながら理解してください。まず準備してください。

準備

ドキュメントフォルダーに「PAD」というフォルダーを作成し、さらに「Data」というフォルダーを作成してください。「ドキュメントフォルダー\PAD\Data」というフォルダー構成となります。その中に「店舗マスタ.xlsx」を保存してください。

[店舗マスタ.xlsx]は下のボタンをクリックすることでダウンロードできます。

“店舗マスタ.xlsx” をダウンロード 店舗マスタ.xlsx – 357 回のダウンロード – 10.29 KB

「ドキュメントフォルダー\PAD\Data\店舗マスタ.xlsx」と配置されていることを確認してください。

フローを作成しよう

こさい
こさい

それではフローを作成していきましょう!

STEP1 [特別なフォルダーを取得]アクションを追加する

アクションペインで[フォルダー]アクショングループをクリックしてください。[特別なフォルダーを取得]アクションをワークスペースに追加してください。

STEP2 [特別なフォルダーを取得]アクションを設定する

[特別なフォルダーを取得]ダイアログが表示されます。[特別なフォルダーの名前]のドロップダウンリストをクリックし、[ドキュメント]をクリックしてください

[作成された変数]に[SpecialFolderPath]と表示されていることを確認して、[保存]をクリックしてください

STEP3 [Excelの起動]アクションを追加する

アクションペインの[Excel]アクショングループをクリックし、[Excelの起動]アクションを[特別なフォルダーを取得]の後に追加してください

STEP4 [Excelの起動]アクションを設定する

[Excelの起動]ダイアログが表示されます。[Excelの起動]の下矢印をクリックして、ドロップダウンリストの中の[次のドキュメントを開く]をクリックしてください

[ドキュメントパス]の[ファイルの選択]をクリックしてください

[ファイルの選択]ダイアログが表示されるので、[店舗マスタ.xlsx]を選択してください。[開く]をクリックしてください

[ドキュメントパス]に[店舗マスタ.xlsx]のパスが入力されます。OneDriveがデフォルトのドキュメントフォルダーに設定されている場合は、図とはパスが異なるので注意してください(HINTをお読みください)。

[ドキュメントパス]内のパスを選択し、「\PAD\Data\店舗マスタ.xlsx」(\マークはPADでは、バックスラッシュで表示されます)の前部分を削除してください(OneDriveがドキュメントフォルダーに設定されている場合はHINTをお読みください)。

[ドキュメントパス]の[変数の選択]をクリックして、表示されたメニューの中から[SpecialFolderPath]をクリックし、[選択]をクリックしてください

[ドキュメントパス]に「%SpecialFolderPath%\PAD\Data\店舗マスタ.xlsx」(\マークはPADでは、バックスラッシュで表示されます)となっていることを確認してください。これで、ログインユーザーが変わっても動作するようになりました。[保存]をクリックしてください

STEP5 [Excelワークシートから最初の空の列や行を取得]アクションを追加する

[Excel]アクショングループ内の[Excelワークシートから最初の空の列や行を取得]アクションを[Excelの起動]の後に追加してください

STEP6 [Excelワークシートから最初の空の列や行を取得]アクションを設定する

[Excelワークシートから最初の空の列や行を取得]ダイアログが表示されます。変数名が[FirstFreeColumn]と[FirstFreeRow]となっていることを確認してください。後ほど使用します。[保存]をクリックしてください

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

Excelワークシートからデータを読み取るには[Excelワークシートから読み取る]アクションを使用します。[Excelワークシートから読み取る]アクションはアクションペインの[Excel]アクショングループに格納されています。[Excelワークシートから読み取る]アクションを[Excelワークシートから最初の空の列や行を取得]の後に追加してください

STEP8 [Excelワークシートから読み取る]アクションを設定する

[Excelインスタンス]のドロップダウンリストで、操作するExcelインスタンスを選択してください

このアクションを使うには、[Excelの起動]アクションを使って、Excelのインスタンスを起動している必要があります。また、Excelのインスタンスが1つだけの場合は、[Excelインスタンス]のドロップダウンリストには最初からExcelインスタンス型変数が入力されています。

[取得]から[セル範囲の値]を選択してください。

[取得]から[セル範囲の値]を選択すると[先頭列]から[最終行]までが表示されます。[先頭列]に「A」と入力し、[先頭行]に「1」と入力してください。[最終列]の[変数の選択]をクリックして、表示された変数一覧の中の[FirstFreeColumn]をクリックし、[選択]をクリックしてください

[最終列]に「%FirstFreeColumn%」と入力されました。この「%FirstFreeColumn%」を「%FirstFreeColumn-1%」に変更してください。これで最終列が設定できました。

[最終行]も同様に設定していきます。[最終行]の[変数の選択]をクリックして、表示された変数一覧の中の[FirstFreeRow]をクリックし、[選択]をクリックしてください

[最終行]に「%FirstFreeRow%」と入力されました。この「%FirstFreeRow%」を「%FirstFreeRow-1%」に変更してください。これで最終行が設定できました。

[詳細]をクリックしてください。[詳細]項目が展開されます。[範囲の最初の行に列名が含まれています]を有効にしてください([範囲の最初の行に列名が含まれています]については「[範囲の最初の行に列名が含まれています]の設定について」で詳しく解説します)。[保存]をクリックしてください。読み取ったデータはデータテーブル型の変数[ExcelData]に格納されます(データテーブル型の変数については「データテーブルとは複数の値を1つの変数で管理できるデータ型」で詳しく解説します)。

こさい
こさい

お疲れ様です!これでフローは完成です。

フローを振り返ってみましょう。下図のようなフローが完成しているはずです。

フローを実行しよう

フローが完成したので、フローを保存して実行してください。[店舗マスタ.xlsx]が起動した状態で終了します。変数ペインの[ExcelData]をダブルクリックすると、[店舗マスタ.xlsx]の表が格納されていることがわかります。

[店舗マスタ.xlsx]の表がどのようにデータテーブル型変数[ExcelData]に格納されるかは、設定によって変わります。次のセクションで確認しましょう。

[範囲の最初の行に列名が含まれています]の設定について

[店舗マスタ.xlsx]の表がどのようにデータテーブル型変数[ExcelData]に格納されるかは、[範囲の最初の行に列名が含まれています]の設定で変わります。このレクチャーのフローでは、[範囲の最初の行に列名が含まれています]を有効にしたので、最初の行は列名として読み取られました。

[範囲の最初の行に列名が含まれています]を[無効]にしたら、最初の行を列名と見なさずデータとして読み取られます。ヘッダーは自動で生成されます。最初の行に列名が入っていないExcelデータもあるので、その場合はこちらの設定を使ってください。

データテーブルとは複数の値を1つの変数で管理できるデータ型

[Excelワークシートから読み取る]アクションで生成される変数[ExcelData]はデータテーブル型です。データテーブルについて詳しく解説します。

データテーブルとは複数の値を1つの変数で管理できるデータ型です。CSVファイルやExcelファイルのように表形式のデータの場合、データテーブル型の変数で管理します。データテーブルには行と列が含まれています。

格納されている値は、行と列の番号を使用して取得できます。「%変数名[行番号][列番号]%」と記述します。例えば、下図で「%ExcelData[3][2]%」と指定すると、「銀座」というテキストが取得できます。行番号/列番号は0番目から数え始める点に注意してください。

ワークシートに含まれる使用可能なすべての値を読み取るには

セル範囲を指定せずワークシートに含まれる使用可能なすべての値を読み取るには、[Excelワークシートから読み取る]ダイアログの[取得]のドロップダウンリストから[ワークシートに含まれる使用可能なすべての値を読み取る]を選択します。[セル範囲の値]を選択したときとは違い、行や列を指定する必要はありません。

[ワークシートに含まれる使用可能なすべての値を読み取る]の使うのは、1つのワークシートに表が1つだけしかないことが明らかな場合です。 セル範囲を指定しなくてよいので、[セル範囲の値]を指定した場合に比べて設定項目が少なくて済みます。

しかし、1つのワークシートに複数の表やコメントが混在している場合、もしくはその可能性がある場合は[セル範囲の値]を指定しましょう。

ちなみに、上図のデータを[ワークシートに含まれる使用可能なすべての値を読み取る]を指定して読み取ると、データテーブルにはこのように格納されます。このデータテーブルは利用できないそうにありませんね。

まとめ

このレクチャーでは、Excelデータを読み取る方法について解説しました。

Excelワークシート1つに対して1つの表が存在する場合は、範囲を指定せずに読み取ることができることがわかりました。つまり、「すでに整理されているExcelドキュメントはPADでも使いやすい」ということです。整理しないまま自動化するのではなく、最初にExcelドキュメント(もっと言えば、業務自体)を整理してから自動化することを心がけてください。

コメント ログインすると書き込めます