2017年11月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
無料ブログはココログ

« スクリプトからExcel DDEとAdobe ReaderでPDFファイルを印刷する。 | トップページ | VB.NETで、RunningObjectTable(ROT)の表示名を列挙する、コマンドを作る。 »

2007年11月27日 (火)

Excel VBAからDDE経由、Adobe ReaderでPDFファイルを印刷する。

普通のやり方は、Shell()でアプリを起動して、DDEの[AppExit]で終了させます。
しかし、これだと多重処理で誤爆の可能性があります。
なので、オブジェクト生成でアプリを起動して、参照の解放で終了させます。
これなら、誤爆の心配がありません。

Sub PdfPrint(ParamArray Files() As Variant)
Dim fso As Object
Dim PDF As Object
Dim File As Variant
Dim ChannelNumber As Long

Set fso = CreateObject("Scripting.FileSystemObject")
Set PDF = CreateObject("AcroExch.Document")
ChannelNumber = Application.DDEInitiate("Acroview", "Control")
For Each File In Files
  File = fso.GetFile(File).Path
  Application.DDEExecute ChannelNumber, "[FilePrintSilent(""" & File & """)]"
Next
Application.DDETerminate ChannelNumber
End Sub

« スクリプトからExcel DDEとAdobe ReaderでPDFファイルを印刷する。 | トップページ | VB.NETで、RunningObjectTable(ROT)の表示名を列挙する、コマンドを作る。 »