VBAでPDFを分割する方法とは?高速に分割する方法も解説!


VBAでPDFを分割する方法がわからない・・・
PDFを手作業で分割する作業を自動化したい・・・

事務作業をしていると、PDFにまとめた資料を分割したいケースはありますよね。PDF専用の有料ツールをつかって手作業で分割することもできますが、数が多いとその作業だけで日が暮れてしまいますよね。できれば、VBAで自動化して作業効率化を図りたい・・・と思っている人もいるのではないでしょうか。

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

この記事では、VBAでPDFを分割する方法を解説します!

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

  • VBAでPDFを分割する方法を知りたい人
  • PDFの分割作業を効率化したい人

VBAでPDFを分割する方法とは?

はじめに、PDFを分割する方法について解説します。

VBAでPDFを分割する場合は、Acrobat Proと連携した分割方法がおすすめです。Acrobat Proは有料ツールですが、VBAで参照設定を追加してPDF操作ができるようになりますし、信頼のあるAdobe社が出しているPDFツールなので、動作も安定しています。

有料ですが無料体験期間もあるため、まずは無料で登録してからツールを作ってみて運用のしやすさで導入検討をしてみると良いかもしれませんね。

Acroabt Proのページはコチラ → https://acrobat.adobe.com/jp/ja/acrobat/acrobat-pro.html

無料で機能を作る方法もありますが、動作の保証がないためあまりおすすめはしません。ただ、個人で使う場合や有料ツールを導入できない場合は、以下がおすすめです!

引用:VBAでPDFファイルのページを分割(抽出)する[ExcelのTIPS]

※今回はAcrobat Proを導入していることを前提で話しを進めるので、パソコンに入っていない方は無料お試し期間中にツールを作り、社内で相談してみてくださいね。

VBAでPDFを分割する処理を作る手順

次に、VBAでPDFを分割する方法を解説します。

手順1:Acrobatを使うための参照設定追加

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

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

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

参照設定を開く

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

「Acrobat」を追加


「Microsoft Scripting Runtime」を追加

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

次に、VBAでPDFを分割する処理を書いていきます。

手順2:PDFを分割する処理を作る

次に、VBAでPDFを分割する処理を作る方法について解説します。

処理を作る手順は、大きく分けて次の流れになります。


■PDFを分割する処理を作る手順
以下をページの数分ループ処理する

  • 手順1:分割元のPDFファイルを開く
  • 手順2:不要なページを削除
  • 手順3:別名でPDFを保存
  • 手順4:分割元のPDFファイルを閉じる

サンプルコードを元に解説しますね。以下はC:\Users\Samurai\Desktop\PDF分割\にある請求書PDF_3ページ.pdfのファイルを、請求書PDF_1.pdf、請求書PDF_2.pdf、請求書PDF_3.pdfに分割するサンプルです。

実行前のフォルダ構成:

実行前のフォルダ構成

サンプルコード:

実行結果:

実行後のフォルダ構成

outputFileNameという名前の文字列型の配列を用意し、分割後のファイル名を3つリストに用意しています。リストの数分ループ処理をすることで、PDFを分割しています。

ループ処理の中では、それぞれ以下のように書くことで① ~ ④の処理をしています。

1. 分割元のPDFファイルを開く

まずは、Open処理でPDFを開き、開いたPDFをPDF_IDに入れて以降の処理を行っています。

2. 不要なページを削除

この処理では、ループ処理の回数に応じて不要なページを削除しています。1回目は3ページ目、2ページ目が不要なのでそれぞれDeletePagesの引数に「2」「1」を入れています。1ページ目は0から始まることに注意が必要ですね。

また、後ろのページから削除しないと削除する位置がずれてしまうので、そこも注意が必要です。具体的に言うと、先に2ページ目を削除してしまうと、3ページ目だったページが2ページ目になってしまうため、次削除するページ番号がズレてしまうのです。

3. 別名でPDFを保存

この処理では、outputFilePathに入れたファイルパスに別名で保存しています。

4. 分割元のPDFファイルを閉じる

最後に、分割元のPDFファイルを保存せずに閉じています。

慣れるまでは少し大変かもしれませんが、サンプルを動かしながら使い方を学んでいけばOKです!

ちなみに、複数のPDFファイルを結合する方法を以下で解説しています。合わせて覚えておくと汎用性が高まるので、おすすめです!

PDFを分割することが目的な方へ

ここまで、VBAでPDFを分割する処理を作る方法を解説してきました。

ただ、Acrobat Proの導入が難しい場合や、フリーツールを使ってVBAの処理を作るのが難しい・・・という方もいますよね。「PDFを分割すること」が目的であれば、フリーツール「pdftk」がおすすめです!

引用:pdftkの簡単な使い方とPDFの操作 https://jidouka.work/?p=304

以下のようなコマンドを、Windowsのコマンドプロンプト上で打つことでPDFを分割することができます。

また、コマンドプロンプトで実行するのではなく、拡張子が「.bat」形式のバッチファイルを作成し、上記のコマンドをファイルの数分実行するコードを書くことで、複数ファイルを一括で分割することもできます。

PDFを分割することが目的であれば、このように「別ツール + 別の言語」の組み合わせを考えるのも一つの手です。VBAでどうしてもツール化する必要がないのであれば、この方法もおすすめです!

ちなみに、VBAからコマンドプロンプトの処理を実行することもできます。興味がある方は、以下を見てみてくださいね!

【これでばっちり】VBAでコマンドプロンプトを使う方法
更新日 : 2019年3月29日

まとめ

今回は、VBAでPDFを分割する方法について解説しました。

Acrobat Proの無料体験期間を利用すれば、すぐにPDFファイルの分割処理を作ることができます。

ぜひ、作ってみてくださいね!

LINEで送る
Pocket

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

cta_under_bnr

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

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

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

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

書いた人

Sanshiro Wakizaka

Sanshiro Wakizaka

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

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

おすすめコンテンツ

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

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