エクセルからAdobe社のアクロバットのPDFファイルを印刷したい場合があります。
最初はアクロバットリーダーをエクセルからコントロールする方法がわからなかったので、インターネットエクスプローラーをリレーオブジェクトとしてPDFを表示させ、
ExexWBメソッド(英語)を使って印刷ダイアログを表示させていました。
下記のコードを実行すると、印刷のダイアログがオープンします。
- Adobe社のアクロバットリーダーがインストールされている必要があります。
- VBEのツール-参照設定よりMicrosoft Internet Controlsを参照設定してください。
例
下記のコードを標準モジュールに置いてください。
|
Sub Print_PDF_Test1()
'Microsoft Internet Controlsへの参照設定が必要です。
'テスト用のパスです。ローカルのパスを指定してください。
Const cnsPDF_FILE As String = _
"http://www.puremis.net/excel/cellmasters.pdf"
Dim ObjIE As New InternetExplorer
ObjIE.Navigate cnsPDF_FILE
ObjIE.Visible = True
Do While ObjIE.Busy = True: DoEvents: Loop
'下記のコードはアクロバットの印刷ダイアログを表示します。
ObjIE.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DODEFAULT
End Sub
|
ただし、ユーザーにダイアログを見せる必要のない場合や、ページ数を指定して印刷を行いたい場合は、上記の方法ではダイアログが表示されたところでストップしてしまうので私の「自動的に必要な部数を印刷する」という希望には会いませんでした。
そこで、アドビ社のウェブサイトを調べてみると、正式にはサポートされていないが、Windows上からアクロバットリーダーを操作できるコマンドラインが存在することがわかりました。
以下は公開されているDeveloperFAQ.pdf(日本語版)に記載されている内容のです。
Windows 上のコマンドラインから Acrobat および Adobe Reader を使用するにはどうすればいいですか?
コマンドラインはサポートはされていませんが、一部の開発者には役立っています。これらのコマンドに関するマニュアルは存在しておらず、次の説明が唯一のものです。
コマンドラインからAcrobat および Adobe Reader を使用して、PDF ファイルを表示および印刷することができます。
AcroRd32.exe filename — Adobe Reader を実行して、ファイルを表示します。
コマンドラインのその他のオプションは、次のとおりです。
| オプション | 意味 |
| /n | Acrobat アプリケーションが現在開いていても、別のインスタンスを起動します。 |
| /s | スプラッシュ画面を表示せずに Acrobat を開きます。 |
| /o | ファイルを開くダイアログを表示せずに Acrobat を開きます。 |
| /h | Acrobat を非表示モードで開きます |
AcroRd32.exe /p filename — Adobe Reader を実行して、ファイルを印刷します。
AcroRd32.exe /t path printername drivername portname — Adobe Reader を起動し、Acrobat の印刷ダイアログボックスを表示せずにファイルを印刷したのち、Adobe Readerを終了します。
/t オプションの 4 つのパラメータは、path、printername、drivername、およびportname と解釈されます(すべて文字列)。
- path — パス
- printername — プリンタ名。
- drivername — プリンタドライバ名。プリンタのプロパティを表示したときに使用可能ドライバボックスに表示されるドライバ名です。
- portname — プリンタのポート名。portname の中に「/」文字を使用することはできません。この文字が含まれている場合は、そのプリンタのデフォルトのポートに出力されます。
Acrobat を使用する場合は、コマンドラインの AcroRd32.exe を Acrobat.exe に置き換えてください。
私はオプション
/tを試しましたが、自動的にプロセスは終了しないようです。
用紙の設定に関してはAcrobat Readerに任せることにしました。
プログラムを実行する前に、AcrobatのPrintダイアログで (1)
ページの拡大/縮小を
なしに設定し、(2)
PDFのサイズに合わせて用紙を選択にチェックをつけておきます。
これで、用紙サイズが自動的に選択されるようになります。
下記のサンプルプログラムはデフォルトプリンタでPDFファイルを3部印刷します。試してみてください。
ここではプリンタはMicrosoft Office2003に付属しているMicrosoft Office Document Image Writerを使用しています。
例
下記のコードを標準モジュールに置いてください。