【UiPath】複数枚の請求書(PDF)の項目を取得して、Excelに転記する方法

概要

3枚あるPDFの請求書(同一フォーマット)から、「日付」「会社名」「金額」の情報を取得して、Excelファイルに転記します

ワークフロー全体図

アクティビティ

特殊フォルダーのパスを取得
データテーブルを構築
繰り返し(フォルダー内の各ファイル)
アプリケーションを開く
テキストを取得
代入
アンカーベース
画像を探す
データ行を追加
アプリケーションを閉じる
Excelアプリケーションスコープ
範囲に書き込む

変数

[名前]|[変数の型]

dName|String
→マイドキュメントのパスを格納
proName|String
→プログラムファイルのパスを格納
SeikyushoTable|DataTable
→構築したテーブル
SeikyuDate|String
→請求書の発行日
Company|String
→会社名
Amount|String
→請求金額

作成手順

はじめに

①[パッケージを管理]から、PDFのパッケージをインストールする(UiPath.PDF.Activities)
②同一フォーマットで3つの「請求書PDF」を用意
(ここでは、「請求書サンプル_1.pdf」「請求書サンプル_2.pdf」「請求書サンプル_3.pdf」というファイル名で使用)
→「日付」「会社名」「金額」の情報を取得してExcelに転記します

③書き込み先のExcelファイルを用意
(ここでは、「請求書リスト.xlsx」というファイル名で使用)

1.【特殊フォルダーのパスを取得】アクティビティをドロップ

→「請求書PDF」は「ドキュメント」配下に格納してあります。汎用性を持たせる為、[MyDocuments]のパスを取得し、ファイルを指定する際のパスに使います

変数「dName」(String)を新規作成

2.【特殊フォルダーのパスを取得】アクティビティをドロップ

→「Adobe Acobat Reader」は「Program Files」配下にある為、[ProgramFilesX86]のパスを取得し、アプリケーションを開く際のパスに使います

変数「proName」(String)を新規作成

3.【データテーブルを構築】アクティビティをドロップ

下記のように列を作成

→PDFから取得した各情報が入ります

[データテーブル]:SeikyushoTable

4.【繰り返し(フォルダー内の各ファイル)】アクティビティをドロップ

請求書フォルダーを指定して、3つの請求書PDFを順番に取得

[フォルダー内]:dName + “\UiPath\uipathred\howto22\請求書”
→1で取得したパス(dName)から繋げます

5.【アプリケーションを開く】アクティビティをドロップ

①「請求書PDF」の一つを後ろに開き、[画面上でウィンドウを指定]からパスを取得。パスを下記のように書き換える
[ファイル名]:proName + “\Adobe\Acrobat Reader DC\Reader\acrord32.exe”
→2で取得したパス(proName)から繋げます

②[引数]で「請求書PDF」ファイルを指定する。「-Path 」(後ろの半角スペースは必要)を入れて、直接開くようにする
[引数]:”-Path ” + CurrentFile.ToString

③[セレクターを編集]から、ファイル名(例.請求書サンプル_1.pdf)を「ワイルドカード(*)」にする
title=’請求書サンプル_*.pdf

6.【テキストを取得】アクティビティをドロップ

①「日付」を取得。「請求書PDF」の一つを後ろに開き、[ウィンドウ内で要素を指定]から「日付」を取得

[値]:変数「SeikyuDate」(String)を新規作成

②[セレクターを編集]から、日付を「ワイルドカード(*)」にする
ctrl name=’* ‘

7.【代入】アクティビティをドロップ

→「日付」を取得した際、スペースや改行も取得される為、取るためにChr関数を使って置換します

[右辺値]:SeikyuDate.Replace(” “,””).Replace(Chr(13), “”).Replace(Chr(10), “”)
[左辺値]:SeikyuDate

8.【テキストを取得】アクティビティをドロップ

①「会社名」を取得。「請求書PDF」の一つを後ろに開き、[ウィンドウ内で要素を指定]から「会社名」を取得
[値]:変数「Company」(String)を新規作成

②[セレクターを編集]から、日付を「ワイルドカード(*)」にする
ctrl name=’* ‘

9.【代入】アクティビティをドロップ

→「会社名」を取得した際、スペースや改行も取得される為、取るためにChr関数を使って置換します

[右辺値]:Company.Replace(” “,””).Replace(Chr(13), “”).Replace(Chr(10), “”)
[左辺値]:Company

10.【アンカーベース】アクティビティをドロップ

→「請求金額」を取得する際、【画像を探す】アクティビティでアンカー位置を指定して安定化させます

[アンカー位置]:AnchorPosition.Left

11.【画像を探す】アクティビティをドロップ

「ご請求金額」の位置を囲み指定する

12.【テキストを取得】アクティビティをドロップ

「請求金額」を取得。「請求書PDF」の一つを後ろに開き、[ウィンドウ内で要素を指定]から「請求金額」を取得

[値]:変数「Amount」(String)を新規作成

※【アンカーベース】で指定している為、セレクターを編集は不要

13.【代入】アクティビティをドロップ

→「請求金額」を取得した際、スペースや改行も取得される為、取るためにChr関数を使って置換します

[右辺値]:Amount.Replace(” “,””).Replace(Chr(13), “”).Replace(Chr(10), “”)
[左辺値]:Amount

14.【データ行を追加】アクティビティをドロップ

[データテーブル]:SeikyushoTable
→3.【データテーブルを構築】で作成した変数を指定
[配列行]:{SeikyuDate,Company,Amount}
→「日付」「会社名」「金額」が入った変数を配列で指定

15.【アプリケーションを閉じる】アクティビティをドロップ

「請求書PDF」の一つを後ろに開き、[画面上で指定]からパスを取得

16.【Excelアプリケーションスコープ】アクティビティをドロップ

PDFから取得した書き込み先のExcelファイルを指定

17.【範囲に書き込む】アクティビティをドロップ

[シート名]:”Sheet1″
[開始セル]:”A1″
[データテーブル]:SeikyushoTable

実行結果

→各請求書PDFの「日付」「会社名」「金額」が転記されました