こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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を使用しています。
どなたかご存じでしたら、ぜひお教え下さい。
よろしくお願いします。

マルチメディアファイルは削除されたか見つかりません。

投稿日時 - 2013-11-12 17:28:33

QNo.8344582

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.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

投稿日時 - 2013-11-13 00:01:31

お礼

mitarashi さま

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

投稿日時 - 2013-11-13 11:38:54

あなたにオススメの質問