説明
PDFファイルを画面表示せずに、印刷ドライバー名と印刷ポート名を指定して全頁印刷します。
印刷が開始されるまで次の命令は実行されません。
印刷時は印刷範囲に収まるようにサイズ変更されて印刷されます。
Canon BJ S600プリンターのプロパティ画面
- 印刷ドライバー名 :”Canon BJ S600″
- 印刷ポート名 :USB001 ※USBケーブルでパソコンとプリンターは接続されている
形式
[FilePrintTo(char* fullPath, char* printName,
char* driverName, char* portName)]
引数
注意:第3引数の印刷ドライバー名「driverName」は要らないくても印刷出来る!
fullPath [char*] |
印刷するPDFファイルのフルパス 注意:パス中に空白があるときは注意する。 |
printName [char*] |
プリンター名 注意:パス中に空白があるときは注意する。 |
driverName [char*] |
印刷ドライバー名 注意:ドライバー名の途中に空白文字がある時はダブル引用符で囲む。 この引数は不要なのか? |
portName [char*] |
印刷ポート名 |
戻り値
true | 印刷に成功しました。 |
false | fullPathによって指定されたPDFドキュメントが開かれてない。 又は失敗しました。 |
注)ExcelのVBAではDDE命令の発信ステートメント上で、戻り値を取得出来ません。
サンプル:ExcelのVBA
PDFドキュメントを表示せずに、印刷ドライバー名と印刷ポート名を指定して全頁印刷します。
- Excel VBA開発環境をF8キーでステップ実行して動作確認します。
Sub DDE_FilePrintTo()
Dim lChanNo As Long ‘DDEチャンネル番号
Const CON_PDF_PATH = “””E:¥TEST-01.pdf”””
‘Acrobatアプリケーション起動。どちらもテストOK。
Shell “C:¥Program Files¥Adobe¥Reader 9.0¥Reader¥AcroRd32.exe”
‘Shell “C:¥Program Files¥Adobe¥Acrobat 8.0¥Acrobat¥Acrobat.exe”
‘DDEチャンネルのオープン
lChanNo = DDEInitiate(“Acroview”, “Control”)
‘PDFファイルとプリンタードライバー、ポート、を指定して印刷
DDEExecute lChanNo, “[FilePrintTo(“ & CON_PDF_PATH & _
“,””Canon BJ S600″”,””Canon BJ S600″”,USB001)]”
‘注:以下の形式でも印刷出来る。なぜ?
‘DDEExecute lChanNo, “[FilePrintTo(“ & CON_PDF_PATH & _
“,””Canon BJ S600″”,USB001)]”
‘PDFを全て閉じ、Acrobatアプリケーション終了
DDEExecute lChanNo, “[AppExit()]” ‘Acrobatプロセスも消える
‘DDEチャネルを閉る
DDETerminate lChanNo
End Sub
補足
- プリンターがパラレルケーブル接続の場合は、”USB001″ではなく、”LPT1″などになります。
注意事項
- 第3引数「ドライバー名」は要らないみたいです。
- 印刷ドライバー名に空白文字が入っている時はダブル引用符で囲まないと認識しません。
動作確認環境
- WindowsXP + SP3 + WindowsUpdate
- Adobe Acrobat Pro 8.1.4 + Office Pro 2003
- Adobe Reader 9.1.0 + Office Pro 2003
Adobe社の解説ページ : 英語
以下がAdobe社のAcrobat DDEの解説ページです。表示には時間がかかります。
http://livedocs.adobe.com/acrobat_sdk/9/Acrobat9_HTMLHelp/IAC_API_DDE_Messages.104.30.html
< TOPへ >
指定のPDFを印刷してから次のPDFを開いて印字するのに
失敗する事が多々あります。
これはAcrobatの初期処理と終了処理に時間が必要な為です。
Core-i5 M2410M メモリ4GB Win7 32Bit
この環境で6秒~7秒必要です。
まぁこれはAcrobatの開始から終了までの時間ですね。
Acrobatは印字開始から終了まで立ち上げっぱなしの方がいいです。