いよいよ、連休最終日ですね。

先の投稿でメールに添付されたPDFファイルの印刷がありましたので

ちょっとだけ新しい事

PDFファイルの印刷について・・・

 

VBAは

・エクセルなどOffice製品

・IEやWindowsの操作が出来る

その他のソフトは操作できないと紹介しましたが

それぞれのソフトに準備されている

コマンドラインが実行できます。

方法

その1 SellExecute を使う。

仮にPDFのファイルをクリックすると関連付けされたソフト(AcrobatReaderなど)が起動します。

WindowsのAPIと機能を利用するわけです。

モジュールの最初に

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
                (ByVal hwnd As Long, ByVal lpszOp As String, _
                 ByVal lpszFile As String, ByVal lpszParams As String, _
                 ByVal LpszDir As String, ByVal FsShowCmd As Long) _
                 As Long     

と記述して使用します。

SellExecuteには引数があり、先の事例では

Sub マクロ名()

ShellExecute 0, "print", 起動したいファイルのパスとファイル名, 0, デフォルトフォルダ, 0

End Sub

これで、指定したPDFファイルを開いて印刷が実行されます。

引数についてはこちらを参考にしてください。

 

その2 WScript.Shell を使う

AcrobatReaderに準備されているコマンドラインを直接実行させます。

MyFile = "C:\Users\Owner\Downloads\サンプルPDF.pdf"
Set WSH = CreateObject("WScript.Shell")
WSH.Run "AcroRd32.exe  /h /p " & MyFile

と記述して使用します。

AcrobatReaderに準備されている引数についてはこちらを参考にしてください。

Runメソッドにもパラメータがあります。

 

PDFファイル限定では

Acrobat(有料)をインストールすれば

VBAとの連携が可能になり更に複雑な操作が出来ます。