🔖

[Excel VBA]PDFファイルのしおり作成ツール

2023/04/04に公開

概要

こちらの記事で紹介した自作モジュールを使用して、
Excel VBA(xlsmファイル)のサンプルコード(サンプルプログラム)を作成してみました。
作成したプログラムの機能は、しおりデータを含むPDFファイルを読み込みリストで出力する機能と、
Excel上に手入力したリストを元にPDFファイルにしおりデータを書き込む機能の2点があるプログラムです。

初心者の方は「インターネットで個々の情報は収集できるが、その情報を集約し実装する方法がわからない」という、
悩みをお持ちの方がいると思います。
(私が初心者の時は、そのような悩みを持っていました。)

PDFファイルのしおり作成ツールとしての参考情報だけでなく、私個人で作成してみた自作モジュールの使い方や、
Excel VBAの始め方(スタートアップ)としても、ご参考いただければと思います。
https://zenn.dev/haretokidoki/articles/8bde585e299549

この記事のターゲット

  • Excel VBAユーザーの方
  • Excel VBAでPDFファイルのしおりを作成したい方
  • 初心者の方(モジュールの使い方が分からない方)

サンプルプログラムの紹介

サンプルプログラムのシナリオは、とある帳票(PDFファイル)に対し、しおりデータを書き込むというシナリオ。

なお、しおりデータを含むPDFファイルを読み込んだ場合はExcelシート上にリスト出力できる機能もあり。

サンプルプログラム

https://github.com/akiGAMEBOY/ExcelVBA_CreatePdfBookmark

サンプルプログラムではすでに参照設定を設定済みの為、そのままサンプルプログラムを使う場合は設定不要だが、
サンプルプログラムを参考にExcel VBAツールを新規作成する場合は下記の参照設定を行う必要がある。

参照設定

VBAエディター[1]のメニューバー[ツール(T)] -> [参照設定(R)]で、
Acrobat[2]」をチェックを入れてOK。

Microsoft Visual Basic for Applicationの参照設定でAcrobatのチェックが入っている状態

仕様

Excel VBA(xlsmファイル)でPDFのしおり書き込みを行う。(読み込みも可)

画面はユーザーフォームではなくExcelシートを直接操作する。
Excelシート上のセルにある入力欄や直接配置されたボタンを操作する事でツールを実行する。

入力ファイルはPDFファイル。

しおりデータの書き込み実行時には、
ツールを実行しているパソコン内の「Adobe Acrobat」がバックグラウンドで起動され、
Excel VBA経由で操作して、しおりデータを書き込む。

しおりデータの読み込み実行時には、
ツールを実行しているパソコン内の「Adobe Acrobat」がバックグラウンドで起動され、
Excel VBA経由で操作して、しおりデータがExcelシートにリスト出力される。

画面仕様

画面構成

7種類のExcelシートで構成。

  1. シート「設定情報」
    変化点の情報を外だししたシート。
     
    ツールの根幹(基本的な仕様)は変わらず一部内容(入出力ファイルの構成など)のみが変化する場合、
    ツールを流用しやすくする為、変化点の情報を外だししている。
  2. シート「改版履歴」
    改版履歴。
  3. シート「メイン」
    ユーザーが操作するメインのシート。
     
    入出力データの参照先やボタンが配置されている。
  4. シート「エラー情報」
    ツールで発生したエラー情報が自動的に蓄積されるシート。
     
    エラーが発生した際、エラーメッセージがポップアップで表示されるが、ポップアップ表示のみだと、
    ユーザーが見落としてしまう可能性があり、ツール管理者に正確な情報が伝わる事を目的に作成。
  5. シート「入力データ」
    PDFファイルにしおりを書き込む際の入力データとなるシート。
     
    しおりはルートを0階層とし9階層までを入力限度(階層00~階層09)としている。
  6. シート「出力データ」
    PDFファイルのしおりを読み込んだ際に出力されるシート。
     
    上記の入力データと同様、ルートを0階層とし9階層までを表示限度(階層00~階層09)としている。

機能仕様

  1. しおり読み込み
    対象PDFファイルのしおりデータを読み込み、Excelシート上の“出力データ”にリスト出力する。
     
    表示限度は9階層まで(00階層~09階層)。限度を超えたPDFファイルを読み込むと例外エラーが発生する。
  2. しおり書き込み
    Excelシート上の“入力データ”を元にしおりデータを書き込む。
     
    入力限度は9階層まで(00階層~09階層)。
     
    対象PDFファイルにしおりを書き込む際は、最初にしおりを初期化(すべて削除)した後、
    しおりを書き込む仕様となる。

入出力ファイル

PDFファイル

メインシートにある対象ファイル欄で参照先を指定する。
 
ラジオボタンでしおり読み込みが選択されている際は、対象ファイル欄のPDFファイル内のしおりデータが読み込まれる。
ラジオボタンでしおり書き込みが選択されている際は、対象ファイル欄のPDFファイルにしおりデータが書き込まれる。

GitHub Repository

https://github.com/akiGAMEBOY/ExcelVBA_CreatePdfBookmark

フォルダー構成

ExcelVBA_CreatePdfBookmarkフォルダー内
ExcelVBA_CreatePdfBookmark
│  LICENSE.md
│  README.md
│  vbac.wsf                                         ・・・ソース管理支援ツール(ariawase)
│  vbac_Export.bat                                  ・・・xlsmファイル to テキストファイル(dcm or bas ...)
│  vbac_Import.bat                                  ・・・テキストファイル to xlsmファイル
│
├─bin
│  │  ExcelVBA_CreatePdfBookmark.xlsm               ・・・ツール本体
│  │
│  └─sampledata                                    ・・・サンプルの入力データ
│          pdf-bookmark-empty.pdf
│          pdf-bookmark-exists.pdf
│          pdf-bookmark-exists_over-diretory10.pdf
│          pdf-sourcedata.xlsx
│
└─src
    └─ExcelVBA_CreatePdfBookmark.xlsm               ・・・テキストファイル群(vbac_Export.batの結果)
            clsBookmarkdata.cls
            mdlAcrobat.bas                              ・・・Acrobat系の処理
            mdlCommon.bas                               ・・・自作モジュール
            Sheet1.dcm                                  ・・・設定情報の処理(初期化ボタン)
            Sheet3.dcm                                  ・・・メインの処理(しおり作成)

参考記事

流用したサンプルプログラム

https://zenn.dev/haretokidoki/articles/cb016a39a1562e

プログラム作成時に参考にした記事

関連記事

https://zenn.dev/haretokidoki/articles/152e606290b9a5
https://haretokidoki-blog.com/pasocon_microsoft365/

脚注
  1. Microsoft Visual Basic for Application:ショートカットキーは[Alt + F11]で起動 ↩︎

  2. Adobe Acrobat XI Proの場合 ↩︎

GitHubで編集を提案

Discussion