• 締切済み

PDFとエクセルシートの連続印刷について

PDFと、指定したエクセルシートの連続印刷について教えてください。 エクセルVBAを利用して、PDFとエクセルファイル(シート名指定あり)の混載するリストを参照し、 連続印刷する方法を教えてください。 添付した図のようなリストを作成し、 E:\test\111.pdf E:\test\222.pdf E:\test\222.pdf E:\test\Book1.xlsのSheet1 ・ ・ ・ と印刷させるには、どのように書けばよろしいでしょうか? A列に「判別」としたのは、PDFかエクセルかを見分けるのに必要かなと思って設けました。 リストはイメージなので、必要な情報などあれば作成しなおします。 あと、もし可能であれば、E列の印刷フラグが1であれば印刷、 0であれば印刷しないでスキップという機能が欲しいです。 ややこしくなるなら、この機能は我慢します。 全てのファイルをPDFにしてしまえば良いのですが、 それは理由があってできないのです。 VBA初心者で、エクセル2010を使用しています。 どなたかご存じでしたら、ぜひお教え下さい。 よろしくお願いします。

この投稿のマルチメディアは削除されているためご覧いただけません。

みんなの回答

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

Adobe Readerのコマンドライン指定で印刷する方法があるのですね。 その箇所だけ作成してみました。紙がもったいないのでDocuWorksでしか試験しておりません。 ご使用になるプリンターに合わせてアレンジして下さい。何も指定しなければWindowsの標準プリンターで印刷します。 当方Adobe Reader XIですが、/hを指定してもウィンドウが表示されてしまいます。 都度起動するのはいまいちですが、Adobe Reader 6の頃と異なり、我慢できるレベルと思います。 Excelのワークシートについては、自動記録をアレンジすれば出来ると思うのでご自分でお願いします。 Sub test() printPdf (GetDesktopPath & "\" & "test.pdf") End Sub Sub printPdf(pdfFullPath As String) Dim objWShell As Object Dim cmdLine As String Dim printerName As String Dim driverName As String printerName = Chr(34) & "DocuWorks Printer" & Chr(34) driverName = Chr(34) & "DocuWorks Printer Driver" & Chr(34) Set objWShell = CreateObject("WScript.Shell") cmdLine = "AcroRd32.exe /n /s /o /h /t " & pdfFullPath & " " & printerName & " " & driverName objWShell.Run cmdLine, VbNormalFocus, True Set objWShell = Nothing End Sub 'これは試験の便宜上 Private Function GetDesktopPath() As String Dim wScriptHost As Object, strInitDir As String Set wScriptHost = CreateObject("Wscript.Shell") GetDesktopPath = wScriptHost.SpecialFolders("Desktop") Set wScriptHost = Nothing End Function

参考URL:
http://pdf-file.nnn2.com/?p=222
yamayama456
質問者

お礼

mitarashi さま Adobe Readerのコマンドライン指定で印刷する方法だけでは、 セルを参照してという部分を自分で作成しきることができませんでした。 でも、ご回答ありがとうございます。