VBAでPDFを印刷する方法・管理しやすいツールにする方法を解説!


VBAでPDFファイルを印刷する方法が知りたい・・・
できれば、方法だけでなく具体的なサンプルコードも知りたいな・・・
PDFファイルの印刷作業が自動化できるといいな・・・

事務や経理作業をしていると、PDFファイル印刷するケースはよくありますよね。月末に請求書を大量に印刷するケースや、社員向けに大量に印刷するケースはよくあります。数が多いと、手作業ではとても時間がかかってしまいますよね。

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

この記事では、VBAでPDFファイルを印刷する方法について解説します!

ただ印刷する方法だけでなく、部分一致でファイルを一括印刷する方法、フォルダ内のファイルを一括する方法など実務で使えるサンプルも用意しているので、ぜひ最後まで見てみてくださいね!

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

  • VBAでPDFファイルを印刷する方法を知りたい人
  • PDFファイルの印刷作業を効率化したい人

VBAでPDFを印刷する方法とは?

はじめに、VBAでPDFを印刷する方法について解説します。

VBAでPDFファイルを印刷するときは、Shellを使えばOKです。具体的には、次のようなShellコマンドを実行すると、PDFファイルを印刷することができます。

このコマンドを、VBAで実行する処理を作ることで、PDFファイル自動印刷できます。実行には参照設定の追加が必要なので、それぞれ詳しく解説しますね。

※無料で使えるAdobe Readerを使うので、インストールがまだの方は先にインストールをしてから進めてください。

Adobe Readerのインストール場所 → https://get.adobe.com/jp/reader/otherversions/

手順1:事前準備

まず、参照設定の追加方法について解説します。

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

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

参照設定を開く

2. 「Windows Script Host Object Model」を追加

「Windows Script Host Object Model」の追加

これで準備完了です。次に、具体的なVBAの書き方を解説しますね。

手順2:Shellコマンドを使ってPDF印刷処理を作る

次に、Shellコマンドを使ってPDF印刷処理を作る方法について解説します。

次のようにShellオブジェクトを作成し、Runメソッドを使うだけで簡単に実行することができます。ちなみに以下は、C:\Users\Siro\Desktop\PDF印刷_Shell\にある請求書PDF.pdfのファイルを印刷するサンプルです。

サンプルコード:

wshShellObj.Runの引数にAdobe Readerを使って印刷するコマンドを入れることで、印刷することができます。

ちなみに、printerNameにプリンター名を入れますが、プリンタ名は「Application.activePrinter」で調べることができます。イミディエイトウィンドウに「?Application.activePrinter」を入力してエンターキーを押すと、通常使っているプリンター名が確認できます。


プリンタ名を確認する方法

「on 〇〇」になっているところはプリンタのポートなので、今回は無視してOKです。Shellコマンドに慣れていない場合は少し苦戦するかもしれませんが、サンプルコードを動かしながら学んでいけばOKです!

VBAでPDFを印刷するファイルの指定方法とは?

ここまで、PDFファイルを印刷する処理の作り方を解説してきました。

ただ、1つのファイルだけ印刷できても、手作業で印刷するのと変わらないですよね。そのため、複数ファイルを一括で印刷する処理を作る方法を解説します。

方法1:ファイル内一括指定

1つ目は、特定フォルダを指定して一括で印刷する方法です。

具体的なサンプルコードを使って解説しますね。

指定フォルダにあるファイル一覧:

指定フォルダにあるファイル一覧

サンプルコード:

Dir関数のワイルドカードの指定を「*.pdf」にすることで、指定したフォルダのPDFファイルを一括で印刷しています。Dir関数と組み合わせて覚えておくと、応用が効くのでおすすめです!

ちなみに、Dir関数の詳しい使い方については以下で解説しています。興味がある方は、以下を見てみてくださいね!

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

方法2:ファイル名部分一致

2つ目は、部分一致でファイルを複数選択して印刷する方法です。ファイル名に特定の文字があるPDFファイルを一括で印刷したいときにおすすめの方法ですね。

具体的なサンプルコードを使って解説します。

指定フォルダにあるファイル一覧:

指定フォルダにあるファイル一覧

サンプルコード:

Dir関数にワイルドカード(*)を指定し、「請求書」の文字列が含まれているファイル名を取得しています。取得したファイル名が空になるまでDo While文でPDFファイルを印刷する処理を実行することで、「請求書」が含まれたファイルを一括で印刷しています。

このように、Dir関数を使えば複数ファイルを一括で印刷することができます。

VBAでPDF印刷が終わった後の管理がしやすくする方法

VBAでPDF一括印刷処理を作るときは、どこまで印刷が終わっているか管理したい・・・と思う人が多いのではないでしょうか。

いくら自動で印刷できても、印刷された紙を確認してどこまで終わったか確認するのでは非効率ですよね。一覧シートを作り手作業で印刷状態を管理することもできますが、終わったファイルはフォルダ移動するようにすれば完全に自動化することができます。

フォルダを移動する方法は以下で詳しく解説しているので、興味がある方は見てみてくださいね!

VBAのFileSystemObjectを使いこなす!便利なメソッドを5種類紹介
更新日 : 2019年6月25日

まとめ

今回は、VBAでPDFファイルを印刷する方法を解説しました。

VBAでツールを作ると、印刷する量に左右されずに完全自動で印刷することができます。

Adobe Readerは無料で使えるので、ぜひインストールしてVBAを書いてみてくださいね!

LINEで送る
Pocket

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

cta_under_bnr

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

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

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

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

書いた人

Sanshiro Wakizaka

Sanshiro Wakizaka

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

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

おすすめコンテンツ

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

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