« WScript.NetworkのSetDefaultPrinter()を使うべからず。(障害) | トップページ | ExcelのApplication.ActivePrinterは「仕様障害」? »

2007年1月16日 (火)

VBAからAdobe Reader 6.0でPDFファイルを印刷する。

Adobe Reader 7.0を使えば簡単ですが、どうしてもAdobe Reader 6.0なら。

Sub PdfPrint(File)
Dim PID

Const Path = "C:\Program Files\Adobe\Acrobat 6.0\Reader\AcroRd32.exe"
PID = Shell("""" & Path & """ /n /p /h """ & File & """")
Do
  AppActivateX PID
  If Err = 0 Then Exit Do
  Application.Wait Now + TimeSerial(0, 0, 1)
Loop
Do
  AppActivateX PID
  If Err Then Exit Do
  SendKeys "^q", True
  Application.Wait Now + TimeSerial(0, 0, 1)
Loop
End Sub

Sub AppActivateX(PID)
On Error Resume Next
AppActivate PID, False
End Sub

※On ErrorはVBAでもこんな風に使うとよいのでは?

« WScript.NetworkのSetDefaultPrinter()を使うべからず。(障害) | トップページ | ExcelのApplication.ActivePrinterは「仕様障害」? »