タイトルのテキスト
タイトルのテキスト
タイトルのテキスト
タイトルのテキスト

VBAでPDFを一括で印刷するプログラムを作った。【CreateObject関数】

VBA

t f B! P L

 

pdfを一括でプリントアウトする画像

PDFを一括でプリントアウトしたい場合、CreateObject関数を用いてShellコマンドを使うと簡単にできます。

VBAShellコマンドを使いたい場合、参照設定から「Windows Script Host Object Model」を追加する方法とCreateObject関数を使う方法の2パターンあります。

参照設定を行う方法の方がメジャーかもしれません。

しかし、参照設定を行う方法では、ファイルごとに設定を行わなければならないため、他のファイルにコードをコピーしただけではエラーになってしまいます。

今回は、この場合CreateObject関数を使う方法を紹介したいと思います。

〇やりたいこと

僕が今回やりたかったことは、ExcelファイルのシートにPDFのファイルパスの一覧があります。そのファイルパスから、まとめてPDFを一括で印刷したいです。

〇作ったコード

本来は、関連したキーワードをもとに、PDFのデータベースフォルダーから、Excel上に読み込んで使用しているのですが、ExcelPDFを読み込むとどうしても画質が落ちてしまいます。Excelに読み込むので、自分で内容を確認するときにはこちらが便利なのですが、客先などに提出する場合には、そのまま印刷したいです。しかし、対象のPDFがたくさんある場合は、一つずつ印刷するのは非常にめんどくさいです。

なので、以下のコードをつくりました。

Range("A1").Select

Do Until ActiveCell.Value = ""

failpass = ActiveCell.Value

prn = "プリンター名"

pdf = "Acrobat.exe /t " & failpass & " " & prn

CreateObject("Wscript.Shell").Run (pdf)

Loop

これで、ファイルパスの一覧のPDFを一括で印刷することができます。

〇コードの解説

・表のファイルパスが格納されている表の先頭を選択。

Range("A1").Select

・表のが空になるまでループ処理を行います。

Do Until ActiveCell.Value = ""

・セルに格納されているファイルパスを変数に格納しています。

failpass = ActiveCell.Value

・プリンター名を変数に格納しています。

prn = "プリンター名"

・アクロバットリーダーのプログラムを変数に格納しています。

pdf = "Acrobat.exe /t " & failpass & " " & prn

CreateObject関数を使用してShellコマンドを生成して、Runで動かしています。

CreateObject("Wscript.Shell").Run (pdf)

・ループ処理終わり

Loop

ちなみに・・・

現在のプリンター名は

Range("D4").Value =  Application.ActivePrinter

でセルD4に現在の設定しているプリンター名を出力することができます。

セルD4は適当なので、任意のセルに出力させてください。

Acrobat.exe /tの部分は、

64ビット版のOSを使用している場合は

Acrobat.exe /t

32ビット版の場合は、

AcroRd32.exe /t

と使い分けて下さい。

途中の半角スペースに注意してください。

合体させると

Acrobat.exe /t failpass プリンター名

となります。

〇まとめ

今回は、VBAPDFファイルを一括で印刷する方法を紹介しました。

参照設定を行うのが一般的かと思いますが、CreateObject関数でShellコマンドを使っても、まとめて印刷することができます。

PDFのファイルパスは一定のルールを作って名前を付けておくと簡単にデータベース化できるので便利です。

ファイルパスがあるかどうかはDir関数をつかうと調べることができます。

以下のようなコードでファイルネームの一覧を作ることができます。

F = Dir("フォルダーパス\" & "*")

Do While F <> ""

A = A + 1

Cells(A, 1).Value = “フォルダーパス\ & F

F = Dir()

Loop

koneka1208

koneka1208

自己紹介

自分の写真
エクセル好きの窓際会社員です。 エクセルの操作法や日々の会社で得た知見などを発信していきます。 よろしくお願いします。

ブログ アーカイブ

連絡フォーム

名前

メール *

メッセージ *

QooQ