« スクリプトから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)の表示名を列挙する、コマンドを作る。 »