PDFからテーブルを抽出する
引き続き、同じフローを使い、テーブルを抽出するアクションを追加します。または、ここまでのフローをコピーして、新規フローのワークスペースに貼り付けても構いません。
[1]テーブルを抽出する
[PDF]アクショングループの[PDFからテーブルを抽出する]アクションを配置すると、設定ダイアログが開きます。
設定ダイアログには、以下の設定を選択/入力し、保存します。
- PDFファイル:%Files[0]%
- エラー発生時-すべてのエラー:フロー実行を続行する
実行時には、抽出したテーブルがリスト変数ExtractedPDFTablesに格納されます。
[2]Excelを起動する
[Excel]アクショングループの[Excelの起動]アクションを配置すると、設定ダイアログが開きます。
設定すべきことはないので、そのまま保存します。
[3]Loopアクションを追加する
[ループ]アクショングループの[Loop]アクションを配置すると、設定ダイアログが開きます。
設定ダイアログには、以下の設定を入力し、保存します。
- 開始値:0
- 終了:%ExtractedPDFTables.Count - 1%
- 増分:1
- 生成された変数:%TableIndex%
[4]Excelシートの最初の空行を取得する
[Excel]アクショングループの[Excelワークシートから最初の空の列や行を取得]アクションを[Loop]-[End]の中に配置すると、設定ダイアログが開きます。
設定すべきことはないので、そのまま保存します。
[5]PDFのテーブルをデータテーブル変数として取得する
[変数]アクショングループの[変数の設定]アクションを[Loop]-[End]の中の末尾に配置すると、設定ダイアログが開きます。以下の設定を入力し、保存します。
- 変数:%Table%
- 値:%ExtractedPDFTables[TableIndex].DataTable%
[6]テーブルのヘッダーを変数に取得する
[変数]アクショングループの[変数の設定]アクションを[Loop]-[End]の中の末尾に配置すると、設定ダイアログが開きます。
設定ダイアログには、以下の設定を入力し、保存します。
- 変数:%Headers%
- 値:%Table.ColumnHeadersRow%
[7]テーブルのヘッダーをワークシートに書き込む
[Excel]アクショングループの[Excelワークシートに書き込み]アクションを[Loop]-[End]の中の末尾に配置すると、設定ダイアログが開きます。
設定ダイアログには、以下の設定を入力し、保存します。
- 書き込む値:%Headers%
- 列:1
- 行:%FirstFreeRow + 1%
[8]テーブルデータをワークシートに書き込む
[Excel]アクショングループの[Excelワークシートに書き込み]アクションを[Loop]-[End]の中の末尾に配置すると、設定ダイアログが開きます。
設定ダイアログには、以下の設定を入力し、保存します。
- 書き込む値:%Table%
- 列:1
- 行:%FirstFreeRow + 2%
- エラー発生時-すべてのエラー:フロー実行を続行する
[9]Excelシートを保存する
[Excel]アクショングループの[Excelの保存]アクションを[End]の後に配置すると、設定ダイアログが開きます。
設定ダイアログには、以下の設定を選択/入力し、保存します。
- 保存モード:名前をつけてドキュメントを保存
- ドキュメントパス:%NewFolder%\%FileName%_Tables.xlsx
[10]Excelを閉じる
[Excel]アクショングループの[Excelを閉じる]アクションをフローの末尾に配置すると、設定ダイアログが開きます。
設定すべきことはないので、そのまま保存します。
[11]フローを実行する
以上の手順を終えたら、フローを保存して実行します。フォルダが作成されて、PDFからテーブルが抽出されたExcelブックが作成されます(PDFからテーブルの抽出は意図通りにならない場合もあります)。
まとめ
Power Automate for Desktopのフローから、PDF形式のファイルを読み込んで、データを抽出するアクションを説明しました。
PDFからデータを抽出するアクションは、日々更新されるPDFから、データを読み込んで集計して分析するフローでの利用が考えられます。