PDFファイルをエクセルに変換~虎の巻~

VBAができるのなら、PDFのエクセル変換はPower Automate Desktopを活用しよう!】

企業向けの仕事をしていると「PDFからの転記」処理に苦しんでいるシーンをよく見ます

もちろん世の中には自動変換ソフトをありますが、無料での打ち手となるとPower Queryしかありません

但し、Power Queryだと複数ページへの対応が難しかったりします

実は、

あまり知られていないですが、無料のPower Automate Desktopであれば複数ページでもエクセルへの変換は自由自在です

この記事ではPower Automate Desktopからエクセルに変換する方法をVBAのテクニックも交えながら解説します

ポイント

*****Sponsered Link***** ************************

今回のポイントは2つあります

1つにはPower Automate Desktopの「PDFからテキストを抽出」アクションを使用するだけでは駄目、ということです

このアクションを使えば、PDFからテキストを抜き出せます

但し、エクセルに書き込むと次のような形になります

1つのセルに収まってしまい、データとして活用できる形になりません

ですので、もう一つ工夫が必要です

2つ目は、1つ目のポイントの続きでもあるのですが、抽出したデータにルールを適用する必要がある、ということです

これはどういうことかというと、1つのセルに収まらないように工夫したとしても、抽出したデータは1列に収まります

つまり、PDFが複数ページある場合も1つの列に収まってしまうので、データとして活用するにはルールを見つけて分解する必要があります

この上記ポイント2つを踏まえた上で、本格的な解説に入ります

Power Automate Desktopによるデータ抽出

PDFからテキストを抽出・アクション

まずはこちらのアクションにより、PDFからデータ(テキスト)を抽出します

データを抽出するPDFファイルを指定した後、抽出するページを指定する欄があります

こちらはデフォルトの設定通り「すべて」を指定しておきましょう

テキストの分割

冒頭に記述したように「PDFからテキストを抽出・アクション」のみだと、データとして活用できません

画像に alt 属性が指定されていません。ファイル名: image-1.png

ですので「テキストの分割」アクションにより、データを分割する必要があります

この時、区切り記号には「新しい行」を指定してください

ここがある意味、今回の記事での最大のポイントかもしれません

そうすれば、以下のように複数行に分割されます

画像に alt 属性が指定されていません。ファイル名: image-2.png

VBAによる処理

キーワード

ここからはVBAにて、更にデータを実際に処理する形にできるように変換します

データの変換内容については、PDFの内容と使用目的次第なので詳細は今回の記事では書きませんが、最重要な内容だけ書きます

最重要の内容とは「キーワードの設定」です

例えば、今回の記事で使用しているPDFファイルの内容は複数の請求書です

ここから明細行のみを抽出したいとしたら、各PDFページにおける明細行の開始行と終了行が必要です

よく見ると、上の画像であれば、明細行は数量と小計の間に挟まっていることが分かります

正確には「数量」から始まる行の一つ下からと、「小計」から始まる行の一つ上までが明細行のスペースです

ですので、別シートに以下の画像のような表を作るのがいいです

こちらの表を上から読み込み、開始行と終了行を繰り返し取得すれば、複数ページ分の明細行が取得できることになります

実際のコードは次のような形になります

変数:iを使用して繰り返し処理を行うとしたら、条件式に合う行位置をそのまま変数:iで表現します

条件式については、LEFT関数で行の先頭の文字列を抽出して照合します

Split関数

こちらの関数はPDFを扱う時には良く使います

PDFからエクセルに変換すると、どうしても下のような形になるからです

1行の中にどうしても、複数のテキストが組み込まれてしまいます

ですので、こちらを分割する必要がでてきます

分割についてはSplit関数を使用します

詳細についてはこちらの記事⇒Split関数をご参照ください

VBAとの連携

VBAを作成したら、Power Automate Desktopから実行します

「Excelマクロの実行」アクションを使用し、下の画像のようにマクロ名を指定します

もし、引数を渡す必要がある場合にはマクロ名の後に;を指定し、その後に引数を指定します

<まとめ>

今回はPDFファイルをエクセルに変換する方法を紹介いたしました

Power Automate DesktopにてPDFファイルの内容をエクセルに落とし、更にPower Automate DesktopからVBAを動かすという流れになります

RPAとVBAが共存するところが、もしかしたら分かりにくかったかもしれません

ただRPAとVBAを共存させる方法は結構、便利ですのでこれを機会に取り組んでみるのもいいかもしれませんね

にほんブログ村 資格ブログ ビジネススキルへ

にほんブログ村

にほんブログ村 IT技術ブログ VBAへ

*****Sponsered Link***** ************************

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です