VBAでPDFファイルを読み込む方法を徹底解説!


VBAでPDFのデータを読み込む方法を知りたい・・・
具体的な手順やサンプルコードがあると嬉しいな・・・

PDFのデータをExcelに転記するような作業をしている場合、いちいちPDFを開いて入力するのはめんどくさいですよね。PDFを直接Excelで開いて、もっと効率的にデータ転記したいと思っている方もいるのではないでしょうか。

こんにちは!フリーランスエンジニア兼テックライターのワキザカです。

この記事では、VBAでPDFを読み込む方法について解説します。

この記事はこんな人のために書きました。

  • VBAからPDFを読み込む方法を知りたい人
  • PDFのデータ転記作業を効率化したい人

VBAでPDFを読み込む方法とは?

はじめに、VBAでPDFを読み込む方法について解説します。

VBAでPDFを読み込む方法はいくつかあります。フリーツールを使ってPDFを読み込む方法なども探せば出てきますが、動かなくなった時のサポートがなく対応ができなくなる可能性もあるため、AdobeのAcrobat Pro経由で処理を作ることがおすすめです!

Acrobat Proは有料ですが、

  • 参照設定を追加して処理を書くことができる
  • ネットに情報が多いため困った時に対処しやすい

という理由から、とてもおすすめです。

無料体験期間もあるため、まずはインストールしてVBAで処理を作ってみることがおすすめです。

Acrobat Pro DCのサイトはこちら → https://acrobat.adobe.com/jp/ja/acrobat/acrobat-pro.html

VBAでPDFを読み込む具体的な手順

ここからは、VBAでPDFを読み込む処理を作るための具体的な手順を解説します。

事前準備、VBAでPDFを読み込む処理を作る方法の流れで解説していきますね。

事前準備

まずは、VBAからAcrobatの処理を書くための参照設定を追加します。

手順は、次のとおりです。

1. VBEのツールタブから参照設定を開く

参照設定を開く

2. 「Acrobat」「Microsoft Scripting Runtime」の2つを追加

「Acrobat」を追加


「Microsoft Scripting Runtime」を追加

選択したら、OKボタンをクリックして設定完了です。これで、VBAからAcrobatを操作する準備ができました。

次に、具体的にPDFを読み込む処理を解説していきますね。

VBAでPDFを読み込む処理を作る方法

次に、VBAでPDFを読み込む処理を作る方法について解説します。

PDFのデータを読み込むときは、PDFのデータをテキストデータに変換する必要があります。具体的には、次の手順で処理を作っていきます。


■PDFのデータを読み込む処理を作る手順

  • 手順1:PDFファイルをAcrobatの機能を使ってテキストファイルに変換
  • 手順2:テキストファイルに変換したデータをインポート

具体的なサンプルコードを使って解説します。以下はC:\Users\Samurai\Desktop\部分一致テスト\にある【請求書】A00001.pdfを読み込むサンプルです。

メイン処理:

まず、メインの処理ではPDFファイルをテキストに変換するための「convPDFtoText」プロシージャと、テキストデータをExcelに読み込む「importTxtData」プロシージャを実行しています。

PDFファイルをテキストに変換する処理は、次のように書いています。

PDFをテキストに変換する処理:

「Acrobatを起動 → ファイルを指定して開く → テキストを指定して保存」の流れで処理を作っています。Acrobatを操作する時は、「Acrobat起動 → ファイルを指定して開く」の流れは必ず行うので、テンプレとして覚えてしまってOKです!

ちなみに、ファイル名やパスは変わる可能性が高いため、引数に入れて変更しやすいようにしています。

Excelにテキストファイルをインポートする処理は、次のように書いています。

テキストをExcelにインポートする処理:

テキストファイルのデータをインポートする方法はいくつかありますが、QueryTableが最も速くインポートできるので、QueryTableを使っています。QueryTableの使い方は以下で詳しく解説しているので、使ったことがない方は見てみてくださいね!

【ExcelVBA入門】QueryTablesメソッドで高速にファイルを読み込む方法
更新日 : 2019年5月23日

作ったサンプルを実行すると、次のようになります。

PDFのデータ:

PDFのデータ

処理実行前 – フォルダ:

処理実行前 – フォルダ

処理実行前 – Excel:

処理実行前 – Excel

処理実行後 – フォルダ:

処理実行後 – フォルダ

処理実行後 – Excel:

処理実行後 – Excel

PDFのデータをインポートすることができました。

VBAでPDFを読み込む処理の使いどころ

ここまで、VBAでPDFを読み込む方法について解説してきました。

PDFのデータを1件インポートするだけであれば、VBAを作るよりも直接見てコピペしたほうが早いですよね。ただ、1件のデータのみインポートしたいケースはほとんどなく、大量のデータをインポートしたい・・・ということが多いのではないでしょうか。

そのため、複数ファイルを一括でインポートする方法も覚えておくと便利です。詳しく解説しますね。

複数ファイル一括読込み

次に、複数ファイル一括読込み方法について解説します。

先ほど解説したサンプルを以下のように変更し、一括インポートできる処理を作っていきます。


■変更点

  • 手順1:メイン処理を複数ファイル分実行する処理に変更
  • 手順2:新規シートを作ってインポートする方法に変更
  • 手順3:新規シートのシート名は、PDFのファイル名を設定

メイン処理:

fileNameListという文字列型の配列を用意し、3つのファイル名をセットしてループ処理を作っています。フォルダ内のファイルを一括で読み込むような処理を作りたいときは、Dir関数を使うこともおすすめです!

以下で詳しく解説しているので、興味がある方は見てみてくださいね!

VBAでファイル名を取得するには?3+1のパターンで速攻理解!
更新日 : 2019年4月25日

テキストファイルをインポートする処理は、次のように変更しています。

テキストをExcelにインポートする処理:

「Worksheets.Add」でシートを追加し、「ActiveSheet.Name = strFileName」を追加して追加したシートの名前を、PDFファイルの名前と一致させています。このように、新規シートを作ってから読み込む処理に変更するだけで、簡単に複数ファイルを一括で読み込む処理を作ることができます。

実行すると、次のようにデータをインポートすることができました。


実行結果

「複数ファイルを一括でインポートする処理」をいきなり作ろうとすると少し大変ですが、1つのファイルをインポートする処理を作ってから複数ファイルを考えたので、ちょっとした変更で簡単に作ることができましたね。

Acrobat Proの購入が難しい方へ

ここまで、Acrobat Proを使ったPDF読み込み処理の作り方について解説してきました。

ただ、、、Acrobat Proは有料なので、有料ツールが導入できない環境だと今回のサンプルを使うことができません。そんなときは、PDFを作成するタイミングを考えてみてください。

請求データを使ってExcelでPDFを作成しているのであれば、そのタイミングでテキストデータさえ作っておけば、今回と同じような処理を作ることもできますよね。

また、PDFの読込みができなくても、PDFを開く作業を自動化することで少しだけ作業を楽にすることもできます。完全に自動化する方が楽にはなりますが、実現が難しい場合は別の方法を考えたり、規模をもう少し狭めて少しでも楽にできる方法がないか考えるのも一つの手です。

VBAからPDFを開く方法は以下で解説しているので、ぜひ見てみてくださいね!

VBAでPDFファイルを開く方法とは?使いどころも徹底解説!
更新日 : 2019年5月31日

まとめ

今回は、VBAでPDFを読み込む方法を解説しました。

PDFのデータが一括で読み込みできれば、作業が圧倒的に効率化することができます。

データ転記作業を定期的にしている方は、ぜひVBAでPDF自動読込機能を作ってみてくださいね!

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

Sanshiro Wakizaka

Sanshiro Wakizaka

フリーランスエンジニア兼ライターのワキザカ サンシロウです。
ExcelVBAの自動化ツール開発、WEB開発をメインにエンジニア業務をこなしつつ、サムライエンジニアにてライター業務をしております。

プログラミングをこれからやってみたい方に向けて、ためになる記事を全力で書いていきますので宜しくお願い致します!

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説